퀴즈: k0s 구성과 동적 구성
정적 구성(기본)으로 도는 k0s 컨트롤러에서 /etc/k0s/k0s.yaml 에 워커 프로필을 더했다. 언제 반영되나?
- 파일이 저장되는 즉시 k0s 가 감지해 반영한다
- k0s 를 재시작해야 반영되고, 그 전에는 ConfigMap 이 생기지 않는다
- k0s config validate 를 통과하면 그 자리에서 반영된다
- 다음 워커가 합류할 때 컨트롤러가 파일을 다시 읽는다
--enable-dynamic-config 로 도는 클러스터에서 파일의 spec.workerProfiles 를 고치고 k0s 를 재시작했다. 결과는?
- 클러스터 수준 설정은 ClusterConfig 오브젝트가 원천이라 파일 변경은 무시된다
- 재시작하면 파일이 오브젝트를 덮어써 새 프로필이 생긴다
- 파일과 오브젝트가 다르므로 k0s 가 시작을 거부한다
- 재시작 때 파일과 오브젝트를 합쳐 두 프로필이 모두 생긴다
동적 구성에서도 각 컨트롤러의 로컬 파일에서 계속 읽는 설정은?
- spec.workerProfiles 와 spec.extensions.helm
- spec.network.kuberouter 와 spec.network.kubeProxy
- spec.telemetry 와 spec.konnectivity
- spec.api 와 spec.storage
실습 VM 에서 동적 구성을 켠 뒤 ClusterConfig 의 serviceCIDR 가 10.96.0.0/12 로 보였지만 파일에는 172.21.0.0/16 이 있었다. 어떻게 판단해야 하나?
- 오브젝트가 원천이므로 클러스터는 이미 10.96.0.0/12 를 쓰고 있다
- 오브젝트를 172.21.0.0/16 으로 고치면 서비스 대역이 즉시 바뀐다
- 바꿀 수 없는 항목이라 API 서버 인자와 kube-dns 주소 같은 실제 구성요소에서 확인한다
- 파일이 틀렸으므로 파일을 10.96.0.0/12 로 맞추고 재시작한다
spec.extensions.helm 에 선언한 차트를 없애고 싶다. 실측을 바탕으로 올바른 방법은?
- kube-system 의 Chart 오브젝트만 kubectl delete 하면 선언도 함께 지워진다
- ClusterConfig 에서 차트 선언을 지운다. 그러면 Chart 와 릴리스가 지워지고 네임스페이스는 남는다
- helm uninstall 로 릴리스를 지우면 k0s 가 선언을 정리한다
- 차트 선언을 지우면 릴리스와 함께 대상 네임스페이스도 지워진다
7단계에서 kubectl patch --type=merge 로 workerProfiles 에 from-api 만 담아 보냈다. 무슨 일이 생기나?
- merge patch 가 목록을 통째로 바꿔 edge-small 이 빠지고 그 ConfigMap 도 지워진다
- merge patch 는 목록 끝에 항목을 더하므로 기존 프로필이 모두 유지된다
- ClusterConfig 는 patch 를 받지 않아 k0s config edit 로만 바꿀 수 있다
- 목록이 바뀌면 컨트롤러가 재시작될 때까지 아무것도 조정하지 않는다