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 , 那么更新过程就不会停止) 。
相关经验推荐
- 删除|苹果要求App必须内置删除账号功能!6月30日是最后期限,网友:必须支持
- 微信|微信被好友单向删除?三种方法教你检测,最后一种最实用!
- 华为|微信“+”号隐藏功能,摁一下,就可以快速知道谁把你删除了
- 删除|人教Pad定价超四千元,由学校统一采购,官网删除价格,配置停留在七年前
- 删除|别再清理手机垃圾了,只需删除这4个文件夹,手机用多久都不会卡
- iPod|iPod 彻底被结束,页面也被悉数删除丨iPhone14 Max 被曝延迟生产
- 删除|红米K50大幅度降价,登顶销量榜首!卢伟冰这招绝了
- 微信|微信这个地方不删除,陌生人就能随意登录你微信,手把手教您删除
- 删除|3060高刷游戏本该选谁?这三款包你满意
- 删除|绿厂618购机活动有多狠?最高直降1500,数十款产品给足惊喜