Kubeadm으로 Kubernetes Control Plane 관리하기
ClusterConfiguration 설정하기
경고
kube-system Namespace의 kubeadm-config ConfigMap에 저장된 설 정이 SSOT입니다.
/etc/kubernetes/kubeadm-config.yaml을 사용하기 전/후에 ClusterConfiguration
이 kubeadm-config의 내용과 같은지 확인해야합니다.
파일을 변경한 경우에는 아래 명령어를 사용하여 kubeadm-config에 변경사항을 반영합니다.
kubeadm init phase upload-config kubeadm --config=/etc/kubernetes/kubeadm-config.yaml
/etc/kubernetes/kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
kubernetesVersion: <version>
apiServer
extraArgs: []
name: <name>
value: <value>
extraEnvs: []
name: <name>
value: <value>
valueFrom
extraVolumes: []
name: <name>
hostPath: <hostPath>
mountPath: <mountPath>
readOnly: <bool>
- 기본값:
false
- 기본값:
pathType: DirectoryOrCreate|Directory|FileOrCreate|File|Socket|CharDevice|BlockDevice
- 기본값:
""
- 기본값:
certSANs: []
- kube-apiserver의 인증서에 추가할 Subject Alternative Name 을 설정합니다.
- IP 또는 domain을 설정할 수 있습니다.
etcd
external
- 외부 etcd를 사용합니다.
local
- etcd를 static Pod으로 실행합니다.
controllerManager
extraArgs: []
extraEnvs: []
extraVolumes: []
scheduler
extraArgs: []
extraEnvs: []
extraVolumes: []
설정 적용하기
설정을 변경한 후 아래 명령어를 실행하면 static Pod manifest가 변경되고, kubelet이 이를 감지하여 static Pod를 재시작합니다.
kubeadm init phase control-plane <command> \
--config=/etc/kubernetes/kubeadm-config.yaml \
[<flag> ...]
<command>
apiserver
: kube-apiserver static Pod manifest를 생성합니다.controller-manager
: kube-controller-manager static Pod manifest를 생성합니다.scheduler
: kube-scheduler static Pod manifest를 생성합니다.all
<flag>
--config=<file>
:ClusterConfiguration
설정 파일을 지정합니다.
kubeadm init phase etcd local \
--config=/etc/kubernetes/kubeadm-config.yaml \
[<flag> ...]
--config=<file>
:ClusterConfiguration
설정 파일을 지정합니다.
경고
설정은 변경되지 않았지만, 설정에서 사용된 파일이 변경되어 kube-apiserver를 재시작해야하는 경우 아래 명령어를 사용합니다.
crictl pods --namespace kube-system --name 'kube-apiserver-*' -q \
| xargs crictl rmp -f
모든 컴포넌트를 재시작해야하는 경우 아래 명령어를 사용합니다.
crictl pods --namespace kube-system --name 'kube-scheduler-*|kube-controller-manager-*|kube-apiserver-*|etcd-*' -q \
| xargs crictl rmp -f