自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嘻哈王大头

花有重开日,人无再少年

  • 博客(197)
  • 问答 (2)
  • 收藏
  • 关注

原创 Ceph存储搭建及在k8s中的使用

一、基础环境准备主机IP主机名部署服务备注192.168.0.91admin-nodeceph、ceph-deploy、monmon节点又称为master节点192.168.0.92ceph01cephosd192.168.0.93ceph02cephosdCeph版本 10.2.11 Ceph-deploy版本 7.6.1810 内核版本 3.10.0-957.el7.x86_64每个节点关闭防火墙和selinux[root@admin-

2020-10-20 11:11:09 1968

转载 Ceph工作原理详解

一、Ceph概述这里简单的说一下相关的组件,只是简单介绍组件概念Monitor一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据OSDOSD负责相应客户端请求返回具体数据的进程,一个Ceph集群一般都有很多个OSDMSDMSD 全称Cepg Metadata Service,是CephFs服务依赖的元数据服务ObjectCeph最底层的存储单位是Object对象,每个Object包含元数据和原始数据P

2020-10-20 11:06:23 7622

原创 Prometheus Operator监控k8s集群

之前的文章中,使用传统方式安装了prometheus来监控node、mysql、redis等。这样配置非常麻烦,成本非常高。如果还要考虑Prometheus、AlertManager这些组件服务本身的高可用的话,成本就更高了。当然了,我们完全可以用自定义的方式来实现这些需求,我们也知道Prometheus在代码上就已经对Kubernetes有了原生的支持,可以通过服务发现的形式来自动监控集群,因此我们可以使用另外一种更加高级的方式来部署Prometheus:Operator框架。一、什么是Operator

2020-10-19 15:56:24 7628 1

原创 限制容器中的jvm

在rancher中部署完java应用之后,需要对java程序的jvm进行设置,这个非常重要,不然可能会引起比较严重的后果:容器无限制的重启或者主机的内存被耗尽。在开始之前,先来看一个问题:在容器中跑了一个java应用,那怎么来限制这个jvm的memory呢?按照传统的思路对memory进行限制:首先java应用的jvm内存限制可以通过-Xmx进行限制,容器的内存限制也是可以设置的,特别是对于kubernetes的容器,可以通过resource request/limit来设置一个memory可以使用

2020-10-19 14:29:50 2144

原创 Jenkins系列文章

不知不觉,关于Jenkins学习的文章已经写了20篇了,为了方便查找,这里做一个目录索引。1,持续集成与Jenkins介绍2,Jenkins初始部署3,Jenkins忘记密码解决方法4,Jenkins各类插件介绍5,Jenkins项目构建前的插件安装6,Jenkins系统管理介绍7,Jenkins构建一个java项目8,Jenkins主目录介绍9,Jenkins配置项目构建后的钉钉通知10,Jenkins在控制台输出中显示构建时间11,了解前端的打包工具12,npm的具体打包过程

2020-08-03 20:40:47 455

原创 Jenkins多选框+调用api实现job的批量发布

一、发布瓶颈在jenkins的使用中,一般都会为每一个应用服务都创建一个独立的Job。在日常各个环境(测试、预发、生产)升级发布的过程中,比较传统的做法是在Jenkins中对每一个要发布的应用都依次点击Build。如果模块比较少,那这种方法没啥毛病。但是我这边一共有30多个微服务模块,这时候如果还是用这种点击每一个模块去构建发布的方法,显然是一种不够效率的做法。二、改进思路注意!!!我觉得这里有必要先说一下前提:我这里测试、预发、生产这些环境使用的是固定的分支,就是Build的时候不需要再选择分支了

2020-08-03 19:33:05 1934 9

原创 Mysql连接池使用加密密码

作为一个运维,应该对密码特别的敏感。对于java代码中连接数据库的密码(尤其是在生产环境中),我们一般在配置文件中所写的密码都是通过加密后的密码,而不是直接写上明文密码。Druid为此提供一种数据库密码加密的手段ConfigFilter。可以直接参考官方文档一、生成加密密码1、下载druid包首先下载druid的jar包,github中的下载地址为https://github.com/alibaba/druid/releases,我这边下载的版本为druid-1.1.23.jar。2、生成加密密码

2020-08-01 17:31:45 838

原创 清理Harbor仓库

一、原因由于开发和测试环境的发布比较频繁,Harbor仓库在使用一段时间之后,就存储了大量的镜像,占用了比较大的磁盘空间。所以需要通过删除那些时间比较久远的镜像来释放服务器的磁盘空间。二、处理方法注:我这边的Harbor版本是v1.10.0。这里需要了解的一点是直接通过Harbor的UI界面是不会自动删除存储中的文件和镜像的。正确的做法是:在Harbor的UI界面中删除镜像。这是一种软删除。软删除之后,Harbor中不再管理该镜像的存储库,但是存储库的文件仍然保留在Harbor的存储中。运行垃

2020-08-01 15:18:33 1847

原创 Maven打包时强制检查SNAPSHOT依赖包的更新

由于开发人员自己封装的工具类jar包会经常的deploy到私服上以提供给其他的项目使用,在开发和测试阶段用的是SNAPSHOT快照版本,而且持续集成很频繁。在这种情况下,就需要用到maven打包时的-U参数,这个参数能强制让Maven检查所有SNAPSHOT依赖更新,确保集成基于最新的状态。如果没有该参数,Maven默认以天为单位检查更新,对于我们持续集成的频率来说,这显然是不够的。所以,结合之前说的跳过单元测试,对于运维人员来说,在用命令进行maven打包的时候,可以把命令写成这样:mvn clea

2020-08-01 14:36:48 2969 1

原创 Prometheus监控Redis

Prometheus也可以用redis_exporter来监控Redis。项目地址为:https://github.com/oliver006/redis_exporter一、环境服务器IP系统组件192.168.0.181CentOS7.6Prometheus Server 2.18.1192.168.0.184CentOS7.6redis_exporter-1.6.1二、安装node_exporter在安装redis的主机上,安装上node_export

2020-06-29 09:58:34 4465

原创 Prometheus监控MySQL

Prometheus也可以用mysqld_exporter来监控MySQL。一、环境服务器IP系统组件192.168.0.181CentOS7.6Prometheus Server 2.18.1192.168.0.183CentOS7.6mysqld_exporter-0.12.1下载地址为:https://prometheus.io/download/,我这里下载的都是最新版本的。二、安装node_exporter在安装mysql的主机上,安装上node_

2020-06-29 09:54:29 6291 1

原创 通过Alertmanager实现Prometheus的告警

Prometheus本身不支持的告警功能,主要通过插件Alertmanager来实现告警。Alertmanager用于接收Prometheus发送的告警信息并对告警进行一系列的处理后发送给指定的用户或组。Prometheus触发一条告警的过程如下:prometheus server —>触发法制—>超出指定时间—>alertmanager—>分组|抑制|静默—>媒体类型—>邮件|钉钉|微信等等。一、安装配置Alertmanager下载解压$ wget http

2020-06-29 09:49:51 2094

原创 Prometheus的函数和计算公式

Prometheus强大的地方就在于可以它可以使用的很多计算公式去获取自己需要的数据。这里所涉及到的计算公式,也是我们普遍认为的难点所在。在Zabbix中想要获取CPU使用率是一件非常简单的事情,但是在Prometheus中却需要通过计算公式来完成CPU使用率的计算。如果要统计CPU的使用:node_exporter会抓取CPU常用你的8种状态的累计工作时间,然后再用(所有非空闲状态的CPU时间总和)/(所有状态的CPU时间总和)= CPU使用率。而如果想要获取中间某一分钟的CPU使用时间还需要用到Cou

2020-06-29 09:40:53 22568

原创 使用Grafana做Prometheus的数据可视化

Prometheus UI提供了快速验证PromQL以及临时可视化支持的能力,而在大多数场景下引入监控系统通常还需要构建可以长期使用的监控数据可视化面板(Dashboard)。这时用户可以考虑使用第三方的可视化工具如Grafana,Grafana是一个开源的可视化平台,并且提供了对Prometheus的完整支持。一、安装GrafanaGrafana的rpm包的下载地址为 :https://grafana.com/grafana/download,可以选择不同的平台的不同版本进行下载。我这里选择linux

2020-06-29 09:36:37 1498 1

原创 Prometheus安装部署和node_exporter的使用

一、环境服务器IP系统组件192.168.0.181CentOS7.6Prometheus Server 2.18.1192.168.0.182CentOS7.6node_exporter 1.0.0下载地址为:https://prometheus.io/download/,我这里下载的都是最新版本的。二、安装Prometheus Server以下操作在192.168.0.181上执行1、下载安装包$ cd /usr/local/src/$ wget h

2020-06-29 09:24:31 2961

原创 Prometheus介绍

说起监控,第一时间会想到的就是zabbix,确实,zabbix在监控界有着不可撼动的地位,功能非常强大。但是对于容器的监控,却显得有点力不从心了。为了解决监控容器的问题,我们需要用到Prometheus。一、什么是prometheusPrometheus是最初在SoundCloud上构建的开源监控和报警工具包。自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常火雨的开发人员和用户社区。现在,它是一个独立的开源项目。目前已经被云计算本地基金会(Cloud Native Co

2020-06-29 09:19:35 562

原创 Jenkins+sonar实现代码扫描

一、Sonar的作用Sonar是一个用于代码质量检查的开源工具,采用B/S架构,帮助检查代码缺陷,改善代码质量,提高开发速度。可以从七个维度检查代码质量:复杂度分布(complexity):代码复杂度过高将难以理解;重复代码(duplications):程序汇总包含大量复制、粘贴的代码导致代码臃肿,sonar可以展示源码中重复严重的地方;单元测试统计(unit tests):统计并展示单元测试覆盖率,开发或者测试可以清楚测试代码的覆盖情况;代码规则检查(coding rules):通过Findb

2020-06-17 15:22:48 3478 1

原创 PostgreSQL-12安装和简单操作

一、安装1、yum安装# 添加yum源$ yum -y install https://download.postgresql.org/pub/repos/yum/12/redhat/rhel-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装PostgreSQL$ yum -y install postgresql12 postgresql12-server postgresql12-contrib# 检查版本信息$ psql --version

2020-06-16 09:28:00 7143

原创 进程数限制导致的线上问题

先来了解下Linux系统的最大线程数限制的参数有哪些:/proc/sys/kernel/threads-max:内核所能使用的线程的最大数目,由物理内存决定,32G内存的默认值为255928。/proc/sys/vm/max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量,默认值为65530。ulimit -u:单个用户允许的最大进程或线程上限,默认root用户不限制,其他用户为4096。/proc/sys/kernel/pid_max:操作系统线程数限制。为

2020-05-30 13:50:21 904

原创 Kubernetes系列文章

不知不觉,关于k8s学习的文章已经写了30多篇了,为了方便查找,这里做一个目录索引。1、k8s基础知识学习笔记1,k8s入门-k8s整体架构介绍2,k8s入门-kubectl命令补全3,k8s入门-Pod的基本管理4,k8s入门-Replication Controller控制器5,k8s入门-Replica Sets控制器6,k8s入门-Deployment控制器7,k8s入门-DaemonSet控制器8,k8s入门-使用Service管理Pod访问9,k8s入门-Label10

2020-05-27 15:52:49 587

原创 k8s入门-Job和CronJob

Kubernetes集群提供了Job和CronJob两种资源对象Job负责处理任务,即仅执行一次的任务,它保障批处理任务的一个或多个Pod成功结束CronJob就是在Job是哪个加上了时间调度。一、Job演示这里使用job资源对象创建一个任务,用于倒计时:[root@k8s-01 ~]# cat job.yaml apiVersion: batch/v1kind: Jobmetadata: name: job-demospec: template: metadata:

2020-05-26 15:35:42 680

原创 k8s入门-Namespace

一、简介Namespace(命名空间)是Kubernetes系统中另一个非常重要的概念,Namespace在很多情况下用于实现多租户的资源隔离。Namespace通过将集群内部的资源对象"分配"到不同的Namespace中,形成逻辑上分组的不同项目、小组、或者用户组,便于不同的分组在共享整个集群的资源的同时还能被分别管理。Kubernetes集群启动之后,会创建一个名为**“default”**的Namespace。[root@k8s-01 ~]# kubectl get namespaces NA

2020-05-26 15:30:56 1458

原创 k8s入门-Label

一、Label介绍一个Label是一个key=value的键值对,其中key与value由用户自己指定。Label可以附加到各种资源上,例如Node Pod Service RC等。 一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去,Label通常在资源对象定义时确认,也可以在对象创建后动态添加或者删除。可以通过给指定的资源对象捆绑一个或多个不同的Label来实现多维度的资源分组管理功能,以便于灵活、方便地进行资源分配、调度、配置、部署等管理工作。举例:当

2020-05-26 15:27:41 941

原创 k8s入门-使用Service管理Pod访问

我们通过Deployment可以为一个应用创建多个Pod,而且可以动态的进行增加、或者删除多余的Pod,Kubernetes Pod 是有生命周期的,它们可以被创建,也可以被销毁,但是每次Pod的IP地址就会发生变化,外面如何访问到该Pod呢?总不能每次Pod重启就修改访问的IP地址吧。 每个 Pod 都会获取它自己的 IP 地址,但是每次即使这些 IP 地址不总是稳定可依赖的。 这会导致一个问题:在 Kubernetes 集群中,如果一组 Pod(称为 backend)为其它 Pod (称为 fronte

2020-05-26 15:22:06 3291 1

原创 k8s入门-DaemonSet控制器

DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 使用 DaemonSet 的一些典型用法:运行集群存储 daemon,例如在每个 Node 上运行 glusterd、ceph。在每个 Node 上运行日志收集 daemon,例如filebeat、logstash。在每个 Node 上运行监控 daem

2020-05-26 15:13:32 3699

原创 k8s入门-Deployment控制器

Deployment 为 Pod 和 ReplicaSet(下一代 Replication Controller)提供声明式更新,有了Deployment之后我们就不再单独的使用RC和RS了。 您只需要在 Deployment 中描述您想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和 ReplicaSet 的实际状态改变到您的目标状态。 Deployment集成了上线部署、滚动升级、创建副本、暂停上线任务,恢复上线任务,回滚到以前某一版本(成功/稳定)的Deploym

2020-05-26 15:10:34 549

原创 k8s入门-Replica Sets控制器

ReplicaSet是下一代Replication Controller。 现在,ReplicaSet和Replication Controller之间的唯一区别是selector支持。 ReplicaSet支持标签用户指南中描述的新的基于集合的选择器要求,而Replication Controller仅支持基于等级的选择器要求。在开始之前,删除之前创建的RC[root@k8s-01 ~]# kubectl delete rc nginx-rc replicationcontroller "nginx

2020-05-26 15:05:16 570 1

原创 k8s入门-Replication Controller控制器

一、Replication Controller控制器在实际的生产环境中,我们其实很少单独创建Pod,而是通过控制器来进行Pod的管理,Kubernetes提供了很多的控制器,一个 Controllers 可以创建和管理很多个 Pod, 也提供复制、初始化,以及提供集群范围的自我恢复的功能。比如说: 如果一个节点宕机,Controller 将调度一个在其他节点上完全相同的 pod 来自动取代当前的 pod。ReplicationController 确保在任何时间上运行 pod 的 “replicas”

2020-05-26 15:00:36 1615

原创 k8s入门-Pod的基本管理

Pod是Kubernetes最小的管理单元,一个Pod可以代表一个运行在集群中的进程。一、创建一个nginx的Pod使用YAML格式来描述一个Pod[root@k8s-01 ~]# cat nginx-pod.yaml apiVersion: v1kind: Podmetadata: name: nginx-pod labels: app: nginxspec: containers: - name: nginx image: nginx ports:

2020-05-26 14:55:05 337

原创 k8s入门-kubectl命令补全

在管理k8s集群时,kubectl是我们最常使用的命令,这里记录下实现kubectl的命令补全功能,来提高使用kubectl命令时的效率。# 安装bash-completion:yum -y install bash-completionsource /usr/share/bash-completion/bash_completion# 加入到环境变量中:source <(kubectl completion bash)echo "source <(kubectl completi

2020-05-26 14:52:07 406

原创 k8s入门-k8s整体架构介绍

Kubernetes被设计为Master和Node两个角色,Master为控制节点,Node为计算节点或者叫工作节点。一、Master节点介绍Kubernetes Master是Kubernetes Cluster的大脑,Master上运行的节点主要有5个组件:Kube-apiserverkube-schedulerkube-controller-manageretcdPod网络(例如flannel)1、API Server(kube-apiserver)API

2020-05-26 14:45:00 1465

原创 一键部署k8s-1.16.6高可用集群

一、脚本由来在参考了https://github.com/opsnull/follow-me-install-kubernetes-cluster手动部署完k8s-1.16.6高可用集群之后,就想着是否要自己试着写一下部署脚本,毕竟安装的步骤那么多,如果能有一个自动化的部署脚本,那以后部署的时候真的是轻松和快速多了。在犹豫之际,在"二丫讲梵"的博客中就看到了这篇k8s-1.10.4一键部署脚本的文章。细品之后,就更加坚定了自己写k8s-1.16.6一键部署脚本的信念。在此,再次感谢两位大佬所做的分享,

2020-05-09 14:06:42 2718 2

原创 手动搭建k8s-1.16.6高可用集群之部署集群插件-EFK插件

注意:如果没有特殊指明,本文档的所有操作均在 k8s-01 节点上执行。kuberntes 自带插件的 manifests yaml 文件使用 gcr.io 的 docker registry,国内被墙。原先的做法是可以从微软中国提供的 gcr.io 免费代理下载被墙的镜像。但是发现貌似从2020年4月份开始就用不了了,网上也是有很多的网友反映,暂时未能找到可以替代的镜像仓库地址。我的办法...

2020-04-30 10:49:59 463

原创 手动搭建k8s-1.16.6高可用集群之部署集群插件-kube-prometheus插件

kube-prometheus 是一整套监控解决方案,它使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件:The Prometheus OperatorHighly available PrometheusHighly available AlertmanagerPrometheus node-exporterPrometheus Adapter for ...

2020-04-30 10:41:41 978

原创 手动搭建k8s-1.16.6高可用集群之部署集群插件-dashboard插件

如果没有特殊指明,本文档的所有操作均在 k8s-01 节点上执行;一、 下载和修改配置文件$ cd /opt/k8s/work$ wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc4/aio/deploy/recommended.yaml$ mv recommended.yaml dashboard...

2020-04-30 10:36:07 475

原创 手动搭建k8s-1.16.6高可用集群之部署集群插件-coredns插件

如果没有特殊指明,本文档的所有操作均在 k8s-01 节点上执行;一、下载和配置 corednscd /opt/k8s/workgit clone https://github.com/coredns/deployment.gitmv deployment coredns-deployment二、 创建 corednscd /opt/k8s/work/coredns-deployme...

2020-04-30 10:28:48 570

原创 手动搭建k8s-1.16.6高可用集群之验证集群功能

本文档验证 K8S 集群是否工作正常。注意:如果没有特殊指明,本文档的所有操作均在 k8s-01 节点上执行,然后远程分发文件和执行命令。一、检查节点状态$ kubectl get nodesNAME STATUS ROLES AGE VERSIONk8s-01 Ready <none> 4h45m v1.16.6k8s-02 ...

2020-04-30 10:18:03 417 2

原创 手动搭建k8s-1.16.6高可用集群之部署worker节点-部署kube-proxy组件

kube-proxy 运行在所有 worker 节点上,它监听 apiserver 中 service 和 endpoint 的变化情况,创建路由规则以提供服务 IP 和负载均衡功能。本文档讲解部署 ipvs 模式的 kube-proxy 过程。注意:如果没有特殊指明,本文档的所有操作均在 k8s-01 节点上执行,然后远程分发文件和执行命令。下载和分发在部署master节点时已经做过,依赖...

2020-04-30 10:12:21 590

原创 手动搭建k8s-1.16.6高可用集群之部署worker节点-部署kubelet组件

kubelet 运行在每个 worker 节点上,接收 kube-apiserver 发送的请求,管理 Pod 容器,执行交互式命令,如 exec、run、logs 等。kubelet 启动时自动向 kube-apiserver 注册节点信息,内置的 cadvisor 统计和监控节点的资源使用情况。为确保安全,部署时关闭了 kubelet 的非安全 http 端口,对请求进行认证和授权,拒绝未...

2020-04-30 09:58:01 1677

原创 手动搭建k8s-1.16.6高可用集群之部署worker节点-部署docker组件

docker 运行和管理容器,kubelet 通过 Container Runtime Interface (CRI) 与它进行交互。注意:如果没有特殊指明,本文档的所有操作均在 k8s-01上执行,然后远程分发文件和执行命令;需要先安装 flannel;一、下载和分发docker二进制文件cd /opt/k8s/workwget https://download.dock...

2020-04-30 09:51:40 644

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除