10-k8s中pod的探针

一、探针的概念

一般时候,探针的设置,都是为了优化业务时,需要做的事情;属于后期工作;

1,探针的分类

1,健康状态检查探针:livenessProbe

当我们设置了这个探针之后,检查不通过,pod容器就会重启,周期性检查服务是否存在;

  • 检查若失败,将"重启容器",本质上就是删除原来的容器,重新创建;

  • 若不设置健康检查探针,默认就是成功的,检查成功;

2,可用性检查探针:readinessProbe

当我们设置这个探针之后,检查不通过,pod容器不会重启,周期性检查服务是否可用,从而判断容器是否准备就绪;

  • 若检查服务不可用,就是检查失败,则会将pod从service的endppints列表中移除;

  • 若检查可用,则会将pod重新添加会secvice的endppints列表中;

  • 若不设置这个探针,则默认是检查成功状态;

3,启动探针:startupProbe

从k8s的1.16版本之后才新加的功能,1.16版本之前没有这个探针;

  • 如果设置了这个探针,则其他所有探针都会被禁用,指导这个探针检查成功为止;

  • 如果检查失败,kubelet会杀死容器,而容器依照我们的重启策略进行重启;

  • 如果没有设置这个探针,默认是成功状态;

2,探针使用的检查方法

1,命令检查:exec

就是执行一段命令,根据返回的结果判断是否成功,返回0或者非0(类似shell中echo $?)

2,http请求检查:httpGet

根据返回的状态码,判断是否正常;

3,端口检查:tcpSocket

测试某个TCP端口是否能够链接,类似于telnet,nc等网络工具;

4,grpc:(了解即可)

二、livenessProbe健康检查探针

1,exec方式

root@k8s231 pod# cat 12-probe.yaml

apiVersion: v1

kind: Pod

metadata:

name: mylinux-livenessprobe

spec:

containers:

  • name: c1

image: nginx:1.20.1-alpine

#声明健康检查探针livenessProbe

livenessProbe:

#使用exec方式做检查;

exec:

#自定义检查命令

command:

  • cat

  • /etc/hosts

#检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;

failureThreshold: 3

#容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1

initialDelaySeconds: 15

#探针检测频率,多久检测一次,默认10(秒),最小值1(秒)

periodSeconds: 1

#检查成功几次算【存活】,默认1,最小值1

successThreshold: 1

#一次检查超时时间,默认1(秒),最小值1(秒)

timeoutSeconds: 1

2,httpGet检查方式

root@k8s231 pod# cat 12-probe.yaml

apiVersion: v1

kind: Pod

metadata:

name: mylinux-livenessprobe

spec:

containers:

  • name: c1

image: nginx:1.20.1-alpine

#声明健康检查探针livenessProbe

livenessProbe:

#使用httpGet方式做检查;

httpGet:

#检查那个端口,通过哪个端口访问页面?

port: 80

#指定探测的页面路径

path: /usr/share/nginx/html/index.html

#检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;

failureThreshold: 3

#容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1

initialDelaySeconds: 15

#探针检测频率,多久检测一次,默认10(秒),最小值1(秒)

periodSeconds: 1

#检查成功几次算【存活】,默认1,最小值1

successThreshold: 1

#一次检查超时时间,默认1(秒),最小值1(秒)

timeoutSeconds: 1

3,tcpSocket检测方式

root@k8s231 pod# cat 12-probe.yaml

apiVersion: v1

kind: Pod

metadata:

name: mylinux-livenessprobe

spec:

containers:

  • name: c1

image: nginx:1.20.1-alpine

#声明健康检查探针livenessProbe

livenessProbe:

#使用tcpSocket方式做检查;

tcpSocket:

#检查哪一个端口

port: 80

#检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;

failureThreshold: 3

#容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1

initialDelaySeconds: 15

#探针检测频率,多久检测一次,默认10(秒),最小值1(秒)

periodSeconds: 1

#检查成功几次算【存活】,默认1,最小值1

successThreshold: 1

#一次检查超时时间,默认1(秒),最小值1(秒)

timeoutSeconds: 1

三、readinessProbe可用性检查

root@k8s231 pod# cat 12-probe.yaml

apiVersion: v1

kind: Pod

metadata:

name: mylinux-livenessprobe

spec:

containers:

  • name: c1

image: nginx:1.20.1-alpine

#声明健康检查探针readinessProbe

readinessProbe:

#使用tcpSocket方式做检查;

tcpSocket:

#检查哪一个端口

port: 80

#检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;

failureThreshold: 3

#容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1

initialDelaySeconds: 15

#探针检测频率,多久检测一次,默认10(秒),最小值1(秒)

periodSeconds: 1

#检查成功几次算【存活】,默认1,最小值1

successThreshold: 1

#一次检查超时时间,默认1(秒),最小值1(秒)

timeoutSeconds: 1

四、startupProbe启动检查

root@k8s231 pod# cat 12-probe.yaml

apiVersion: v1

kind: Pod

metadata:

name: mylinux-livenessprobe

spec:

containers:

  • name: c1

image: nginx:1.20.1-alpine

#声明启动探针startupProbe

startupProbe:

#使用tcpSocket方式做检查;

tcpSocket:

#检查哪一个端口

port: 80

#检查失败几次算【不存活】,默认值是3,最小值是1,检查成功后,值会重置重1开始数;

failureThreshold: 3

#容器启动后多久开始进行健康检查,即此时间段内,检测到服务失败并不计数;默认1,最小值1

initialDelaySeconds: 15

#探针检测频率,多久检测一次,默认10(秒),最小值1(秒)

periodSeconds: 1

#检查成功几次算【存活】,默认1,最小值1

successThreshold: 1

#一次检查超时时间,默认1(秒),最小值1(秒)

timeoutSeconds: 1

五、三个探针一起使用

root@k8s231 pod# cat 12-probe.yaml

apiVersion: v1

kind: Pod

metadata:

name: mylinux-livenessprobe

spec:

containers:

  • name: c1

image: nginx:1.20.1-alpine

#声明启动探针startupProbe

startupProbe:

tcpSocket:

port: 80

failureThreshold: 3

initialDelaySeconds: 15

periodSeconds: 1

successThreshold: 1

timeoutSeconds: 1

#声明启动探针livenessProbe

livenessProbe:

tcpSocket:

port: 80

failureThreshold: 3

initialDelaySeconds: 15

periodSeconds: 1

successThreshold: 1

timeoutSeconds: 1

#声明启动探针readinessProbe

readinessProbe:

tcpSocket:

port: 80

failureThreshold: 3

initialDelaySeconds: 15

periodSeconds: 1

successThreshold: 1

timeoutSeconds: 1

相关推荐
张忠琳1 小时前
【kubernetes v1.21】(一)Kubernetes 总览架构深度分析
云原生·架构·kubernetes
香气袭人知骤暖1 小时前
PG数据库 Docker 容器自动备份方案
数据库·docker·容器
maomao大哥闯天下2 小时前
K8s对象deployment、job、service应用详解
java·容器·kubernetes
IT策士2 小时前
第 20 篇 搭建 Kubernetes 实验环境:Minikube 与 kubectl
云原生·容器·kubernetes
JackSparrow4143 小时前
使用Ansible批量管理+更新产品环境服务器配置
运维·服务器·ci/cd·kubernetes·自动化·ansible·sre
ai产品老杨3 小时前
基于 Docker 容器化与异构计算的智能安防架构:解耦 GB28181/RTSP 协议与多芯片适配,源码交付如何助力集成商节省 95% 开发成本?
docker·容器·架构
Plastic garden3 小时前
Docker(2)网络模式
运维·docker·容器
Elastic 中国社区官方博客4 小时前
Kibana 仪表板即代码:在 Elastic 9.4 中用于 Kibana 仪表板的 GitOps、漂移检测与 Terraform
大数据·人工智能·elasticsearch·搜索引擎·云原生·kibana·terraform
小哈里5 小时前
【K8S】云原生时代的GitOps最佳实践 —— ArgoCD
云原生·kubernetes·云计算·argocd·基础设施
张忠琳5 小时前
【kubernetes v1.21】(kube-apiserver 1)kube-apiserver 核心架构与启动流程超深度分析
云原生·架构·kubernetes