Application Failure


curl http://web-service-ip:node-port

Application 에 접속할 수 없는 경우 아래와 같은 사항들을 진단해볼 수 있다.

Check Service Status

kubectl describe service web-service

먼저 위 명령어를 통해 SelectorEndpoints 부분을 확인하여 Service 가 Pod 을 잘 찾아냈는지 진단한 후 만약 이슈가 있다면 Pod 의 metadata.labels.namespec.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

설치해주자.

References