Skip to main content

Kubespray Node 추가/제거


Control plane

  • kube_control_plane 그룹은 etcd를 제외한 나머지 control plane 컴포넌트인 apiserver, scheduler, controller를 설치할 Node 그룹입니다.
  • groups['kube_control_plane'][0]은 추가적으로 실행되는 task가 있습니다.
ansible-playbook -i inventory -b cluster.yml

etcd

  • etcd는 etcd가 설치될 Node 그룹입니다.
  • groups['etcd'][0]은 추가적으로 실행되는 task가 있습니다.
  • Node 수가 짝수인 경우 kubernetes/preinstall role 실행이 실패하므로 변경 중이 아닌 경우 홀수로 유지해야합니다.
  • 다른 그룹으로 사용되던 Node는 etcd 그룹에 추가할 수 없으므로 해당 Node를 제거했다가 원래 그룹과 함께 다시 추가해야합니다.
ansible-playbook -i inventory -b cluster.yml \
-l etcd,kube_control_plane \
-e etcd_retries=10 \
-e ignore_assert_errors=true
ansible-playbook -i inventory -b upgrade-cluster.yml \
-l etcd,kube_control_plane \
-e etcd_retries=10 \
-e ignore_assert_errors=true
/etc/kubernetes/manifests/kube-apiserver.yaml
spec:
containers:
- command:
- --etcd-servers=https://<ip>:2379[,https://<ip>:2379]

etcd변경이 잘 되었는지 kube_control_plane 그룹의 각 Node에서 위 옵션을 확인합니다.

Node

  • kube_node 그룹은 container runtime, kubelet을 설치할 Node 그룹입니다.
ansible-playbook -i inventory -b playbooks/facts.yml
ansible-playbook -i inventory -b scale.yml \
-l <hostname>

Node 제거

warning

kubespray에서 여러 그룹에 속해있는 Node를 한 그룹에서만 제거하는 방법을 제공하지 않는 것 같습니다.(불확실함)

제거 전 작업

  • groups['etcd'][0] 또는 groups['kube_control_plane'][0]인 Node를 제거하려는 경우 해당 Node의 순서를 변경해야합니다.
inventory/hosts.yaml
etcd:
hosts:
node1: # 제거 대상
node2:
inventory/hosts.yaml
etcd:
hosts:
node2:
node1: # 제거 대상
ansible-playbook -i inventory -b cluster.yml

제거

ansible-playbook -i inventory -b remove-node.yml \
-e node=<target>

제거가 완료되면 inventory/hosts.yaml에서 제거된 Node를 삭제합니다.

제거 후 작업

etcd 그룹에 포함된 Node가 제거된 경우 Kubernetes 와 네트워크 설정 파일을 업데이트를 위해 cluster.yml 플레이북을 실행합니다.

ansible-playbook -i inventory -b cluster.yml
  • 짝수개의 etcd를 가진 경우 -e ignore_assert_errors=true 옵션으로 에러를 무시해야합니다.
/etc/kubernetes/manifests/kube-apiserver.yaml
spec:
containers:
- command:
- --etcd-servers=https://<ip>:2379[,https://<ip>:2379]

etcd변경이 잘 되었는지 kube_control_plane 그룹의 각 Node에서 위 옵션을 확인합니다.

kube_control_plane의 첫 번째 Node가 변경된 경우 cluster-info ConfigMap을 확인합니다.