따배씨&kode kloud / trouble shooting (Worker Node Failure)
Introduction
워낙 둘다 내용이 짧아서 걍 합쳐서 써봄.
노드가 notReady상태일때 적용하는 trouble shooting이다.
로컬환경 k8s클러스터가 날아가서 kode kloud로 해봄.
문제하나하나가 로딩이 졸라느리다 ㅡㅡ
kode kloud풀면서 1번만 맞았다.. 단순히 kubelet만 살려주는거.
두번째 세번째 문제는 다 틀렸다. 솔루션 보고 해결함.
클러스터 문제생기면 난 gpt에 도움받았는데 너무 경우가 많다보니.. 와닿지는 않음.
cka후기도 대부분
Summary
- 도커확인
- kubelet 확인
- kube-system ns의 pod확인
- ---
- journalctl -u kubelet
- systemctl enable --now kubelet
- systemctl restart --now kubelet
- kubelet설정파일 경로 : /var/lib/kubelet/config.yaml
- kubelet설정파일 경로 : /etc/kubernetes/kubelet.conf
- 두개 차이는 모름
- ---
- kode kloud풀면서 1번만 맞았다.. 단순히 kubelet만 살려주는거.
두번째 세번째 문제는 다 틀렸다. 솔루션 보고 해결함.
클러스터 문제생기면 난 gpt에 도움받았는데 너무 경우가 많다보니.. 와닿지는 않음. - cka후기도 대부분 kubelet죽은거라 걍 kubelet재시작해주는식으로 해가면될듯.. 정안되면 journalctl사용해보구
export samp="--dry-run=client -o yaml"
export now="--force --grace-period 0"
$samp, $now붙은건 이 명령어로 약어만든거니까 주의
Kubectl Reference Docs
kubernetes.io
# 따배씨에서는?
- 워커노드의 docker상태확인
- 워커노드의 kubelet확인
- kube-proxy pod동작중인지 확인.
- cni동작중인지 확
이런식으로 나와있다.
먼저 config로 현재 클러스터 확인후
ssh 접속. 관리자모드로 접근은
ssh node01
sudo -i
이렇게 하란다.
첫번쨰 두번째 트러블슛팅 강의는 각각 kubelet이 죽고, docker가 죽었다.
systemctl enable --now kubelet
systemctl enable --now docker
이렇게 커맨드를치면 된다.
굉장히 단순하다.
강의도 너무 짧고해서 딱히 포스팅하나를 채울 느낌은 안들었음.
# kode kloude - 1
node01이 죽었다.
먼저 node01이 런타임환경 어떤건지 확인.
얘는 docker안쓰고 containerd사용중
- containerd상태 확인
잘돌아간다.
- kubelet확인
얜 뒤졌다.
systemctl enable --now kubelet
살려주면 된다.
enable은 살려달라는거고 --now는 지금당장. 다음에도 살리라는 뜻이라고함..
# kode kloude - 2
pod들은 잘 돌아간다고함.
kubelet containerd전부 다 잘돌아가는데?.
network가 이상하다고함. 근데 kubesystem의 pod들은 잘 돌아갔는데.. 뭔지모름
journalctl -u kubelet
인증파일 없다고함
저기 wrong-ca-file보면 문제에서 대놓고 저기 문제있다고하는듯
https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/kubelet-integration/
Configuring each kubelet in your cluster using kubeadm
Note: Dockershim has been removed from the Kubernetes project as of release 1.24. Read the Dockershim Removal FAQ for further details. FEATURE STATE: Kubernetes v1.11 [stable] The lifecycle of the kubeadm CLI tool is decoupled from the kubelet, which is a
kubernetes.io
공식문서 kubelet관련인데..
kubelet설정파일 경로 나와있음.
vi /var/lib/kubelet/config.yaml
kubelet설정파일 열어서
저기를 ca.crt로 수정하면 될듯
systemctl restart --now kubelet
잘돌아감
# kode kloude - 3
여기도 containerd, pod들 다 확인했느데 다 정상임
node01에 ssh 관리자로 들어가서시작함
journalctl로 확인해보니 마스터노드로 통신이 안된다네.
근데 웰노운 포트가 6443인데 저긴 6553으로 되어있음.
https://kubernetes.io/docs/reference/networking/ports-and-protocols/
Ports and Protocols
When running Kubernetes in an environment with strict network boundaries, such as on-premises datacenter with physical network firewalls or Virtual Networks in Public Cloud, it is useful to be aware of the ports and protocols used by Kubernetes components.
kubernetes.io
컨트롤 플레인 노드에서
포드가 6443이래.
다시 node01로 돌아와서
vi /etc/kubernetes/kubelet.conf
저 부분을 고쳐주자.
고치고 재시작
다시살려