这篇文章主要介绍“k8s怎么应用监控探针”,在日常操作中,相信很多人在k8s怎么应用监控探针问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”k8s怎么应用监控探针”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
应用监控
在pod之上 添加一个探针, kubelet通过探针去检查应用
pod状态转换
pod的启动流程?
-
schduler环节 先绑定节点
-
kubelet接管
-
监测pod是否健康
-
准备CNI CSI CRI
-
启动pod中的container
-
启动探针
-
存活探针
-
就绪探针
容器式运行的应用类似于“黑盒”,默认不会配置探针时 所以kublet只会监视pod的存活状态(但是无法检查是否处于正常的服务 对于pod不处理请求的情况无法检查 不能执行一些高级的检查)
为了便于k8s对其进行监测,云原生应用应该输出用于监视自身的API
-
包括健康状态、指标、分布式跟踪和日志等
-
最基本要提供用于健康状态监测的API
Pod支持的监测类型(健康探针)
-
startup Probe 启动探针,用来检查应用是否已经启动成功,适合那些有大量初始化工作要做,启动很慢的应用
-
liveness Probe 存活探针,用来检查应用是否正常运行,是否存在死锁、死循环
-
readiness Probe 就绪探针,用来检查应用是否可以接收流量,是否能够对外提供服务。
监测机制
-
Exec Action:执行一个 Linux 命令看状态码,根据指定命令的结果状态码判定,
-
TcpSocket Action:使用TCP协议尝试连接容器的指定端口,根据相应TCP套接字连接建立状态判定
-
HTTPGet Action:连接端口并发送 HTTP GET 请求, 根据指定https/http服务URL的响应结果判定
配置参数
initialDelaySeconds
periodSeconds: 执行探测动作的时间间隔,默认是 10 秒探测一次。
timeoutSeconds: 探测动作的超时时间,如果超时就认为探测失败,默认是 1 秒。successThreshold: 连续几次探测成功才认为是正常,对于 startupProbe 和 livenessProbe 来说它只能是 1。
failureThreshold: 连续探测失败几次才认为是真正发生了异常,默认是 3 次。
示例
同时定义了三种探针
-
startup使用Exec Action
-
liveness和readiness使用HTTPGet Action
测试效果
-
liveness
-
URL "/livez" 支持以POST方法为livez参数设定不同值,非OK值都以5xx响应码响应;
-
readiness
-
URL "/readyz" 支持以POST方法为readyz参数设定不同值,非OK值都以5xx响应码响应;
image pull policy 镜像管理策略
Always 无论本地是否有相关的镜像 总是要到registry上下载 – 缺点 浪费带宽 – 好处 避免本地污染
if not present 本地不存在相关的image是 才去registry上下载 – 好处 运行快 – 缺点 可能被污染 never 从不下载
特殊情况 image 的tag是latest
apiVersion: v1 kind: Pod metadata: name: pod-probe-demo namespace: default spec: containers: - name: demo image: ikubernetes/demoapp:v1.0 imagePullPolicy: IfNotPresent startupProbe: exec: command: ['/bin/sh','-c','test','"$(curl -s 127.0.0.1/livez)"=="OK"'] initialDelaySeconds: 0 failureThreshold: 3 periodSeconds: 2 livenessProbe: httpGet: path: '/livez' port: 80 scheme: HTTP initialDelaySeconds: 3 timeoutSeconds: 2 readinessProbe: httpGet: path: '/readyz' port: 80 scheme: HTTP initialDelaySeconds: 15 timeoutSeconds: 2 restartPolicy: Always
到此,关于“k8s怎么应用监控探针”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注云搜网网站,小编会继续努力为大家带来更多实用的文章!