- 기술지원single 클러스터 노드 증설 문의
-
이*우 2024-12-09 15:20:17- hits119
안녕하세요
온프레미스로 k-paas를 구축하고 있습니다.
현재 LB 2대, master 3대, work 4대로 single 클러스터를 구성하였습니다.
몇가지 문의드릴 내용이 있어서 글을 올립니다.
1. work노드를 증설하고 싶은데 관련 메뉴얼이 있을까요???
2. 노드를 교체하고 싶을땐, 노드를 삭제하고 추가를 해야할까요??(워커노드가 문제가 발생시 교체방법, 노드가 죽었을때 kubelet이 통신이 안되는데 pod 옮기는 법)
3. 현재 스토리지를 rook-ceph으로 설정하였는데, 최소 work노드가 3대를 유지하고 있어야 할까요???
안녕하세요. 개방형 클라우드 플랫폼 센터입니다.
문의주신 내용에 대한 답변 드립니다.
1. work노드를 증설하고 싶은데 관련 메뉴얼이 있을까요???
Worker 노드 추가 관련하여 아래 가이드를 참고하여 진행하시면 됩니다.*
(불필요한 Worker 노드를 삭제하기 전 Worker 노드 추가 가이드를 먼저 진행후 삭제해 주시기바랍니다.)
현재 Cluster와 새로 추가할 Worker Node에 아래 순서대로 설정후 실행시켜 주시기 바랍니다.
------------------------------------------------------------------------------------------------------------------
1) kube-apiserver.yaml 수정
# 멀티 Master 구성시 모든 Master에 설정
$ sudo vi /etc/kubernetes/manifests/kube-apiserver.yaml
...
- --anonymous-auth=True #True로 수정
...
#수정하면 api-server가 재시작 되므로 아래와 같이 에러 발생(몇초 후 다시 조회하면 정상화 됨)
$ kubectl get nodes
The connection to the server xx.xx.xx.xx:6443 was refused - did you specify the right host or port?
------------------------------------------------------------------------------------------------------------------
2) 추가할 Worker Node에 공개키 입력
#Master Node에서 실행
$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5QrbqzV6g4i....
#추가할 Worker Node에서 실행
$ vi .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDRueywSiuwyf...
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5QrbqzV6g4i... #추가(Master Node 공개키 값)
------------------------------------------------------------------------------------------------------------------
3) hosts.yaml 수정
# hosts.yaml 파일에 새로 추가할 Worker Node에 대한 정보 입력(hostname과 ip는 예시이므로 해당 서버정보 값 입력)
$ vim ~/cp-deployment/standalone/inventory/mycluster/hosts.yaml
all:
hosts:
cluster1:
ansible_host: 192.168.0.xx
ip: 192.168.0.xx
access_ip: 192.168.0.xx
cluster2:
ansible_host: 192.168.0.xx
ip: 192.168.0.xx
access_ip: 192.168.0.xx
cluster3: #추가(새로 추가할 Worker Node Host name)
ansible_host: 192.168.0.xx #추가(새로 추가할 Worker Node Private IP)
ip: 192.168.0.xx #추가(새로 추가할 Worker Node Private IP)
access_ip: 192.168.0.xx #추가(새로 추가할 Worker Node Private IP)
children:
kube_control_plane:
hosts:
cp-test-cluster1:
kube_node:
hosts:
cluster1:
cluster2:
cluster3: #추가(새로 추가할 Worker Node Host name)
etcd:
hosts:
cp-test-cluster1:
k8s_cluster:
children:
kube_control_plane:
kube_node:
calico_rr:
hosts: {}
------------------------------------------------------------------------------------------------------------------
4) ansible-playbook 명령어 실행
$ cd ~/cp-deployment/standalone
$ ansible-playbook -i ~/cp-deployment/standalone/inventory/mycluster/hosts.yaml --become --become-user=root scale.yml
------------------------------------------------------------------------------------------------------------------
5) 정상 작동 확인
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nfs-pod-provisioner-57bf7fdc86-bktsz 1/1 Running 5 (6m40s ago) 65m
$ kubectl get pods -n kube-system
NAME READY STATUS RESTARTS AGE
calico-kube-controllers-648dffd99-xxp2n 1/1 Running 0 68m
calico-node-2tq6v 1/1 Running 0 67s
calico-node-mqn2b 1/1 Running 0 68m
calico-node-zg99s 1/1 Running 0 68m
coredns-77f7cc69db-8ps6j 1/1 Running 0 68m
coredns-77f7cc69db-n54qt 1/1 Running 0 68m
dns-autoscaler-8576bb9f5b-dm78l 1/1 Running 0 68m
kube-apiserver-cp-test-cluster1 1/1 Running 0 6m36s
kube-controller-manager-cp-test-cluster1 1/1 Running 4 (6m59s ago) 69m
kube-proxy-9v6fp 1/1 Running 0 64s
kube-proxy-qx9dz 1/1 Running 0 65s
kube-proxy-rf8r5 1/1 Running 0 65s
kube-scheduler-cp-test-cluster1 1/1 Running 4 (6m59s ago) 69m
metrics-server-bd6df7764-cb5zm 1/1 Running 0 67m
nginx-proxy-cp-test-cluster2 1/1 Running 0 69m
nginx-proxy-cp-test-cluster3 1/1 Running 0 60s
nodelocaldns-7h4jt 1/1 Running 0 68m
nodelocaldns-f4w7f 1/1 Running 0 68m
nodelocaldns-ht6bj 1/1 Running 0 67s
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
cluster1 Ready control-plane 69m v1.28.6
cluster2 Ready <none> 69m v1.28.6
cluster3 Ready <none> 70s v1.28.6 #Worker Node 추가 확인
----------------------------------------------------------------------------------------------------------------
2. 노드를 교체하고 싶을땐, 노드를 삭제하고 추가를 해야할까요??(워커노드가 문제가 발생시 교체방법, 노드가 죽었을때 kubelet이 통신이 안되는데 pod 옮기는 법)
특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 하거나 기존에 배포된 파드를 다른 노드로 이동시키는 경우 drain을 적용하여 노드의 자원을 안전하게 이동시킬 수 있습니다.
삭제할 노드에 drain 적용 후 노드 삭제($ kubectl delete node [NODE_NAME]) 진행하시기 바랍니다.
아래 링크를 확인하여 적용 부탁드립니다.
https://kubernetes.io/docs/tasks/administer-cluster/safely-drain-node/
----------------------------------------------------------------------------------------------------------------
3. 현재 스토리지를 rook-ceph으로 설정하였는데, 최소 work노드가 3대를 유지하고 있어야 할까요???
K-PaaS 컨테이너 플랫폼 설치시 스토리지를 rook-ceph으로 구성시 Worker Node 3대 이상 구성을 권장드리고 있습니다.
감사합니다.
-
- 다음글
- 포털 설치 시 오류