Skip to main content

第 14 章:尋找錯誤與錯誤排查

查看系統 event 事件

kubectl describe pod $PODNAME
kubectl events

查看系統日誌

kubectl logs $PODNAME -c #CONTAINERNAME

查看 kubernetes 服務日誌

systemctl status kube-controller-manager -l
journalctl -u kube-controller-manager

Application Failure

apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
replicas: 1
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-world
image: gcr.io/google-samples/hello-app:1.o
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: hello-world
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: helloworld

Troubleshooting Control Plane

  • Server online
  • Network reachability
  • systemd
  • container runtime
  • kubelet
  • static pod manifest

static pod config: /var/lib/kubelet/config.yaml staticPodPath

control plane

# check kube-system pods
kubectl get pods --namespaces kube-system

# user container runtime
crictl --runtime-endpoint unix:///run/containerd/containerd.sock ps

# check static pod configuration
sudo more /var/lib/kubelet/config.yaml

sudo ls -l /etc/kubernetes/manifest

Workloads

check resource , describe, get, event, logs.

Troubleshooting Nodes

  • Server online
  • Network reachability
  • systemd
  • container runtime
  • kubelet
  • kube-proxy

kubelet

# get status
systemctl status kubelet.service --no-pager

# start on system boot
systemctl enable kubelet.service

# start kubelet
systemctl start kubelet.service

# journallog
sudo journalctl -u kubelet.service --no-pager

# systemd service unit cfg
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf

# kubelet config
/var/lib/kubelet/config.yaml