이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터에서 컨트롤 플레인의 IP 순환을 수행하는 방법을 설명합니다.
이 페이지를 읽기 전에 사용자 인증 정보 순환을 숙지해야 합니다. IP 순환을 포함하는 사용자 인증 정보 순환을 실행하는 것이 좋습니다. 하지만 전체 사용자 인증 정보 순환을 수행할 수 없는 경우 독립형 IP 순환을 실행해야 할 수 있습니다.
이 페이지는 GKE에서 클러스터 수명 주기를 유지보수하는 보안 전문가를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 태스크를 참조하세요.
시작하기 전에
시작하기 전에 다음 태스크를 수행했는지 확인합니다.
- Google Kubernetes Engine API를 사용 설정합니다. Google Kubernetes Engine API 사용 설정
- 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화하세요. 이전에 gcloud CLI를 설치한 경우
gcloud components update
를 실행하여 최신 버전을 가져옵니다.
IP 순환 수행
IP 순환은 여러 단계로 이루어진 프로세스입니다.
- IP 순환을 시작하면 컨트롤 플레인이 원래 IP 주소 외에 새 IP 주소도 제공하기 시작합니다.
- GKE는 유지보수 가용성을 고려하여 새 IP 주소를 사용하도록 노드 풀을 다시 만듭니다. 또한 노드가 이미 실행된 동일한 GKE 버전으로 노드 풀 버전 업그레이드를 수행하여 노드 풀을 수동으로 재생성할 수 있습니다.
- 순환을 시작한 후에는 새 IP 주소를 통해 컨트롤 플레인과 통신하도록 클러스터의 API 클라이언트(예:
kubectl
명령줄 인터페이스를 사용하는 개발 머신)를 업데이트해야 합니다. - 순환이 완료되면 컨트롤 플레인이 이전 IP 주소를 통한 트래픽 처리를 중지합니다.
IP 주소 순환을 시작하면 GKE가 유지보수 가용성을 고려하여 노드를 자동으로 재생성합니다.Google Cloud Next와 같은 주요 이벤트 중에는 중단이 발생하지 않도록 GKE에서 자동 노드 재생성을 일시중지할 수 있습니다. 유지보수 가용성이 IP 순환에 미치는 영향과 순환 단계에서 클러스터에 발생하는 서비스 중단 유형에 관한 자세한 내용은 노드 업그레이드 전략을 사용하고 유지보수 정책을 준수하여 노드를 다시 만드는 수동 변경사항 표의 IP 순환 행을 참조하세요. GKE는 노드를 업데이트하는 데 리소스 가용성을 사용합니다. 노드 업데이트에 대한 자세한 내용은 노드 업데이트 중단 계획을 참조하세요.
시작한 지 7일 이내에 IP 주소 순환을 완료하지 않으면 GKE가 대신 순환을 완료하려고 시도합니다. 클러스터의 노드에 이전 IP 주소가 계속 사용되는 경우 자동 완료 작업이 실패하지만 GKE는 노드가 다시 만들어지고 작업이 완료될 때까지 계속 완료를 시도합니다.
순환을 시작한 후 IP 주소 순환을 수동으로 추적하고 완료하도록 계획해야 합니다. 언제든지 유지보수 사용 가능 여부를 재정의하고 특정 단계를 수동으로 트리거하여 사용자 인증 정보 순환을 완료할 수 있습니다. 항상 완벽한 것이 아니므로 자동 완성에만 의존하지 마십시오.
순환 시작
IP 순환을 시작하려면 다음 명령어를 실행합니다.
gcloud container clusters update CLUSTER_NAME \ --start-ip-rotation
CLUSTER_NAME
을 클러스터 이름으로 바꿉니다.출력은 다음과 비슷합니다.
This will start an IP Rotation on cluster CLUSTER_NAME. The master will be updated to serve on a new IP address in addition to the current IP address. Google Kubernetes Engine will then schedule recreation of all nodes to point to the new IP address. If maintenance window is used, nodes are not recreated until a maintenance window occurs. See documentation on how to manually update nodes. This operation is long-running and will block other operations on the cluster (including delete) until it has run to completion. Do you want to continue (Y/n)?
이 명령어는 제어 영역에서 원래 주소와 새 주소 등 IP 주소 두 개를 제공하도록 구성합니다.
순환을 확인하고 작업이 완료될 수 있도록 셸을 열어 둡니다.
노드 다시 만들기
새 IP 주소로 제공하도록 API 서버를 재구성한 후 GKE가 새 IP 주소를 사용하도록 노드를 자동으로 업데이트합니다. GKE는 모든 노드를 지원되는 가장 가까운 노드 버전으로 업그레이드하여 노드를 다시 만듭니다. 자세한 내용은 노드 풀 업그레이드를 참조하세요.
기본적으로 GKE는 작업을 시작한 후 7일 내에 IP 주소 순환을 자동으로 완료합니다. 클러스터의 활성 유지보수 기간 또는 제외로 인해 GKE가 이 7일 동안 일부 노드를 다시 만들지 못하는 경우 IP 주소 순환이 처음에는 완료되지 않습니다. 그러나 GKE는 유지보수 가능 여건이 조성될 때까지 노드를 다시 만들고 순환을 완료하려고 계속 시도합니다.
순환 실패의 원인이 될 수 있는 유지보수 제외 또는 유지보수 기간을 사용하는 경우 클러스터를 수동 업그레이드하여 노드를 강제로 다시 만듭니다.
gcloud container clusters upgrade CLUSTER_NAME \ --location=CONTROL_PLANE_LOCATION \ --cluster-version=VERSION
VERSION
을 클러스터에서 이미 사용 중인 동일한 GKE 버전으로 바꾸세요.자세한 내용은 GKE 유지보수 정책을 준수하는 자동 유지보수를 참조하세요.
노드 풀 재생성 진행 상황 확인
순환 작업을 모니터링하려면 다음 명령어를 실행합니다.
gcloud container operations list \ --filter="operationType=UPGRADE_NODES AND status=RUNNING" \ --format="value(name)"
이 명령어는 노드 업그레이드 작업의 작업 ID를 반환합니다.
작업을 폴링하려면 작업 ID를 다음 명령어에 전달합니다.
gcloud container operations wait OPERATION_ID
노드 풀이 하나씩 다시 생성되고 각 노드 풀에 고유한 작업이 포함됩니다. 노드 풀이 여럿인 경우, 다음 안내에 따라 각 작업을 폴링합니다.
API 클라이언트 업데이트
IP 순환을 시작한 후에는 새 IP 주소를 가리키도록 클러스터 외부의 모든 API 클라이언트(예: 개발자 머신의 kubectl
)를 업데이트해야 합니다.
API 클라이언트를 업데이트하려면 각 클라이언트에 다음 명령어를 실행합니다.
gcloud container clusters get-credentials CLUSTER_NAME
하드코딩된 IP 주소 및 방화벽 규칙 업데이트
사용자 환경에서 컨트롤 플레인의 IP 주소를 하드코딩했거나 컨트롤 플레인의 IP 주소를 타겟팅하는 방화벽 규칙이 있는 경우 주소를 새 IP 주소로 업데이트합니다. 애플리케이션 및 방화벽 규칙에서 IP 주소를 업데이트하지 않고 순환을 완료하면 GKE가 이전 컨트롤 플레인 IP 주소 제공을 중지할 때 해당 리소스에 중단이 발생할 수 있습니다.
순환 완료
클러스터 외부에서 API 클라이언트를 업데이트한 후 순환을 완료하여 컨트롤 플레인에서 새 IP 주소만 제공하도록 구성합니다.
순환을 완료하려면 다음 명령어를 실행하세요.
gcloud container clusters update CLUSTER_NAME \
--complete-ip-rotation
출력은 다음과 비슷합니다.
This will complete the in-progress IP Rotation on cluster CLUSTER_NAME.
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project PROJECT_ID --region COMPUTE_REGION
CLUSTER_NAME`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.
IP 주소 순환이 완료되지 않고 다음과 유사한 오류 메시지가 반환되면 오류 400: 노드 풀 다시 만들기 필요를 참조하세요.
ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.
시작한 지 7일 이내에 IP 주소 순환을 완료하지 않으면 GKE가 대신 순환을 완료하려고 시도합니다. 클러스터의 노드에 이전 IP 주소가 계속 사용되는 경우(노드가 다시 생성되지 못하도록 하는 유지보수 가용성 및 관련 제약조건으로 인한 것일 수 있음) 자동 완료가 실패하지만 노드가 다시 생성되고 작업이 완료될 때까지 GKE는 계속 완료를 시도합니다.