简介
正文
1. 替换容器entrypoint执行命令
说明:
在生产上处理问题时,经常需要对异常容器进行排查,而往往异常容器会自动重启而无法进入容器,所以这里主要是用kubernetes方式替换容器entrypoint内容从而打断POD的重启。
处理:
修改相应资源对象的内容,如POD对象:
apiVersion: v1
kind: Pod
metadata:
name: command-demo
labels:
purpose: demonstrate-command
spec:
containers:
- name: command-demo-container
image: debian
command: ["/bin/sh"]
args: ["-c", "while true; do echo hello; sleep 10;done"]
restartPolicy: OnFailure
2. Endpoint一会消失一会出现的问题
说明:
在使用K8s集群时遇到的问题:发现某个service的后端endpoint一会显示有后端,一会显示没有。显示没有后端,意味着后端的address被判定为notready。
处理:
kubelet在准备上报信息时,需要收集容器、镜像等的信息。虽然kubelet默认是10秒上报一次,但是实际的上报周期约为20~50秒。而kube-controller-manager判断node上报心跳超时的时间为40秒。所以会有一定概率超时。一旦超时,kube-controller会将该node上的所有pod的conditions中type是Ready的字典中的status置为False。 较为简单的方案是在kube-controller上配置这个超时时间node-monitor-grace-period长一些。建议配置为60 ~ 120s。