개요
오라클 클라우드 프리티어에 K3S를 설치하여 사용하던 중 마스터 노드가 느려지거나 멈추는 현상이 생겼다. 아무것도 건들지 않았는데 자연적으로 멈출때도 있었고, 무언가 컴포넌트를 추가했을 때에 느려지거나 멈추는 현상이 확실히 보였다. 증상은 아래와 같다.
- ssh 접속 지연 및 멈춤
- kuber-api 응답 지연 및 멈춤
- kubernetes에서 운영중인 서비스 응답 멈춤
문제점
메모리 사용률
평소 85%정도의 메모리를 사용중인데, 추가적으로 컴포넌트를 사용하게 되면 메모리 점유율이 증가하다가 멈추는 현상을 볼 수 있다.
위 사진은 추가 컴포넌트를 설치하여 메모리 점유율이 증가하여 멈춘 그래프이지만, 가만히 운영중에도 메모리 점유율이 천천히 증가하다 멈추는 경우도 있었다.
컨트롤 플레인 컴포넌트
마스터 노드가 멈추게되면 pod으로 실행중인 컨트롤 플레인 컴포넌트도 영향을 받기 때문에, 워커 노드가 살아있어도 운영중인 서비스가 멈추게 되는 문제가 발생했다.
local-path-provisioner 컴포넌트가 멈추게 되면서, 웹 사이트는 정상 작동중이지만 데이터베이스 저장소를 사용하지 못하면서 서비스가 멈추는 것 같다.
해결법
마스터 노드 taint
kubectl taint node k3s-master node-role.kubernetes.io=master:NoSchedule
taint 적용 확인
kubectl describe node k3s-master | grep -i taint
마스터 노드 drain
kubectl drain k3s-master --ignore-daemonsets --delete-local-data
kubectl uncordon k3s-master
drain 적용 확인
kubectl get pod -o wide -n kube-system
Pod이 정상적으로 시작되지 않을 때
kubectl get pod -n kube-system
kubectl delete pod -n kube-system [Pod_Name]
deployments로 pods이 배포되기 때문에 pod을 종료시켜 재시작되는것을 확인합니다.
마치며
결론적으로 메모리 점유율이 안정되었다.
그리고 서비스에 필요한 컴포넌트를 워커 노드로 옮겨놓았기 때문에, 마스터 노드가 죽어도 서비스에 접속이 가능하게 되었다.
'Cloud > Kubernetes' 카테고리의 다른 글
[v1.21] Kubeadm + Containerd + Calico + NFS-Provisioner + Ingress-Nginx 설치 (0) | 2021.05.22 |
---|---|
[kubeadm] kubernetes에 metrics-server 설치하기 (0) | 2021.02.15 |
[kubeadm] Hyper-V를 사용한 Kubernetes 설치 (1) | 2021.02.12 |
[Docker Desktop] 도커 데스크탑 쿠버네티스 인그레스 컨트롤러 설치 (0) | 2021.01.08 |
[k3s] 쿠버네티스 busybox 최신 이미지 사용시 dns 조회 불가 (0) | 2020.12.15 |