kube-prometheus+thanos 多集群prometheus方案存储方案
多kubernetes集群中,Prometheus 负责将监控数据写入 Thanos 存储网关,而 Thanos 查询网关则允许从 Thanos 存储网关中读取和查询数据。这种集成允许 Prometheus 在持久化存储和跨集群查询方面获得扩展性和弹性。
kube-prometheus原名为prometheus-operator,可参考之前的Prometheus-Operator监控k8s
官方githubhttps://github.com/prometheus-operator/kube-prometheus.git
整体部署
123git clone <https://github.com/prometheus-operator/kube-prometheus.git>cd kube-prometheus/manifests
执行crd创建,因crd内容比较多,使用apply会提示long错误,此处使用create进行创建
1kubectl create -f setup/
创建kube-prometheus组件所有服务
1kubectl apply -f .
...
wait-injection服务依赖等待注入
在kubernetes集群中,服务之间存在依赖关系,wait-injection利用initcontainer功能快速便捷的为服务添加相应的依赖关系
项目地址https://github.com/huisebug/wait-injection.git
部署配置12kubectl apply -f cert-manager.yamlkubectl apply -f wait-injection.yaml
为需要进行注入的服务所在命名空间打上label
1kubectl label namespace 业务namespace wait-pod-admission-webhook-injection=enabled
利用kubernetes pod注入对运行的服务进行注入容器,注入多个init容器需要在以下进行注解pod.spec.template.metadata.annotations
tcpsocket.waiting.huisebug.org/dep数字: ip:端口号或者域名:端口号tcpsocket使用telnet对依赖服务和端口进行telnet
httpget.wait ...
kube-deploymentimage:k8simage-operator改良版本
为kubernetes集群中,由deployment方式进行部署的服务提供image版本回滚功能
需求场景
当master节点上存放的yaml无法在使用kubect set image时进行同步更新
官方提供的—record参数仅可能在kubectl set image时使用,回滚还需要额外的回滚操作命令,没有统一的UI界面
服务描述
提供展示部署后所有命名空间下的Deployment的容器镜像信息
提供回滚到对应版本的按钮update
提供本地存储的yaml文件预览(鼠标滑动到对应的yaml路径即可)
清理不需要的镜像版本信息delete(假删除,数据库中还有记录)
修复k8simage-operator中Create,Update event多次触发Reconcile方法
增加对容器列表增加和减少场景的处理
部署配置需要准备一个mysql5.7的数据库服务,需提前建立好数据库,项目数据库名为:kube-deploymentimage,可使用下面sql进行创建即可。
1CREATE DATABASE IF NOT EXISTS `kube-de ...
logfile-operator:服务日志系统收集多方案
为kubernetes集群中部署服务提供多日志收集服务,快速接入多种部署方案的日志系统
需求场景
当pod中有多个容器时,需要对pod中的容器进行日志收集
研发人员需要快速对服务进行日志收集后在kibana中集中查看
功能描述
利用kubernetes pod注入对运行的服务进行注入容器,注入的容器和原容器在pod annotations配置的日志文件所在目录进行卷挂载,注解中配置的日志文件进行卷挂载,例如:1234 template: metadata: annotations: logfile.huisebug.org/log1: /var/log/nginx/*.log
提供六种日志收集部署方案
filebeat+elasticsearch+kibana
filebeat+elasticsearch-cluster+kibana
filebeat+logstash+elasticsearch+kibana
filebeat+logstash+elasticsearch-cluster+kibana
...
k8s版本回滚工具k8simage-operator
为kubernetes集群部署提供版本回滚功能
需求场景
当master节点上存放的yaml无法在使用kubect set image时进行同步更新
官方提供的—record参数仅可能在kubectl set image时使用,回滚还需要额外的回滚操作命令,没有统一的UI界面
功能描述
提供展示部署后所有命名空间下的Deployment的容器镜像信息
提供回滚到对应版本的按钮update
提供本地存储的yaml文件预览(鼠标滑动到对应的yaml路径即可)
清理不需要的镜像版本信息delete(假删除,数据库中还有记录)
UI效果预览
部署要求K8simage-operator默认会统计集群中所有的Deployment,yamlfile文件在部署k8simage-operator容器时,此处默认挂载了/etc/kubernetes目录到容器中的/etc/kubernetes,使用nodeselector默认调度到master1,即存放yaml的机器。
想展示yaml的本地文件内容,需要在deployment中添加 annotations信息,例如: ...
greenplum集群操作指令及解决方法
gp集群如何部署就不过多介绍,主要是结合一下工作中要用到的指令和遇到的一些坑
操作规范gp集群的所有操作都是由master节点进行的,由master机器ssh到其他节点上进行自动化操作
安装部署gp集群时已经给master角色机器和standby角色机器添加了gpadmin用户.bashrc脚本
12345echo """source /usr/local/greenplum-db/greenplum_path.shexport MASTER_DATA_DIRECTORY=/data/master/gpseg-1""" >> /home/gpadmin/.bashrc
必须在gpadmin用户下进行,登录master机器后需要切换到gpadmin用户下
su – gpadmin
下面的所有操作都是在gpadmin用户下的操作
常用命令恢复mirror segment (primary复制到mirror)
12gprecoverseg -qo ./recovgprecoverseg -i ./recov
恢复到 ...
kata容器的一些分享
容器运行时kata的一些知识分享
kata运行时的地位kata-runtime的地位等同于runc运行时,所以可以替换containerd使用的运行时,在k8s中通过调用containerd,containerd使用kata达到使用。
docker使用kata是声明默认的运行时,以达到containerd替换默认运行时为kata
kata的一些功能无法实现使用kata会无法使用docker network的自动发现功能。
但是IP地址是可以通信的
kata最新版最新版
Release 2.1.0
kata在VMware 个人桌面的一些问题解决错误:ERROR: System is not capable of running Kata Containers
解决方法:
VMware虚拟机设置,处理器–》虚拟化引擎
勾选 虚拟化Intel VT-x/EPT
错误:ERRO[0000] kernel property not found arch=amd64 description=”Host Supportfor Linux VM Sockets” name=vhost_vsoc ...
Prometheus-Operator告警场景
利用Prometheus-Operator来监控k8s集群并进行告警
prometheus-operator告警场景环境准备准备环境k8s1.12+以上,k8s的部署就不过多介绍,有kube-admin,也有二进制部署,当然也可以参考我的k8s集群部署
基本上环境准备好了就如我的集群如下
各组件已经成功安装。
安装Prometheus-OperatorPrometheus-Operator原理介绍:参考我的Prometheus-Operator监控k8s
此处演示的Prometheus-Operator场景的安装yaml,下载地址:https://github.com/huisebug/Prometheus-Operator-Rules.git
manifests目录介绍1kubectl apply -f manifests/
多次执行上面的初始化安装确保prometheus-operator可用
注:上面的yaml是官方4月份发布的版本,经过多次测试可以适用于多个集群,其中修改了一些镜像地址为国内可快速拉取的地址和移除了prometheus-adapter的部署。
new目录 ...
Kubernetes集群搭建
这是一个k8s集群,从零开始搭建服务器环境,keepalived+haproxy实现集群高可用VIP;glusterfs搭建实现可持续存储;k8s1.12版本集群;efk日志系统;prometheus-operator告警系统;HPA v2横向pod扩容;k8s1.11+以上的版本部署基本没什么区别,无非就是优化了一些参数的配置和增加一些功能,舍弃一些api,此文档适用后续发布的其他版本的部署,提供一些部署思路。
硬件环境准备
服务器三台centos7.6
每台服务器两块硬盘,一块作为服务器硬盘,一块作为glusterFS硬盘
关闭firewalld防火墙和selinux
IP地址:192.168.137.10—12/24;主机名api、node1、node2.huisebug.com
使用阿里云yum源
下面的操作是之前使用k8s1.12.4搭建的,其中的参数同样适用于k8s.12.*,因为hpa的原因替换为了k8s1.11.8。
k8s版本1.11.8(2019年3月1号发布);
hpa在如下版本会会存在hpa无法获取内存的使用情况的bug, ...
Jenkins持续集成到Kubernetes集群
这是一个k8s集群结合jenkins做持续集成,以及jenkins流水线在k8s集群中运行。java编译后、nodejs编译后docker镜像制作。
准备环境K8s集群1.15.10
Docker-ce 19.03
nfs卷
服务器信息
1234192.168.137.100:k8s-master/k8s-node192.168.137.101:k8s-master/k8s-node192.168.137.102:k8s-master/k8s-node192.168.137.5:nfs服务、docker私有镜像仓库
nfs服务部署nfsinstall.sh
123456#!/bin/bashdocker run -d --restart=always --name nfs_server --privileged -p 2049:2049 \-v /data/nfs:/nfsroot \-h nfsserver \-e SHARED_DIRECTORY=/nfsroot \huisebug/nfs-server:latest
执行脚本即可在服务器上部署一个nfs服务
doc ...