Certified Kubernetes Administrator (CKA) with Practice Tests (강의 링크, 레퍼런스 노트)
- 평소 강의 할인도 많이 하고, 연습문제도 풀어볼 수 있으니 실제 강의 수강을 추천
- 아래는 강의 내용 번역 및 정리본 (문제 시 댓글로 알려주세요)
어플리케이션 고장
- 클러스터가 어떻게 구성되었는지 아는 것이 중요
- e.g. DB Pod -> DB Service -> Web Pod -> Web Service -> User
- 웹서버 접근 가능한지 확인
curl http://web-service-ip:node-port
- 서비스 확인
kubectl describe service [서비스명]
- e.g. pod에 대한 엔드포인트를 잘 찾았는지, labels와 selector가 매칭되는지
- 파드 확인
kubectl get pod
kubectl describe pod [pod명]
kubectl logs [pod명] -f --previous
- 확인해볼만한 것들
- 포트가 제대로 지정되어 있는지
- labels & selector 가 제대로 연결되어 있는지
- 환경변수가 제대로 작성되어 있는지
- 명령어 등에 오타가 있지는 않은지
컨트롤플레인 고장
- 노드 확인
- 파드 확인
kubectl get pod
kubectl get pod -n kube-system
- 서비스 확인
- 마스터 노드
service kube-apiserver status
service kube-controller-manager status
- e.g. deployment를 수정했음에도 replica set 내 pod가 줄거나 늘지 않았을 때 controller-manager 확인 (명령어, volume 등 경로 확인)
service kube-scheduler status
- e.g. pod가 node에 배포되지 않았을 때 kube-scheduler 확인
- 워커 노드
service kubelet status
service kube-proxy status
- 서비스 로그 확인
kubectl logs [pod명] -n kube-system
sudo journalctl -u kube-apiserver
- static pod (e.g. kube-scheduler) 수정 방법
- /etc/kubernetes/manifests 내 yaml 파일 수정
워커 노드 고장
- 노드 상태 확인
kubectl get nodes
kubectl describe node [노드명]
- 노드 재시작
ssh [노드명] service kubelet restart
- CPU 용량, 메모리 용량 등 확인
- kubelet 상태 확인
service kubelet status
sudo journalctl -u kubelet
- kubelet 수정
- /var/lib/kubelet/config.yaml 확인 (인증서 경로 등)
- /etc/kubernetes/kubelet.conf 확인 (controlplane 포트(6443) 등)
- 인증서 확인
- 유효기간 만료 여부
- 올바른 그룹 내에 있는지 여부
- 올바른 CA에 의해 인증서가 발행되었는지 여부
openssl x509 -in /var/lib/kubelet/[노드명].crt -text
네트워크 고장
coreDNS 관련 이슈일 경우
- coreDNS 파드가 대기(pending) 상태일 시
- 네트워크 플러그인 (e.g. weavenet, flannel 등) 제대로 설치되었는지 확인
- coreDNS 파드가 CrashLoopBackOff 혹은 Error 상태일 시
- Docker 새 버전으로 업그레이드
- SELinux 비활성화
- coredns deployment의 allowPrivilegeEscalation을 true로 변경
- coreDNS 파드와 kube-dns 서비스가 제대로 작동할 경우
- kube-dns가 유효한 엔드포인트를 가졌는지 확인
kubectl -n kube-system get ep kube-dns
kube-proxy 관련 이슈일 경우
- kube-proxy 파드 확인
- kube-proxy 로그 확인
- /var/lib/kube-proxy/config.conf 파일 확인
- configmap 확인
- 만약 kube-proxy의 configmap에서 지정한 경로와 kube-proxy 파드 내 경로가 다르다면 수정 필요
- kube-proxy가 컨테이너 안에서 실행하고 있는지 확인
netstat -plan | grep kube-proxy
참고
- 단축어 설정하기
- 자동완성 설정하기
- 쿠버네티스 문서에서 kubectl cheat sheet 검색
- 해당 명령어 실행
- deployment 스케일 조정하기
kubectl scale deployment [deploy명] --replicas=[개수]
- weavenet 다운로드
curl -L https://github.com/weaveworks/weave/releases/download/latest_release/weave-daemonset-k8s-1.11.yaml | kubectl apply -f -