사용자 클러스터에서는 클러스터 구성 파일의 nodePools
섹션을 채워서 모두 동일한 구성을 가진 노드 그룹을 만들 수 있습니다.
그러면 클러스터의 다른 노드에 영향을 주지 않고 노드 풀을 관리할 수 있습니다.
노드 풀에 대해 자세히 알아보기
다른 osImageType
을 갖도록 노드 풀을 업데이트할 수도 있습니다.
시작하기 전에
노드 풀을 삭제하면 해당 노드의 워크로드 실행 여부에 관계없이 풀의 노드가 즉시 삭제됩니다.
워크로드를 방해하지 않고 nodePool
섹션의 replicas
필드를 업데이트할 수 있습니다. 그러나 다른 필드를 업데이트하면 풀의 노드가 삭제되고 다시 생성됩니다.
노드 풀의 모든 VM에 태그를 연결하려면 vCenter 사용자 계정에 다음과 같은 vSphere 태그 권한이 있어야 합니다.
- vSphere Tagging.vSphere 태그 할당 또는 할당 해제
- vSphere Tagging.객체에 vSphere 태그 할당 또는 할당 해제 (vSphere 7)
nodePool
섹션을 업데이트하면 Anthos clusters on VMware가 새 노드를 만든 후 이전 노드를 삭제합니다. 이때 모든 이전 노드가 새 노드로 대체될 때까지 이 프로세스를 반복합니다. 즉, 이 클러스터는 업데이트 중에 사용할 수 있는 추가 IP 주소가 있어야 합니다.
업데이트가 끝나면 노드 풀에 노드가 N개 있다고 가정합니다. 그러면 해당 풀의 노드에 사용할 수 있는 IP 주소가 N+1개 이상 있어야 합니다. 즉, 하나 이상의 풀에 노드를 추가하여 클러스터 크기를 조절할 경우 크기 조절이 끝났을 때 모든 클러스터의 총 노드 수보다 하나 이상 많은 IP 주소가 있어야 합니다. 자세한 내용은 사용 가능한 IP 주소가 충분한지 확인을 참조하세요.
클러스터 구성 파일의 nodePools
섹션 채우기
사용자 클러스터 구성 파일에서 nodePools
섹션을 채웁니다.
각 노드 풀에 대해 다음 필드를 지정해야 합니다.
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
다음 필드는 선택사항입니다.
nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
새 클러스터에서 노드 풀 만들기
사용자 클러스터 구성 파일에서 nodePools
섹션을 입력한 후 클러스터를 만듭니다.
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
다음을 바꿉니다.
ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터의 kubeconfig 파일
USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일
기존 클러스터의 노드 풀 업데이트
사용자 클러스터 구성 파일에서 nodePools
섹션을 수정한 후 클러스터를 업데이트합니다.
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
변경사항 확인
노드 풀이 의도한 대로 생성되었거나 업데이트되었는지 확인하려면 클러스터 노드를 검사합니다.
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes --output wide
변경사항을 되돌려야 한다면 클러스터 구성 파일을 수정하고 gkectl update cluster
를 실행합니다.
노드 풀 삭제
사용자 클러스터에서 노드 풀을 삭제하려면 다음 안내를 따르세요.
사용자 클러스터 구성 파일의
nodePools
섹션에서 정의를 삭제합니다.영향을 받는 노드에서 실행 중인 워크로드가 없는지 확인합니다.
클러스터를 업데이트합니다.
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
예시
다음 구성 예시에서는 속성이 서로 다른 노드 풀 4개가 있습니다.
pool-1
: 최소 필수 속성만 지정됨pool-2
:vsphere.datastore
,vsphere.tags
포함pool-3
:taints
,labels
포함pool-4
:osImageType
,bootDiskSizeGB
포함
nodePools:
- name: pool-1
cpus: 4
memoryMB: 8192
replicas: 5
- name: pool-2
cpus: 8
memoryMB: 16384
replicas: 3
vsphere:
datastore: my_datastore
tags:
- category: "purpose"
name: "testing"
- name: pool-3
cpus: 4
memoryMB: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-4
cpus: 4
memoryMB: 8192
replicas: 5
osImageType: cos
bootDiskSizeGB: 40
노드 풀에 사용되는 osImageType
업데이트
다른 osImageType
을 사용하도록 노드 풀을 업데이트할 수 있습니다. 다음 예시에 표시된 것처럼 노드 풀에 대해 구성 파일을 업데이트하고 gkectl update cluster
를 실행합니다.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
문제 해결
일반적으로
gkectl update cluster
명령어는 실패 시 세부정보를 제공합니다. 명령어가 성공했지만 노드가 표시되지 않으면 클러스터 문제 진단 가이드를 따라 문제를 해결할 수 있습니다.노드 풀 생성 또는 업데이트 중에 사용 가능한 IP 주소 부족과 같이 클러스터 리소스가 부족하면 발생할 수 있습니다. IP 주소를 사용할 수 있는지 확인하는 방법에 대한 자세한 내용은 사용자 클러스터 크기 조절 주제를 참조하세요.
일반 문제 해결 가이드를 검토할 수도 있습니다.
Creating node MachineDeployment(s) in user cluster…
이후로 더 이상 진행하지 않습니다.사용자 클러스터에서 노드 풀을 만들거나 업데이트하는 데 시간이 걸릴 수 있습니다. 하지만 대기 시간이 매우 길어 문제가 있다고 의심되는 경우에는 다음 명령어를 실행하면 됩니다.
kubectl get nodes
를 실행하여 노드 상태를 가져옵니다.- 사용할 수 없는 노드에는
kubectl describe node NODE_NAME
을 실행하여 세부정보를 가져옵니다.