常见问题解决方案
Pod一直卡在删除: 有状态的应用还需要查看pvc和按需删除它
kubectl delete pod <pod-name> --grace-period=0 --force -n default
kubectl get pvc -n default
- 重启导致的旧容器名称被占用, 新的容器无法创建 问题:
Warning Failed 94s (x234 over 51m) kubelet Error: failed to reserve container name "kube-scheduler_kube-scheduler-node1_kube-system_c046c291e5f4561bf2d2760e13fdcdf9_79": name "kube-scheduler_kube-scheduler-node1_kube-system_c046c291e5f4561bf2d2760e13fdcdf9_79" is reserved for "a319e8c6d6eebb66763349b38ed0d2174282057029ff92654566a75b4f39a922"
解决方案:
假设kube-apiserver|kube-controller-manager\|kube-scheduler三者出现了问题
如果是containerd:
# 使用 crictl(containerd)
crictl ps -a | grep "kube-apiserver\|kube-controller-manager\|kube-scheduler"
输出:
WARN[0000] Config "/etc/crictl.yaml" does not exist, trying next: "/usr/bin/crictl.yaml"
WARN[0000] runtime connect using default endpoints: [unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
WARN[0000] Image connect using default endpoints: [unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
92589dc840e82 265c2dedf28ab Less than a second ago Exited kube-apiserver 71 ff24403d619ae kube-apiserver-node1 kube-system
56cbe9fb239ea 2933761aa7ada Less than a second ago Exited kube-controller-manager 83 7980bcf37529e kube-controller-manager-node1 kube-system
bdca18c42ffd6 ddb38cac617cb Less than a second ago Exited kube-scheduler 78 bed8c7ea53654 kube-scheduler-node1
删除对应的容器id即可:
# 使用 crictl
crictl rm 92589dc840e82
输出:
WARN[0000] Config "/etc/crictl.yaml" does not exist, trying next: "/usr/bin/crictl.yaml"
WARN[0000] runtime connect using default endpoints: [unix:///run/containerd/containerd.sock unix:///run/crio/crio.sock unix:///var/run/cri-dockerd.sock]. As the default settings are now deprecated, you should set the endpoint instead.
92589dc840e82