1.Zabbix入门
[toc]
Zabbix概述什么是监控监控系统是整个运维环节,乃至整个产品生命周期中最重要的一环,事前及时预警发现故障,事后提供翔实的数据用于追查定位问题。
为什么使用监控
生活中:
超市监控:防内外偷
交通监控:测速,违章
企业中:
系统的监控:实际上是对系统不间断的实时监控
实时反馈系统当前状态:我们监控某个硬件、或者某个系统,都是需要能实时看到当前系统的状态,是正常、异常、或者故障。
保证服务可靠性安全性:我们监控的目的就是要保证系统、服务、业务正常运行
保证业务持续稳定运行:如果我们的监控做得很完善,即使出现故障,能第一时间接收到故障报警,在第一时间处理解决,从而保证业务持续性的稳定运行。(往往,第一时间知道业务宕机的都是用户)
监控怎么来实现?
1.CACTI(网络监控)
...
3.PromeQL查询语句
[toc]
Prometheus的PromeQL查询语句通过CPU简单认识PQL(PromeQL)1234node_cpu_seconds_total{job="dong tai fa xian",instance="10.0.0.11:9100"}## 查看动态发现的所有机器,CPU第一颗核心的空闲使用率?node_cpu_seconds_total{job="dong tai fa xian",cpu="0",mode="idle"}
12## 查看除了10.0.0.11意外的实例node_cpu_seconds_total{instance!="10.0.0.11:9100"}
12## 查看cpu 以i开头的监控项node_cpu_seconds_total{mode=~"i.*"}
12## 查看cpu 除以i开头的监控项node_cpu_seco ...
2.Prometheus监控K8s
[toc]
Prometheus简介prometheus概述Prometheus是一个开源系统监控和警报工具包,最初是在SoundCloud上构建的
自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区
Prometheus现在是一个独立的开源项目,独立于任何公司进行维护,为了强调这一点,并澄清项目的治理结构
Prometheus于2016年加入云原生计算基金会,作为继Kubernetes之后的第二个托管项目
我们可以简单的理解Prometheus是一个监控系统同时也是一个时间序列数据库
推荐阅读: 官网地址: https://prometheus.io 官方文档: https://prometheus.io/docs/introduction/overview/ GitHub地址: https://github.com/prometheus
prometheus架构
如上图所示,展示了普罗米修斯(prometheus)的建筑和它的一些生态系统组成部分
Prometheus s ...
1.Prometheus监控容器
[toc]
使用普罗米修斯监控容器
cAdvisor
数据收集器,类似于:zabbix-agent
收集容器的数据
监控容器
node_exporter
数据收集器,类似于:zabbix-agent
收集宿主机的数据
监控物理机
prometheus
监控工具 ,类似:zabbix-server
grafana
出图工具,类似于:zabbix、elasticsearch中的绘图
可以关联zabbix、elasticsearch、kinnba、Prometheus等软件进行绘图
将收集到数据绘图展示(更专业)
部署普罗米修斯集群环境准备
主机名
内网IP
外网IP
角色
应用
docker01
172.16.1.81
10.0.0.81
监控物理机和容器状态、监控工具、出图
prometheus、cAdvisor、node_exporter、grafana
docker02
172.16.1.82
10.0.0.82
监控物理机和容器状态
cAdvisor、node_exporter
docker03
172.16.1.83
10.0.0.83
监控物 ...
9.Kubernetes资源:ConfigMap
[toc]
配置存储ConfigMap概述
为什么要用configMap?
1231.将配置文件和POD解耦2.可以修改配置文件 /etc/nginx/nginx.conf /etc/php-fpm.d/www.conf3.可以增加配置文件 /etc/nginx/conf.d/www.chenlin.com.conf
ConfigMap如何存储配置文件?
12341.键值对存储 key:value2.文件存储 文件名:配置文件内容
ConfigMap支持的配置类型?
121.直接定义key:value键值对2.基于文件创建键值对
ConfigMap创建方式
121. 命令行创建2. 资源清单创建
如何将ConfigMap存储到POD中
121.通过变量传递2.通过数据卷挂载
使用configMap的限制条件
121.ConfigMap必须在Pod之前创建,Pod才能引用他2.ConfigMap受限于命名空间限制,只有处于同一个命名空间中的Pod才可以被引用
命令行创建ConfigMap创建示例1234567891011121314151617181920212223242526272 ...
8.kubernetes存储介绍
[toc]
kubernetes存储概述简介容器内部的的存储在生命周期是短暂的,会随着容器环境的销毁而销毁,具有不稳定性。在k8s里将对容器应用所需的存储资源抽象为存储卷(Volume)概念来解决这些问题。k8s目前支持的Volume类型包括k8s的内部资源对象类型,开源共享存储类型和公有云存储等。
k8s存储分类
k8s特定的资源对象:
123ConfigMap # 应用配置Secret # 加密数据ServiceAccountToken # token数据
k8s本地存储类型:
emptyDir
简介
临时存储,宿主机上会有有一个临时目录,如果POD结束,目录删除
使用场景
初始化容器,想要修改主容器内的数据,那么需要在一个POD中,共享初始化容器和主容器的目录
hostPath
简介
永久存储,指定宿主机目录,会存储主容器的数据
使用场景
MySQL数据目录,gitlab配置文件目录、数据目录、日志目录,jenkins数据目录…
保证数据的持久化,存储主容器内的数据目录
持久化存储(PV)和网络 ...
7.kubernetes示例:wordpress部署实例
[toc]
需求MySQL需求
名称空间:
blog
镜像
mysql:5.7
环境变量
root密码:123
数据库:wp
用户:wp_user
参数:字符集
数据持久化
映射到宿主机的/data/mysql/data
wordpress需求
镜像:
官方
数据库地址
cluster ip
数据库名称
wp
用户
www
wordpress数量
单独起2pod
mysql数量
单独起1个pod
使用资源
ns
Controller
pod
initContainer
存活探针
就绪探针
clusterIP
ingress
交付方案规划1234567891011121314151617181920# 镜像wordpress:latestmysql:5.7# wordpress资源清单- namespace- deployment- clusterip- ingress# mysql资源清单- namespace- deployment- clusterip# MySQL账户- root密码:123- 数据库:wp- 用户:wp_user ...
6.Kubernetes核心资源:Service网络资源
[toc]
Service网络服务资源分类
NodePort:
宿主机节点的端口
ClusterIP:
用来动态发现和负载均衡POD的IP,通过 Label(标签) 绑定POD
PodIP:
提供POD使用的IP
ClusterIP资源12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849# 编写ClusterIP资源清单vim clusterip.yamlapiVersion: v1kind: Servicemetadata: name: apache-clusterspec: selector: run: php-apache ## POD的标签 ports: - name: php port: 8080 ## clusterIP 端口 protocol: TCP targetPort: 80 ## POD的端口 type: ClusterIP# 应用资源清单kubectl apply -f clusterip ...
5.Kubernetes核心资源:Controller控制器
[toc]
Controller控制器的概述Controller控制器作用
pod类型的资源,删除pod后,不会重建
替用户监视并保证相应的节点上始终有用户所期望的副本数量的pod在运行
如果所运行的pod副本数超过了用户期望的,那么控制器就会删掉,直到和用户期望的一致
如果所运行的pod副本数低于用户期望的,那么控制器就会创建,直到和用户期望的一致
Controller控制器类型
不常用
RC:Replication Controller
控制Pod起多个副本
StatefulSet
有状态的应用,为Pod提供唯一标识,它可以保证部署和scale的顺序
重点且常用
RS:ReplicaSet
控制Pod起多个副本,服务挂了自动启动,始终保持相应数量副本
Deployment:
Deployment通过控制RS来保证POD始终保持相应的数量副本 // deployment不能直接控制POD,而是控制RS控制器
支持滚动更新,回滚,回滚默认保留10个版本 // 支持版本更新
提供声明式配置,支持动态修改 // 支持动态修改
管理无状态应用最理想的控制器
node ...
4.Kubernetes核心资源:label标签和namespace名称空间.md
[toc]
K8S的名称空间”namespace”选项1-n # 指定名称空间
命令语法
查看名称空间
1234kubectl get namespacekubectl get ns## No resources found in default namespace. default名称空间中没有找到pod## k8s默认操作的名称空间,就是"default"名称空间
查看名称空间的详细信息
1kubectl describe namespace
创建名称空间
1234567891011121314# 创建名称空间kubectl create namespace hclnamespace/hcl created## 查看"namespace"资源kubectl get nsNAME STATUS AGEdefault Active 3d8hhcl Active 1skube-flannel Active 3d7hkube-node-lease ...