Kubernetes 集群以及應用排錯的一般方法,主要包括
你可以使用 藉助 OpenAI 來幫你自動排查集群中的問題並通過自然語言的方式與集群進行交互。
在排錯過程中,kubectl
是最重要的工具,通常也是定位錯誤的起點。這裏也列出一些常用的命令,在後續的各種排錯過程中都會經常用到。
查看 Pod 狀態以及運行節點
kubectl get pods -o wide
kubectl -n kube-system get pods -o wide
查看 Pod 事件
kubectl describe pod <pod-name>
查看 Node 狀態
kubectl get nodes
kubectl describe node <node-name>
kube-apiserver 日誌
PODNAME=$(kubectl -n kube-system get pod -l component=kube-apiserver -o jsonpath='{.items[0].metadata.name}')
kubectl -n kube-system logs $PODNAME --tail 100
以上命令操作假設控制平面以 Kubernetes 靜態 Pod 的形式來運行。如果 kube-apiserver 是用 systemd 管理的,則需要登錄到 master 節點上,然後使用 journalctl -u kube-apiserver 查看其日誌。
kube-controller-manager 日誌
PODNAME=$(kubectl -n kube-system get pod -l component=kube-controller-manager -o jsonpath='{.items[0].metadata.name}')
kubectl -n kube-system logs $PODNAME --tail 100
以上命令操作假設控制平面以 Kubernetes 靜態 Pod 的形式來運行。如果 kube-controller-manager 是用 systemd 管理的,則需要登錄到 master 節點上,然後使用 journalctl -u kube-controller-manager 查看其日誌。
kube-scheduler 日誌
PODNAME=$(kubectl -n kube-system get pod -l component=kube-scheduler -o jsonpath='{.items[0].metadata.name}')
kubectl -n kube-system logs $PODNAME --tail 100
以上命令操作假設控制平面以 Kubernetes 靜態 Pod 的形式來運行。如果 kube-scheduler 是用 systemd 管理的,則需要登錄到 master 節點上,然後使用 journalctl -u kube-scheduler 查看其日誌。
kube-dns 日誌
kube-dns 通常以 Addon 的方式部署,每個 Pod 包含三個容器,最關鍵的是 kubedns 容器的日誌:
PODNAME=$(kubectl -n kube-system get pod -l k8s-app=kube-dns -o jsonpath='{.items[0].metadata.name}')
kubectl -n kube-system logs $PODNAME -c kubedns
Kubelet 日誌
curl -LO https://github.com/kvaps/kubectl-node-shell/raw/master/kubectl-node_shell
chmod +x ./kubectl-node_shell
sudo mv ./kubectl-node_shell /usr/local/bin/kubectl-node_shell
kubectl node-shell <node>
journalctl -l -u kubelet
Kube-proxy 日誌
Kube-proxy 通常以 DaemonSet 的方式部署,可以直接用 kubectl 查詢其日誌
$ kubectl -n kube-system get pod -l component=kube-proxy
NAME READY STATUS RESTARTS AGE
kube-proxy-42zpn 1/1 Running 0 1d
kube-proxy-7gd4p 1/1 Running 0 3d
kube-proxy-87dbs 1/1 Running 0 4d
$ kubectl -n kube-system logs kube-proxy-42zpn
參考文檔