Kubernetes问题合集


简介

正文

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。

结束