클러스터 업그레이드

새 버전의 bmctl을 설치하면 이전 버전으로 생성된 기존 클러스터를 업그레이드할 수 있습니다. 클러스터를 최신 베어메탈용 GKE 버전으로 업그레이드하면 클러스터에 추가 기능 및 수정 사항이 적용됩니다. 또한 클러스터가 지원 상태로 유지됩니다. bmctl upgrade cluster 명령어나 kubectl을 사용하여 관리자, 하이브리드, 독립형, 사용자 클러스터를 업그레이드할 수 있습니다.

베어메탈용 GKE 버전 1.15.0부터 자체 관리형(관리자, 하이브리드 또는 독립형) 클러스터의 기본 업그레이드 동작은 인플레이스 업그레이드입니다. 인플레이스 업그레이드는 부트스트랩 클러스터 대신 수명 주기 컨트롤러를 사용하여 전체 업그레이드 프로세스를 관리합니다. 이 변경사항 덕분에 프로세스가 간소화되고 리소스 요구사항이 줄어 클러스터 업그레이드의 안정성과 확장성이 향상됩니다.

업그레이드 프로세스에 대한 자세한 내용은 클러스터 업그레이드 수명 주기 및 단계를 참조하세요.

업그레이드 고려사항

이 섹션에는 클러스터를 업그레이드하기 전에 고려해야 하는 정보와 해당 링크가 포함되어 있습니다.

권장사항

베어메탈용 Anthos 클러스터의 클러스터 업그레이드 권장사항에서 클러스터 업그레이드를 준비하는 데 도움이 될 정보를 참조하세요.

프리플라이트 검사 업그레이드

실행 전 검사는 클러스터 업그레이드의 일부로 실행되어 클러스터 상태와 노드 상태의 유효성을 검사합니다. 실행 전 검사가 실패하면 클러스터 업그레이드가 진행되지 않습니다. 실행 전 검사에 대한 자세한 내용은 실행 전 검사 이해를 참조하세요.

업그레이드를 실행하기 전 실행 전 검사를 실행하여 클러스터의 업그레이드 준비 상태를 확인할 수 있습니다. 자세한 내용은 업그레이드를 위한 실행 전 검사를 참조하세요.

알려진 문제

클러스터 업그레이드와 관련된 잠재적 문제에 대한 자세한 내용은 베어메탈용 Anthos 클러스터 알려진 문제를 참조하고 업그레이드 및 업데이트 문제 카테고리를 선택하세요.

관리자, 독립형, 하이브리드, 사용자 클러스터 업그레이드

이 섹션에는 클러스터 업그레이드에 대한 안내가 포함되어 있습니다.

bmctl

bmctl의 새 버전을 다운로드하여 설치하면 이전 버전으로 만든 관리자, 하이브리드, 독립형, 사용자 클러스터를 업그레이드할 수 있습니다. bmctl의 특정 버전에서는 클러스터를 동일한 버전으로만 업그레이드할 수 있습니다.

  1. 베어메탈용 GKE 다운로드의 설명대로 최신 bmctl을 다운로드합니다.

  2. 클러스터 구성 파일의 anthosBareMetalVersion을 업그레이드 대상 버전으로 업데이트합니다.

    업그레이드 대상 버전은 다운로드한 bmctl 파일의 버전과 일치해야 합니다. 다음 클러스터 구성 파일 스니펫은 최신 버전으로 업데이트된 anthosBareMetalVersion 필드를 보여줍니다.

    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      type: admin
      # Anthos cluster version.
      anthosBareMetalVersion: 1.15.11
    
  3. bmctl upgrade cluster 명령어를 사용하여 업그레이드를 완료합니다.

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig ADMIN_KUBECONFIG
    

    다음을 바꿉니다.

    • CLUSTER_NAME: 업그레이드할 클러스터의 이름
    • ADMIN_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로

    클러스터 업그레이드 작업에서는 프리플라이트 검사를 실행하여 클러스터 상태와 노드 상태를 검증합니다. 프리플라이트 검사가 실패하면 클러스터 업그레이드가 진행되지 않습니다. 문제 해결 정보는 클러스터 설치 또는 업그레이드 문제 해결을 참조하세요.

    모든 클러스터 구성요소가 성공적으로 업그레이드되면 클러스터 업그레이드 작업이 클러스터 상태 점검을 수행합니다. 이 마지막 단계를 통해 클러스터가 정상 작동 상태인지 확인합니다. 클러스터가 모든 상태 점검을 통과하지 못하면 통과할 때까지 계속 실행됩니다. 모든 상태 점검을 통과하면 업그레이드가 성공적으로 완료됩니다.

    클러스터 업그레이드 이벤트 시퀀스에 대한 자세한 내용은 클러스터 업그레이드 수명 주기 및 단계를 참조하세요.

kubectl

kubectl로 클러스터를 업그레이드하려면 다음 단계를 수행합니다.

  1. 클러스터 구성 파일을 수정하여 anthosBareMetalVersion을 업그레이드 대상 버전으로 설정합니다.

  2. 업그레이드를 시작하려면 다음 명령어를 실행합니다.

    kubectl apply -f CLUSTER_CONFIG_PATH
    

    CLUSTER_CONFIG_PATH를 수정된 클러스터 구성 파일의 경로로 바꿉니다.

bmctl을 사용하는 업그레이드 프로세스와 마찬가지로 프리플라이트 검사는 클러스터 업그레이드의 일부로 실행되어 클러스터 상태와 노드 상태를 검증합니다. 프리플라이트 검사가 실패하면 클러스터 업그레이드가 중단됩니다. 부트스트랩 클러스터가 생성되지 않으므로 실패를 해결하려면 클러스터 및 관련 로그를 검사합니다. 자세한 내용은 클러스터 설치 또는 업그레이드 문제 해결을 참조하세요.

kubectl로 업그레이드하는 데 최신 버전의 bmctl이 필요하지는 않지만 최신 bmctl을 다운로드하는 것이 좋습니다. 클러스터가 정상 작동을 유지할 수 있도록 상태 점검 및 백업과 같은 다른 태스크를 수행하려면 bmctl이 필요합니다.

동시 업그레이드

일반적인 기본 클러스터 업그레이드에서는 각 클러스터 노드가 한 번에 하나씩 순차적으로 업그레이드됩니다. 이 섹션에서는 클러스터를 업그레이드할 때 여러 노드가 동시에 업그레이드되도록 클러스터 및 워커 노드 풀을 구성하는 방법을 보여줍니다. 노드를 동시에 업그레이드하면 특히 수백 개의 노드가 포함된 클러스터의 경우 클러스터 업그레이드 속도가 크게 빨라집니다.

클러스터 업그레이드 속도를 높이는 데 사용할 수 있는 동시 업그레이드 전략에는 두 가지가 있습니다.

  • 동시 노드 업그레이드: 여러 노드가 동시에 업그레이드되도록 워커 노드 풀을 구성할 수 있습니다. 노드의 동시 업그레이드는 NodePool 사양(spec.upgradeStrategy.parallelUpgrade)에서 구성되며 워커 노드 풀의 노드만 동시에 업그레이드할 수 있습니다. 제어 영역 또는 부하 분산기 노드 풀의 노드는 한 번에 하나씩만 업그레이드할 수 있습니다. 자세한 내용은 노드 업그레이드 전략을 참조하세요.

  • 동시 노드 풀 업그레이드: 여러 노드 풀이 동시에 업그레이드되도록 클러스터를 구성할 수 있습니다. 워커 노드 풀만 동시에 업그레이드할 수 있습니다. 제어 영역 및 부하 분산기 노드 풀은 한 번에 하나씩만 업그레이드할 수 있습니다. 여러 노드 풀을 동시에 업그레이드하는 기능은 공개 미리보기 버전에서 사용할 수 있습니다. 자세한 내용은 노드 풀 업그레이드 전략을 참조하세요.

노드 업그레이드 전략

여러 노드가 동시에 업그레이드되도록 워커 노드 풀을 구성할 수 있습니다(concurrentNodes). 업그레이드 프로세스 동안 워크로드를 실행할 수 있는 노드 수의 최소 기준점을 설정할 수도 있습니다(minimumAvailableNodes). 이 구성은 NodePool 사양에서 지정합니다. 이러한 필드에 대한 자세한 내용은 클러스터 구성 필드 참조를 확인하세요.

노드 업그레이드 전략은 워커 노드 풀에만 적용됩니다. 제어 영역 또는 부하 분산기 노드 풀에 노드 업그레이드 전략을 지정할 수 없습니다. 클러스터 업그레이드 중에 제어 영역과 부하 분산기 노드 풀의 노드는 한 번에 하나씩 순차적으로 업그레이드됩니다. 제어 영역 노드 풀과 부하 분산기 노드 풀은 클러스터 사양(controlPlane.nodePoolSpec.nodesloadBalancer.nodePoolSpec.nodes)에 지정됩니다.

노드의 동시 업그레이드를 구성할 때는 다음 제한사항에 유의하세요.

  • concurrentNodes 값은 노드 풀에 있는 노드 수의 20% 또는 10개 중 더 적은 값을 초과할 수 없습니다. 예를 들어 노드 풀에 노드가 40개 있으면 8보다 큰 값을 지정할 수 없습니다. 노드 풀에 노드가 100개 있으면 지정 가능한 최댓값은 10입니다.

  • concurrentNodes와 함께 minimumAvailableNodes를 사용하는 경우 결합된 값이 노드 풀의 총 노드 수를 초과할 수 없습니다. 예를 들어 노드 풀에 노드가 20개 있고 minimumAvailableNodes가 18로 설정된 경우 concurrentNodes는 2를 초과할 수 없습니다. 마찬가지로 concurrentNodes가 10으로 설정되면 minimumAvailableNodes는 10을 초과할 수 없습니다.

다음 예시는 노드가 10개인 워커 노드 풀 np1을 보여줍니다. 업그레이드 한 번에 노드가 2개씩 업그레이드되며 업그레이드를 진행하려면 최소 5개의 노드를 계속 사용할 수 있어야 합니다.

apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
  name: np1
  namespace: cluster-cluster1
spec:
  clusterName: cluster1
  nodes:
  - address:  10.200.0.1
  - address:  10.200.0.2
  - address:  10.200.0.3
  - address:  10.200.0.4
  - address:  10.200.0.5
  - address:  10.200.0.6
  - address:  10.200.0.7
  - address:  10.200.0.8
  - address:  10.200.0.9
  - address:  10.200.0.10 
  upgradeStrategy:
    parallelUpgrade:
      concurrentNodes: 2
      minimumAvailableNodes: 5 

노드 풀 업그레이드 전략

여러 워커 노드 풀이 동시에 업그레이드되도록 클러스터를 구성할 수 있습니다. 클러스터 사양의 nodePoolUpgradeStrategy.concurrentNodePools 불리언 필드는 클러스터의 모든 워커 노드 풀을 동시에 업그레이드할지 여부를 지정합니다. 기본적으로(1) 노드 풀은 하나씩 순차적으로 업그레이드됩니다. concurrentNodePools0으로 설정하면 클러스터의 모든 워커 노드 풀이 동시에 업그레이드됩니다.

제어 영역과 부하 분산 노드 풀은 이 설정의 영향을 받지 않습니다. 이러한 노드 풀은 항상 한 번에 하나씩 순차적으로 업그레이드됩니다. 제어 영역 노드 풀과 부하 분산기 노드 풀은 클러스터 사양(controlPlane.nodePoolSpec.nodesloadBalancer.nodePoolSpec.nodes)에 지정됩니다.

모든 워커 노드 풀을 동시에 업그레이드하는 기능은 미리보기 버전에서만 사용할 수 있습니다. 프로덕션 클러스터에서는 이 기능을 사용하지 마세요.

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  ...
  nodePoolUpgradeStrategy:
    concurrentNodePools: 0
  ...

동시 업그레이드 수행 방법

이 섹션에서는 동시 업그레이드를 위해 클러스터 및 워커 노드 풀을 구성하는 방법을 설명합니다.

워커 노드 풀과 워커 노드 풀의 노드를 동시에 업그레이드하려면 다음을 수행합니다.

  1. NodePool 사양에 upgradeStrategy 섹션을 추가합니다.

    클러스터를 업데이트할 때 이 매니페스트를 별도로 또는 클러스터 구성 파일의 일부로 적용할 수 있습니다.

    예를 들면 다음과 같습니다.

    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: NodePool
    metadata:
      name: np1
      namespace: cluster-ci-bf8b9aa43c16c47
    spec:
      clusterName: ci-bf8b9aa43c16c47
      nodes:
      - address:  10.200.0.1
      - address:  10.200.0.2
      - address:  10.200.0.3
      ...
      - address:  10.200.0.30
      upgradeStrategy:
        parallelUpgrade:
          concurrentNodes: 5
          minimumAvailableNodes: 10
    

    이 예시에서 concurrentNodes 필드 값은 5입니다. 즉, 5개 노드가 동시에 업그레이드됩니다. minimumAvailableNodes 필드는 10으로 설정됩니다. 즉, 업그레이드 중에 워크로드에 10개 이상의 노드를 계속 사용할 수 있어야 합니다.

  2. 클러스터 구성 파일의 클러스터 사양에 nodePoolUpgradeStrategy 섹션을 추가합니다.

    ---
    apiVersion: v1
    kind: Namespace
    metadata:
      name: cluster-user001
    ---
    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: user001
      namespace: cluster-user001
    spec:
      type: user
      profile: default
      anthosBareMetalVersion: 1.15.0
      ...
      nodePoolUpgradeStrategy:
        concurrentNodePools: 0
      ...
    

    이 예시에서는 concurrentNodePools 필드가 0으로 설정되었습니다. 즉, 클러스터 업그레이드 중에 모든 워커 노드 풀이 동시에 업그레이드됩니다. 노드 풀에 있는 노드의 업그레이드 전략은 NodePool 사양에 정의되어 있습니다.

  3. 이전 관리자, 독립형, 하이브리드, 사용자 클러스터 업그레이드 섹션에 설명된 대로 클러스터를 업그레이드합니다.

노드 동시 업그레이드 사용 중지 방법

동시 업그레이드는 기본적으로 중지되어 있으며, 동시 업그레이드와 관련된 필드는 변경할 수 있습니다. 언제든지 필드를 삭제하거나 기본값으로 설정하여 후속 업그레이드 전에 기능을 중지할 수 있습니다.

다음 표에는 동시 업그레이드 필드와 기본값이 나와 있습니다.

필드 기본값 의미
nodePoolUpgradeStrategy.concurrentNodePools(클러스터 사양) 1 워커 노드 풀을 하나씩 순차적으로 업그레이드합니다.
upgradeStrategy.parallelUpgrade.concurrentNodes(NodePool 사양) 1 노드를 하나씩 순차적으로 업그레이드합니다.
upgradeStrategy.parallelUpgrade.minimumAvailableNodes(NodePool 사양) 0 업그레이드 중에 노드를 사용 가능하도록 해야 할 필요는 없습니다.