K8s常见问题排查技巧原创
简介
排查完全陌生的问题、完全不熟悉的系统组件,对于后端开发工程师来说是乐趣,当然也是挑战。今天借这篇文章,跟大家分析一例这样的问题。排查过程中,需要理解一些自己完全陌生的组件,比如 systemd 和 dbus。但是排查问题的思路和方法基本上还是可以复用了,希望对大家有所帮助。
# 主节点相关操作
更改配置文件,重新加载
systemctl daemon-reload
启动master相关组件
systemctl start kube-apiserver/kube-controller-manager/ube-scheduler/etcd.service
停止master相关组件
systemctl stop kube-apiserver/kube-controller-manager/ube-scheduler/etcd.service
重启master相关组件
systemctl restart kube-apiserver/kube-controller-manager/ube-scheduler/etcd.service
查看master相关组件状态
systemctl status kube-apiserver/kube-controller-manager/ube-scheduler/etcd.service
查看各组件信息
kubectl get componentstatuses
查看kubelet进程启动参数
ps -ef | grep kubelet
查看日志:
journalctl -u kubelet -f
查看集群信息
kubectl cluster-info
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 从节点相关操作
启动worker端相关组件
systemctl start kube-proxy/docker/kubelet
停止worker端相关组件
systemctl stop kube-proxy/docker/kubelet
重启worker端相关组件
systemctl restart kube-proxy/docker/kubelet
查看worker端相关组件状态
systemctl status kube-proxy/docker/kubelet
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 节点相关操作
设为node为不可调度状态:
kubectl cordon node1
解除node不可调度状态
kubectl uncordon node1
将pod赶到其他节点:
kubectl drain node1
master运行pod
kubectl taint nodes master.k8s node-role.kubernetes.io/master-
master不运行pod
kubectl taint nodes master.k8s node-role.kubernetes.io/master=:NoSchedule
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
编辑 (opens new window)
上次更新: 2024/09/07, 21:54:32