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 , 那么更新过程就不会停止) 。
- 删除|拼多多商品转化率低有什么影响?多少正常?
- 删除|曾经的苹果iPhone高攀不起,现在对比国产机,反成性价比?
- 删除|国产手机,靠前缀装饰而来的冠军,能否捍卫尊严?
- 删除|Excel工作表之行、列、单元格(一)
- 删除|一体机渐成趋势,宏碁联想两款酷睿12机型降价,最低3999元
- 删除|100%的中国制造,这一大国重器不输光刻机,掌握主要工业消耗品
- 删除|6 件在你的电脑上占用太多空间的东西
- 删除|5G+亮相,iPhone14系列另一项重大提升曝光,事关你的亮码速度!
- 删除|小米这App炸了,百万米粉在线求救
- 删除|卡里两毛钱被赋红码后,网友发问:阿里马云和银行究竟谁风险更大
