Application Failure
curl http://web-service-ip:node-port
Application 에 접속할 수 없는 경우 아래와 같은 사항들을 진단해볼 수 있다.
Check Service Status
kubectl describe service web-service
먼저 위 명령어를 통해 Selector 와 Endpoints 부분을 확인하여 Service 가 Pod 을 잘 찾아냈는지 진단한 후 만약 이슈가 있다면 Pod 의 metadata.labels.name 과 spec.containers.ports.containerPort 를 확인해 고쳐주도록 하자.
Check Pod
kubectl get pod
kubectl describe pod web
kubectl logs web -f --previous
Pod 의 재시작 상태와 log 들을 확인하여 문제를 찾아보자.
Check Dependent Service & Pod
위까지 문제가 없다면 종속성 있는 Service 와 Pod 를 위와 같은 방법으로 진단해보자.
Control Plane Failure
kubectl get nodes
kubectl get pods
kubectl get pods -n kube-system
먼저 K8s Cluster 의 Node 와 Pod 들의 상태를 확인한 후, Control Plane Pod 들이 정상적으로 작동하는지 확인한다.
service kube-apiserver status
service kube-controller-manager status
service kube-scheduler status
service kubelet status
service kube-proxy status
만약 kubeadm 으로 구축하지 않아 service 형태로 실행중인 경우 위와 같은 명령어로 상태를 확인할 수 있다.
kubectl logs kube-apiserver-master -n kube-system
sudo journalctl -u kube-apiserver
이후 각 Component 들의 Log 를 확인해보자.
/etc/kubernetes/manifests/
kubeadm 을 사용해 Cluster 를 구축한 경우 위 경로에서 조치가 필요한 Component 를 수정해주자.
Worker Node Failure
kubectl get nodes
kubectl describe node worker-1
위 명령어들로 Node 의 상태를 확인한 뒤,
top
df -h
CPU 와 메모리 사용량을 확인하고,
service kubelet status
sudo journalctl -u kubelet
kubelet 의 상태를 확인하고,
service kubelet start
kubelet 을 재시작하거나,
cat /etc/kubernetes/kubelet.conf
kubelet 설정을 확인해보자.
openssl x509 -in /var/lib/kubelet/worker-1.crt -text
CA 의 Issuer, Validity, Subject 등을 확인해보자.
Network Troubleshooting
Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "c117e7be807116764889d820a073a0054630776881ddb92dfc46c2cbd174ce4e": plugin type="weave-net" name="weave" failed (add): unable to allocate IP address: Post "http://127.0.0.1:6784/ip/c117e7be807116764889d820a073a0054630776881ddb92dfc46c2cbd174ce4e": dial tcp 127.0.0.1:6784: connect: connection refused
CNI Plugin 이 설치되어있지 않은 경우 위와 같은 에러를 확인할 수 있다.
curl -L https://github.com/weaveworks/weave/releases/download/latest_release/weave-daemonset-k8s-1.11.yaml | kubectl apply -f
설치해주자.