port: 8080 #监听端口是8080
initialDelaySeconds: 3 #容器运行3秒后开始探测
periodSeconds: 3 #探测频率为3秒
上述配置文件中 , 探测方式为项容器发送HTTP GET请求 , 请求的是8080端口下的healthz文件 , 返回任何大于或等于200且小于400的状态码表示成功 。 任何其他代码表示异常 。
3)tcpSocket: 通过容器的IP和Port执行TCP检查 , 如果能够建立TCP连接 , 则表明容器健康 , 这种方式与HTTPget的探测机制有些类似 , tcpsocket健康检查适用于TCP业务 。
tcpSocket探测方式的yaml文件语法如下:
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
ports:
- containerPort: 8080
#这里两种探测机制都用上了 , 都是为了和容器的8080端口建立TCP连接
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
在上述的yaml配置文件中 , 两类探针都使用了 , 在容器启动5秒后 , kubelet将发送第一个readinessProbe探针 , 这将连接容器的8080端口 , 如果探测成功 , 则该pod为健康 , 十秒后 , kubelet将进行第二次连接 。
除了readinessProbe探针外 , 在容器启动15秒后 , kubelet将发送第一个livenessProbe探针 , 仍然尝试连接容器的8080端口 , 如果连接失败 , 则重启容器 。
探针探测的结果无外乎以下三者之一:
- Success:Container通过了检查;
- Failure:Container没有通过检查;
- Unknown:没有执行检查 , 因此不采取任何措施(通常是我们没有定义探针检测 , 默认为成功) 。
5、 如何控制滚动更新过程?答:可以通过下面的命令查看到更新时可以控制的参数:
https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
[root@master yaml
# kubectl explain deploy.spec.strategy.rollingUpdate
maxSurge: 此参数控制滚动更新过程 , 副本总数超过预期pod数量的上限 。 可以是百分比 , 也可以是具体的值 。 默认为1 。
(上述参数的作用就是在更新过程中 , 值若为3 , 那么不管三七二一 , 先运行三个pod , 用于替换旧的pod , 以此类推)
maxUnavailable: 此参数控制滚动更新过程中 , 不可用的Pod的数量 。
(这个值和上面的值没有任何关系 , 举个例子:我有十个pod , 但是在更新的过程中 , 我允许这十个pod中最多有三个不可用 , 那么就将这个参数的值设置为3 , 在更新的过程中 , 只要不可用的pod数量小于或等于3 , 那么更新过程就不会停止) 。
- 微信这个功能容易被骗子绑定和利用,教你快速查清并删除
- 删除|Apple watch苹果手表如何更换电池?看完你是不是也学会了呢?
- 删除|被好友悄悄删除?微信右上角这个功能很方便,“黑名单”一清二楚
- 删除|微信朋友圈烦人的内容不想看?教你三招,快速删除!方法很简单
- 小鹏汽车回应盗用图片宣传:素材是供应商提供的,已删除
- 手机浏览“不良网站”,删除历史记录就有用吗?过来人给出答案
- 删除|台积电迎来3个“噩耗”,还能逆转局势吗?
- 软件|Win11要变流氓系统?新版本预装超多软件,还好删除很简单
- 微信被好友单向删除?三种方法教你检测,最后一种最实用!
- 微信“+”号隐藏功能,摁一下,就可以快速知道谁把你删除了