Kubernetesディストリビューション — 自分で立てる
クイズ: kubeadm でクラスタを組む
한국어 원문으로 표시합니다.
kubeadm init 이 성공 문구를 냈는데 노드가 NotReady 이고 Ready 조건 message 에 cni plugin not initialized 가 있다. 가장 먼저 해야 할 일은?
- kubeadm reset 후 --pod-network-cidr 를 빼고 다시 init 한다
- init 대역과 맞춘 CNI 애드온 매니페스트를 적용한다
- kubelet 의 cgroupDriver 를 cgroupfs 로 바꿔 재시작한다
- control-plane 테인트를 빼서 CoreDNS 가 스케줄되게 한다
Flannel 을 적용하자 노드는 곧 Ready 가 됐는데 CoreDNS 가 ContainerCreating 에 머물고 flannel 로그에 Failed to check br_netfilter 가 반복된다. 무엇이 일어난 것인가?
- 초기화 컨테이너가 CNI 설정 파일을 먼저 써서 kubelet 은 준비됐다고 봤지만 flanneld 본체가 커널 모듈 부재로 죽고 있다
- CoreDNS 이미지가 Docker Hub 에서 받아지지 않아 컨테이너를 만들지 못하고 있다
- kubeadm preflight 가 br_netfilter 를 확인했는데 경고를 무시하고 init 해서 CNI 가 거부됐다
- Flannel 의 Network 값이 파드 대역과 달라 kubelet 이 노드를 Ready 로 잘못 표시했다
Kubernetes 1.36 kubelet 과 containerd 2.3 조합에서 kubelet 이 실제로 쓰는 cgroup 드라이버를 결정하는 것은?
- /var/lib/kubelet/config.yaml 의 cgroupDriver 값이 항상 우선한다
- kubeadm init 에 준 플래그가 정적 파드 매니페스트에 적힌 값이다
- containerd 의 runc 옵션 SystemdCgroup 이 CRI 로 kubelet 에 전달된 값이다
- 호스트 커널이 cgroup v2 이면 kubelet 이 무조건 cgroupfs 를 고른다
kube-scheduler 파드를 kubectl delete 로 지웠더니 곧 같은 이름으로 다시 보였다. 이때 관찰되는 것으로 옳은 것은?
- Deployment 가 새 레플리카를 만들어 파드 UID 와 컨테이너 ID 가 모두 바뀐다
- API 서버가 삭제를 거절해 UID 도 컨테이너 ID 도 그대로다
- kubelet 이 매니페스트 파일을 다시 써서 컨테이너가 재시작되고 restartCount 가 1 오른다
- kubelet 이 거울 파드만 다시 등록해 파드 UID 는 바뀌지만 컨테이너 ID 는 그대로다
kubeadm join 의 --discovery-token-ca-cert-hash 값이 막는 위험은?
- 토큰이 만료된 뒤에도 노드가 조인하는 것
- 조인하는 노드가 가짜 API 서버를 진짜 컨트롤 플레인으로 믿는 것
- 워커 노드가 control-plane 라벨을 스스로 붙이는 것
- 같은 hostname 을 가진 두 노드가 동시에 조인하는 것
kubeadm 기본값으로 세운 클러스터를 1년 넘게 업그레이드 없이 운영했다. 가장 먼저 부딪힐 가능성이 큰 문제는?
- API 서버·컨트롤러 등의 클라이언트 인증서가 만료돼 구성요소 간 인증이 실패한다
- CA 인증서가 만료돼 모든 kubelet 인증서를 새로 발급해야 한다
- kubelet 의 클라이언트 인증서가 만료돼 노드가 전부 NotReady 가 된다
- 부트스트랩 토큰이 만료돼 이미 조인한 노드가 클러스터에서 빠진다