본문 바로가기

인프런 복습 - 쿠버네티스 어나더 클래스

[Sprint1] 쿠버네티스 구조 총 정리 + 트러블 슈팅 코드

 

시작하기 전에..

강사님 자료

지금까지 한 내용으로 kubernetes의 전체 구성을 살펴보았다. 

 

 

이 예시가 기억하기 너무 좋은 것 같아서 가지고 왔다. 

Namespace는 동아리 정도로 기억하면 된다. 

 

 

 


 

 

전체적인 구성

k8s 공식 문서

 

 

 

 

 


 

실습

 

1. 리소스, 컴포넌트 확인

// api resoure 확인
kubectl api-resources


//주요 component 확인
kubectl get pods -n kube-system
kubectl logs -n kube-system etcd-k8s-master
kubectl logs -n kube-system kube-scheduler-k8s-master
kubectl logs -n kube-system kube-apiserver-k8s-master

 

 

 

 

2. 파일 위치

// 쿠버네티스 인증서 위치
cd /etc/kubernetes
ls /root/.kube/config

// Control Plane Component Pod 생성 yaml 파일 위치
ls /etc/kubernetes/manifests

// 전체 Pod 로그
/var/log/pods/<namespace_<pod-name>_<uid>/<number>.log
/var/log/containers/<pod-name>_<namespace>_<container-name>_<container-id>.log

참고로 이때 

/var/log/containers 의 로그들이 실제로 저장되고

/var/log/pods 에는 로그들이 symlink 로 연결되어 정리되어있다.

 

대체로, kubectl 명령어로 log를 확인하지만 

특정 시간대문자를 검색할 땐 이렇게 보기도 한다. 

 

 

 

 

 

3. 트러블 슈팅

// kubelet 상태 확인
1) systemctl status kubelet       // systemctl (restart or start) kubelet
2) journalctl -u kubelet | tail -10  // 상세 log

// 상태 확인 -> 상세 로그 확인 -> 10분 구글링 -> VM 재기동 -> Cluster 재설치 ->  답을 찾을 때 까지 구글링

// containerd 상태 확인
1) systemctl status containerd
2) journalctl -u containerd | tail -10

// 노드 상태 확인
1) kubectl get nodes -o wide
2) kubectl describe node k8s-master

// Pod 상태 확인
1) kubectl get pods -A -o wide

// Event 확인 (기본값: 1h)
2-1) kubectl get events -A   //모든 pod
2-2) kubectl events -n anotherclass-123 --types=Warning  (or Normal)
// Log 확인
3-1) kubectl logs -n anotherclass-123 <pod-name> --tail 10    // 10줄 만 조회하기
3-2) kubectl logs -n anotherclass-123 <pod-name> -f           // 실시간으로 조회 걸어 놓기
3-3) kubectl logs -n anotherclass-123 <pod-name> --since=1m   // 1분 이내에 생성된 로그만 보기

▲ 트러블 슈팅의 90%는 해결할 수 있다. 

 

구글링 10분 > 실패시 VM 재부팅 > 자주 발생하면 kubernetes 재설치 > 그래도 안되면 구글링 

 

 

 

4. Service 확인

iptables -t nat -L KUBE-NODEPORTS -n  | column -t
//nodeport 확인
kubectl get svc -A