사용자 클러스터를 만들 때는 모든 구성이 동일한 노드 그룹인 노드 풀을 하나 이상 구성해야 합니다. 클러스터를 만든 후 새 노드 풀을 추가하고 노드 풀 설정을 업데이트하고 노드 풀을 삭제할 수 있습니다.
노드 풀을 만들고, 업데이트하고, 삭제하는 방법은 클러스터가 Anthos On-Prem API에서 관리되는지 여부에 따라 달라집니다. 다음 중 하나가 참인 경우 Anthos On-Prem API로 사용자 클러스터를 관리합니다.
클러스터는 Anthos On-Prem API가 클러스터를 관리하도록 자동으로 구성하는 Google Cloud 콘솔에서 생성되었습니다.
gkectl enroll cluster
명령어는 Anthos On-Prem API에서 관리하도록 구성되는 사용자 클러스터에서 실행되었습니다.
Anthos On-Prem API가 사용자 클러스터를 관리하는 경우 Google Cloud 콘솔을 사용하여 노드 풀을 관리할 수 있습니다. 사용자 클러스터가 Anthos On-Prem API로 관리되지 않는 경우에는 관리자 워크스테이션의 명령줄에서 gkectl
을 사용하여 노드 풀을 관리합니다.
노드 풀 추가하기
Google Cloud 콘솔에서 클러스터를 만든 경우 Google Cloud 콘솔을 사용하여 노드 풀을 추가할 수 있습니다. 그러나 명령줄을 사용하여 다음 노드 풀 설정을 구성해야 합니다.
- OS 이미지 유형을 위한 Windows
- vSphere Datastore
vSphere 태그 노드 풀의 모든 VM에 태그를 연결하려면 vCenter 사용자 계정에 다음과 같은 vSphere 태그 권한이 있어야 합니다.
- vSphere Tagging.vSphere 태그 할당 또는 할당 해제
- vSphere Tagging.객체에 vSphere 태그 할당 또는 할당 해제 (vSphere 7)
다른 노드 풀을 추가하기 전에 클러스터에 사용 가능한 IP 주소가 충분한지 확인하세요.
콘솔
Google Cloud 콘솔에서 Anthos 클러스터 페이지로 이동합니다.
사용자 클러스터가 있는 Google Cloud 프로젝트를 선택합니다.
클러스터 목록에서 클러스터 이름을 클릭한 다음 세부정보 패널에서 세부정보 보기를 클릭합니다.
노드 풀 추가를 클릭합니다.
노드 풀을 구성합니다.
- 노드 풀 이름을 입력합니다.
- 풀에 있는 각 노드의 vCPU 수를 입력합니다. 사용자 클러스터 작업자당 최소 4개입니다.
- 풀의 각 노드에 대한 메모리 크기를 메비바이트(MiB) 단위로 입력합니다(사용자 클러스터 워커 노드당 최소 8,192MiB이며 4의 배수여야 함).
- 노드 필드에 풀의 노드 수를 입력합니다(최솟값 3).
OS 이미지 유형(Ubuntu Containerd, Ubuntu, COS)을 선택합니다.
부팅 디스크 크기를 기비바이트(GiB)로 입력합니다(기본값은 40GiB).
노드 풀 메타데이터(선택사항) 섹션에서 Kubernetes 라벨 및 taint를 추가하려면 다음 안내를 따르세요.
- + Kubernetes 라벨 추가를 클릭합니다. 라벨의 키 및 값을 입력합니다. 필요한 경우 반복합니다.
- + taint 추가를 클릭합니다. taint의 키, 값, 효과를 입력합니다. 필요한 경우 반복합니다.
만들기를 클릭합니다.
Google Cloud console에 클러스터 상태: 진행 중인 변경사항이 표시됩니다. 세부정보 표시를 클릭하여 리소스 상태 조건 및 상태 메시지를 확인합니다.
명령줄
사용자 클러스터 구성 파일에서
nodePools
섹션을 채웁니다.다음 필드를 지정해야 합니다.
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
다음 필드는 선택사항입니다.
nodePools[i].bootDiskSizeGB
또는nodePools[i].osImageType
을 포함하지 않으면 기본값이 사용됩니다.nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
다음 명령어를 실행합니다.
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
다음을 바꿉니다.
[ADMIN_CLUSTER_KUBECONFIG]
를 관리자 클러스터의 kubeconfig 파일 경로로 바꿉니다.[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
노드 풀 업데이트
명령줄을 사용하여 사용자 클러스터 구성 파일의 nodePools
섹션에서 모든 필드를 업데이트할 수 있습니다. 현재까지 Google Cloud 콘솔을 사용하여 업데이트할 수 있는 유일한 노드 풀 필드는 다음과 같습니다.
- 복제본 수
- 메모리
- vCPU 수
복제본 수를 늘리면 VMware용 Anthos 클러스터가 사용자 클러스터에 필요한 역할 수를 추가하고 복제본 수를 줄이면 노드가 삭제됩니다. 노드 풀의 복제본 수를 변경해도 워크로드는 중단되지 않습니다. 복제본 수를 늘릴 경우 IP 주소를 사용할 수 있는지 확인합니다.
노드 풀 필드를 업데이트하면 클러스터에서 순차적 업데이트가 트리거됩니다. 순차적 업데이트에서 VMware용 Anthos 클러스터는 새 노드를 만든 후 이전 노드를 삭제합니다. 이 프로세스는 모든 이전 노드가 새 노드로 바뀔 때까지 계속됩니다. 이 프로세스는 다운타임을 일으키지 않지만 업데이트 중 사용할 수 있는 추가 IP 주소가 클러스터에 있어야 합니다.
업데이트가 끝나면 노드 풀에 노드가 N개 있다고 가정합니다. 그러면 해당 풀의 노드에 사용할 수 있는 IP 주소가 N+1개 이상 있어야 합니다. 즉, 하나 이상의 풀에 노드를 추가하여 클러스터 크기를 조절할 경우 크기 조절이 끝났을 때 모든 클러스터의 총 노드 수보다 하나 이상 많은 IP 주소가 있어야 합니다. 자세한 내용은 사용 가능한 IP 주소가 충분한지 확인을 참조하세요.
사용자 클러스터에서 노드 풀을 업데이트하려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔에서 Anthos 클러스터 페이지로 이동합니다.
사용자 클러스터가 있는 Google Cloud 프로젝트를 선택합니다.
클러스터 목록에서 클러스터 이름을 클릭한 다음 세부정보 패널에서 세부정보 보기를 클릭합니다.
노드 탭을 클릭합니다.
수정할 노드 풀의 이름을 클릭합니다.
수정하려는 필드 옆에서
수정을 클릭하고 완료를 클릭합니다.을 클릭하여 이전 페이지로 돌아갑니다.
Google Cloud console에 클러스터 상태: 진행 중인 변경사항이 표시됩니다. 세부정보 표시를 클릭하여 리소스 상태 조건 및 상태 메시지를 확인합니다.
명령줄
사용자 클러스터 구성 파일의
nodePools
섹션에서 변경하려는 필드 값을 수정합니다.클러스터를 업데이트합니다.
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
다음을 바꿉니다.
[ADMIN_CLUSTER_KUBECONFIG]
를 관리자 클러스터의 kubeconfig 파일 경로로 바꿉니다.[USER_CLUSTER_CONFIG]
을 사용자 클러스터 구성 파일의 경로로 바꿉니다.
노드 풀에 사용되는 osImageType
업데이트
다른 osImageType
을 사용하도록 노드 풀을 업데이트하려면 명령줄을 사용해야 합니다. 노드 풀에 사용되는 osImageType
을 변경하려면 다음 예시에 표시된 것처럼 노드 풀에 대해 구성 파일을 업데이트하고 gkectl update cluster
를 실행합니다.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
변경사항 확인
노드 풀이 의도한 대로 생성되었거나 업데이트되었는지 확인하려면 클러스터 노드를 검사합니다.
콘솔
Google Cloud 콘솔에서 Anthos 클러스터 페이지로 이동합니다.
사용자 클러스터가 있는 Google Cloud 프로젝트를 선택합니다.
클러스터 목록에서 클러스터 이름을 클릭한 다음 세부정보 패널에서 세부정보 보기를 클릭합니다.
노드 탭을 클릭합니다.
보려는 노드 풀 이름을 클릭합니다.
명령줄
다음 명령어를 실행합니다.
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
변경사항을 되돌려야 한다면 클러스터 구성 파일을 수정하고 gkectl update cluster
를 실행합니다.
노드 풀 삭제
노드 풀을 삭제할 수 있지만 사용자 클러스터에 노드 풀이 하나 이상 있어야 합니다. 노드 풀을 삭제하면 해당 노드의 워크로드 실행 여부에 관계없이 풀의 노드가 즉시 삭제됩니다.
사용자 클러스터에서 노드 풀을 삭제하려면 다음 안내를 따르세요.
콘솔
영향을 받는 노드에서 실행 중인 워크로드가 없는지 확인합니다.
Google Cloud 콘솔에서 Anthos 클러스터 페이지로 이동합니다.
사용자 클러스터가 있는 Google Cloud 프로젝트를 선택합니다.
클러스터 목록에서 클러스터 이름을 클릭한 다음 세부정보 패널에서 세부정보 보기를 클릭합니다.
노드 탭을 클릭합니다.
삭제할 노드 풀의 이름을 클릭합니다.
삭제를 클릭합니다.
을 클릭하여 이전 페이지로 돌아갑니다.
Google Cloud console에 클러스터 상태: 진행 중인 변경사항이 표시됩니다. 세부정보 표시를 클릭하여 리소스 상태 조건 및 상태 메시지를 확인합니다.
명령줄
영향을 받는 노드에서 실행 중인 워크로드가 없는지 확인합니다.
사용자 클러스터 구성 파일의
nodePools
섹션에서 정의를 삭제합니다.클러스터를 업데이트합니다.
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
다음을 바꿉니다.
[ADMIN_CLUSTER_KUBECONFIG]
를 관리자 클러스터의 kubeconfig 파일 경로로 바꿉니다.[USER_CLUSTER_CONFIG]
을 사용자 클러스터 구성 파일의 경로로 바꿉니다.
문제 해결
일반적으로
gkectl update cluster
명령어는 실패 시 세부정보를 제공합니다. 명령어가 성공했지만 노드가 표시되지 않으면 클러스터 문제 진단 가이드를 따라 문제를 해결할 수 있습니다.노드 풀 생성 또는 업데이트 중에 사용 가능한 IP 주소 부족과 같이 클러스터 리소스가 부족하면 발생할 수 있습니다. IP 주소를 사용할 수 있는지 확인하는 방법에 대한 자세한 내용은 사용자 클러스터 크기 조절 주제를 참조하세요.
일반 문제 해결 가이드를 검토할 수도 있습니다.
Creating node MachineDeployment(s) in user cluster…
이후로 더 이상 진행하지 않습니다.사용자 클러스터에서 노드 풀을 만들거나 업데이트하는 데 시간이 걸릴 수 있습니다. 하지만 대기 시간이 매우 길어 문제가 있다고 의심되는 경우에는 다음 명령어를 실행하면 됩니다.
kubectl get nodes
를 실행하여 노드 상태를 가져옵니다.- 사용할 수 없는 노드에는
kubectl describe node NODE_NAME
을 실행하여 세부정보를 가져옵니다.