이 페이지에서는 Compute Engine 가상 머신(VM)에서 베어메탈용 GKE 사용자 클러스터와 관리자 클러스터를 만드는 방법을 보여줍니다. 제공된 스크립트는 관리자 및 사용자 클러스터에 사용되는 Compute Engine VM과 관리자 워크스테이션을 만듭니다.
관리자 워크스테이션은 설치 중 클러스터를 프로비저닝하는 명령줄 인터페이스(CLI) 도구와 구성 파일 및 설치 후 프로비저닝된 클러스터와 상호작용하는 CLI 도구를 호스팅합니다. 이 스크립트는 관리자 워크스테이션 VM에 CLI 도구를 설치합니다.
사용자 클러스터는 컨테이너화된 워크로드를 실행하는 Kubernetes 클러스터입니다. 제어 영역 노드와 워커 노드로 구성됩니다. 사용자 클러스터에는 사용자 워크로드를 실행하는 하나 이상의 워커 노드가 포함되어야 합니다. 관리자 클러스터는 하나 이상의 사용자 클러스터를 관리하는 Kubernetes 클러스터이며, 사용자 클러스터 만들기, 업데이트, 삭제에 도움을 줍니다. 관리자 클러스터는 제어 영역 노드만으로 구성됩니다. 자세한 내용은 관리자 및 사용자 클러스터 개발을 참조하세요.
이 스크립트는 VM 간에 가상 확장 가능 LAN(VXLAN)을 구성하고 클러스터 만들기를 위해 VM을 준비합니다. 선택적으로 스크립트로 관리자 클러스터를 만들거나 직접 관리자 클러스터 만들기를 선택해서 베어메탈용 GKE가 관리자 클러스터를 만들기 위해 제공하는 도구를 알아볼 수 있습니다.
제공된 스크립트를 사용하면 하드웨어를 준비할 필요 없이 베어메탈용 GKE를 빠르게 사용해 볼 수 있습니다. 이 페이지의 단계를 완료하면 Compute Engine에서 실행되는 작동되는 베어메탈용 GKE 테스트 환경이 제공됩니다.
GKE On-Prem API란?
GKE On-Prem API는 Terraform 및 표준 Google Cloud 애플리케이션을 사용하여 온프레미스 클러스터의 수명 주기를 관리할 수 있게 해주는 Google Cloud 호스팅 API입니다. GKE On-Prem API는 Google Cloud 인프라에서 실행됩니다. Terraform, 콘솔 및 gcloud CLI는 API의 클라이언트이며 API를 사용하여 데이터 센터에 클러스터를 만듭니다.
클러스터의 수명 주기를 관리하려면 GKE On-Prem API가 클러스터를 만들 때 지정한 Google Cloud 리전을 사용하여 클러스터 상태에 대한 메타데이터를 Google Cloud에 저장해야 합니다. 이 메타데이터를 사용하면 API에서 클러스터 수명 주기를 관리할 수 있으며 워크로드별 데이터는 포함되지 않습니다.
GKE On-Prem API 클라이언트를 사용하여 클러스터를 만든 경우 Google Cloud 프로젝트를 지정합니다. 클러스터가 생성되면 지정된 프로젝트의 Fleet에 자동으로 등록됩니다. 이 프로젝트를 Fleet 호스트 프로젝트라고 합니다. 클러스터를 만든 후에는 Fleet 호스트 프로젝트를 변경할 수 없습니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 이 페이지의 스크립트 및 명령어에 사용되는 환경 변수를 설정하기 위해 필요하므로 프로젝트 ID를 기록해 둡니다. 기존 프로젝트를 선택한 경우 프로젝트 소유자 또는 편집자인지 확인하세요.
-
Cloud Shell 또는 Linux나 macOS를 실행하는 로컬 머신에서 스크립트를 실행할 수 있습니다. Cloud Shell을 사용하지 않는 경우:
- Google Cloud와의 상호작용을 위한 명령줄 도구인 최신 Google Cloud CLI가 설치되어 있는지 확인합니다. 필요한 경우 gcloud CLI 구성요소를 업데이트합니다.
gcloud components update
gcloud CLI가 설치된 방법에 따라 다음 메시지를 참조할 수 있습니다. 'gcloud CLI 구성요소 관리자가 이 설치에 대해 사용 중지되었기 때문에 이 작업을 수행할 수 없습니다. 다음 명령어를 실행하여 이 설치에 대해 동일한 결과를 얻을 수 있습니다.' 구성요소를 업데이트하려면 안내에 따라 명령어를 복사하여 붙여넣습니다.
kubectl
이 설치되어 있는지 확인합니다.kubectl
를 설치해야 하는 경우 다음 명령어를 실행합니다.gcloud components install kubectl
- Google Cloud와의 상호작용을 위한 명령줄 도구인 최신 Google Cloud CLI가 설치되어 있는지 확인합니다. 필요한 경우 gcloud CLI 구성요소를 업데이트합니다.
VM 인프라와 선택적인 관리자 클러스터 만들기
스크립트를 설정하고 실행하려면 다음 단계를 수행하세요. 다운로드하여 실행하는 스크립트는 anthos-samples 저장소에서 생성됩니다. 스크립트를 실행하기 전에 자세히 알아보려면 다음 섹션인 스크립트 정보를 참조하세요.
환경 변수를 설정합니다.
export PROJECT_ID=PROJECT_ID export ADMIN_CLUSTER_NAME=ADMIN_CLUSTER_NAME export ON_PREM_API_REGION=ON_PREM_API_REGION export ZONE=ZONE
ON_PREM_API_REGION
: GKE On-Prem API가 실행되고 메타데이터를 저장하는 Google Cloud 리전입니다.us-central1
또는 다른 지원되는 리전을 지정합니다.ZONE
: Compute Engine VM이 생성되는 Google Cloud 영역입니다.us-central1-a
또는 다른 모든 Compute Engine 영역을 사용할 수 있습니다.
기본 프로젝트 및 영역을 설정합니다.
gcloud config set project $PROJECT_ID gcloud config set compute/zone $ZONE
PERMISSION_DENIED
오류가 발생하면 입력한 프로젝트 ID를 다시 확인합니다. 프로젝트 ID가 올바르면gcloud auth login
을 실행하여 프로젝트에 액세스 권한이 있는 계정으로 gcloud CLI에 로그인합니다.설치할 수 있는 베어메탈용 GKE 버전 목록을 가져옵니다.
gcloud container bare-metal admin-clusters query-version-config \ --location=ON_PREM_API_REGION | grep 1.16
이 문서의 일부 안내는 사용 가능한 베어메탈용 GKE 버전의 하위 집합을 지원하는 GKE On-Prem API에 따라 달라집니다.
이전 명령어 출력에서 버전을 선택하고 이를 환경 변수로 설정합니다.
export BMCTL_VERSION=BMCTL_VERSION
최신 베어메탈용 GKE 기능과 수정사항을 가져오려면 호환성이 가장 높은 버전을 선택하는 것이 좋습니다.
anthos-samples
저장소를 클론하고 스크립트가 있는 디렉터리로 변경합니다.git clone https://github.com/GoogleCloudPlatform/anthos-samples cd anthos-samples/anthos-bm-gcp-bash
스크립트를 실행합니다.
bash install_admin_cluster.sh
메시지가 표시되면 숫자를 입력하여 설치 모드를 선택합니다.
- 스크립트로 VM 인프라를 설정하고 관리자 클러스터를 설치하려면 1을 입력합니다.
- 스크립트로 VM 인프라만 설정하려면 2를 입력합니다.
메시지가 표시되면 선택을 확인합니다.
스크립트가 실행하는 각 명령어 및 상태를 출력합니다. 완료되면 관리자 클러스터 설치를 선택했는지 여부에 따라 스크립트가 다음을 출력합니다.
관리자 클러스터 생성됨
✅ Installation complete. Please check the logs for any errors!!! ✅ If you do not see any errors in the output log, then you now have the following setup: |---------------------------------------------------------------------------------------------------------| | VM Name | L2 Network IP (VxLAN) | INFO | |---------------------------------------------------------------------------------------------------------| | abm-admin-cluster-cp1 | 10.200.0.3 | Has control plane of admin cluster running inside | | abm-user-cluster-cp1 | 10.200.0.4 | 🌟 Ready for use as control plane for the user cluster | | abm-user-cluster-w1 | 10.200.0.5 | 🌟 Ready for use as worker for the user cluster | | abm-user-cluster-w2 | 10.200.0.6 | 🌟 Ready for use as worker for the user cluster | |---------------------------------------------------------------------------------------------------------|
VM만 설정
|---------------------------------------------------------------------------------------------------------| | VM Name | L2 Network IP (VxLAN) | INFO | |---------------------------------------------------------------------------------------------------------| | abm-admin-cluster-cp1 | 10.200.0.3 | 🌟 Ready for use as control plane for the admin cluster | | abm-user-cluster-cp1 | 10.200.0.4 | 🌟 Ready for use as control plane for the user cluster | | abm-user-cluster-w1 | 10.200.0.5 | 🌟 Ready for use as worker for the user cluster | | abm-user-cluster-w2 | 10.200.0.6 | 🌟 Ready for use as worker for the user cluster | |---------------------------------------------------------------------------------------------------------|
스크립트 정보
install_admin_cluster.sh
에 대해 자세히 알아보려면 다음 줄에서 스크립트 정보를 클릭합니다.
스크립트 정보
스크립트는 다음 수동 단계를 자동화합니다.
-
baremetal-gcr
이라는 서비스 계정을 만들고 여러 API 및 서비스에 여러 서비스 계정이 필요하지 않도록 서비스 계정에 추가 권한을 부여합니다. -
다음 Google Cloud API를 사용 설정합니다.
anthos.googleapis.com anthosaudit.googleapis.com anthosgke.googleapis.com cloudresourcemanager.googleapis.com connectgateway.googleapis.com container.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com gkeonprem.googleapis.com iam.googleapis.com logging.googleapis.com monitoring.googleapis.com opsconfigmonitoring.googleapis.com serviceusage.googleapis.com stackdriver.googleapis.com storage.googleapis.com
-
다음 VM을 만듭니다.
- 관리자 워크스테이션을 위한 VM 1개. 관리자 워크스테이션은 SSH를 사용하여 다른 모든 클러스터 노드에 액세스할 수 있습니다.
- 관리자 클러스터의 제어 영역 노드에 대한 VM 1개.
- 사용자 클러스터의 워커 노드에 대한 VM 2개.
- 사용자 클러스터의 제어 영역 노드에 대한 VM 1개.
- VM 간에 Layer 2 연결을 위한 가상 확장 가능 LAN(VXLAN) 오버레이 네트워크를 만듭니다. VXLAN은 영구적이지 않으므로 VM 인스턴스를 재부팅하면 네트워크가 삭제됩니다. 네트워크는 10.200.0.0/24 서브넷에 있도록 설정됩니다. Layer 2 연결은 번들 로드 밸런서의 요구사항입니다.
-
관리자 워크스테이션에 다음 도구를 설치합니다.
bmctl
kubectl
- Docker
또한 스크립트는
baremetal-gcr
서비스 계정에 대한 서비스 계정 키를 관리자 워크스테이션에 다운로드합니다. -
다음 작업을 수행하여 관리자 워크스테이션의
root@10.200.0.x
가 작동하는지 확인합니다.- 관리자 워크스테이션에서 새 SSH 키를 생성합니다.
- 배포에서 다른 모든 VM에 공개 키를 추가합니다.
-
선택적으로 스크립트는 다음 구성 파일을 사용하여 관리자 클러스터를 만듭니다.
관리자 클러스터를 만들도록 스크립트를 설정하면 스크립트에서 SSH를 사용하여 관리자 워크스테이션에 루트 사용자로 로그인합니다. 그런 후 스크립트가
bmctl
명령줄 도구를 실행해서 관리자 클러스터를 만듭니다. 이것은 관리자 클러스터를 만드는 데 사용할 수 있는 도구 중 하나입니다.베어메탈용 GKE는 클러스터를 만들 때 관리자 워크스테이션에 Docker의 Kubernetes(종류) 클러스터를 배포합니다. 이 부트스트랩 클러스터는 클러스터를 만드는 데 필요한 Kubernetes 컨트롤러를 호스팅하며 관리자 클러스터를 만드는 데 사용됩니다. 생성 후에는 관련 컨트롤러가 부트스트랩 클러스터에서 관리자 클러스터로 이동됩니다. 마지막으로, 달리 지정하지 않으면 클러스터가 성공적으로 생성될 때 부트스트랩 클러스터가 제거됩니다. 컨테이너 이미지를 가져오려면 부트스트랩 클러스터에 Docker가 있어야 합니다.
선택적으로 관리자 클러스터 만들기
스크립트로 관리자 클러스터를 만든 후에는 다음 섹션인 관리자 클러스터 확인으로 건너뜁니다. 그렇지 않으면 이 섹션의 단계에 따라 부트스트랩 클러스터 및 관리자 클러스터를 만듭니다.
관리자 클러스터를 만들려면 먼저 관리자 워크스테이션에서 bmctl register bootstrap
명령어를 실행해야 합니다. 이 명령어는 관리자 워크스테이션에 Docker의 Kubernetes(종류) 클러스터를 배포합니다. 이 부트스트랩 클러스터는 관리자 클러스터를 만드는 데 필요한 Kubernetes 컨트롤러를 호스팅합니다. 관리자 클러스터를 만들면 부트스트랩 클러스터의 컨트롤러가 노드를 프로비저닝하고, 프리플라이트 검사를 실행하고 Fleet에 관리자 클러스터를 등록합니다. 클러스터가 성공적으로 생성된 후 부트스트랩 클러스터가 자동으로 삭제됩니다.
콘솔
콘솔에서 베어메탈용 GKE 클러스터 만들기 페이지로 이동합니다.
프로젝트 목록에서
PROJECT_ID
를 선택해야 합니다.왼쪽 탐색 메뉴에서 부트스트랩 환경 설치를 클릭합니다.
관리자 클러스터 이름으로
ADMIN_CLUSTER_NAME
을 입력합니다. 부트스트랩 클러스터 이름은 관리자 클러스터 이름 앞에 부트스트랩-을 추가하여 파생됩니다.VERSION
을 관리자 클러스터의 버전으로 선택합니다. 스크립트가 이 버전의bmctl
명령줄 도구를 관리자 워크스테이션에 다운로드했습니다. 설치하는 베어메탈용 GKE 버전은bmctl
버전과 일치해야 합니다.Google Cloud API 위치 필드의 목록에서 ON_PREM_API_REGION을 선택합니다. 이 설정은 GKE On-Prem API가 실행되는 리전과 다음 항목이 저장되는 리전을 지정합니다.
- GKE On-Prem API에서 클러스터 수명 주기를 관리하는 데 필요한 클러스터 메타데이터
- 시스템 구성요소의 Cloud Logging 및 Cloud Monitoring 데이터
- Cloud 감사 로그에서 만든 관리자 감사 로그
클러스터 이름, 프로젝트, 위치에 따라 Google Cloud의 클러스터가 고유하게 식별됩니다.
콘솔에 표시되는 단계 대신 다음 섹션의 단계에 따라 부트스트랩 클러스터를 만듭니다. 관리자 클러스터를 만들기 위해 다시 돌아와야 하기 때문에 콘솔 페이지를 표시된 상태로 둡니다.
gcloud CLI
새 터미널 창을 엽니다. 두 번째 터미널 창을 사용해서 관리자 워크스테이션에 연결하여 부트스트랩 클러스터를 만듭니다. 첫 번째 터미널 창을 사용해서 gcloud CLI 명령어를 실행하여 관리자 클러스터를 만듭니다.
부트스트랩 클러스터 만들기
관리자 워크스테이션에서 다음 단계를 수행합니다.
SSH를 사용하여 루트로 관리자 워크스테이션에 액세스합니다.
gcloud compute ssh root@abm-ws --zone ZONE
VM 업데이트에 대한 메시지를 무시하고 이 튜토리얼을 완료하면 됩니다. VM을 테스트 환경으로 유지하려는 경우 Ubuntu 문서에 설명된 대로 OS를 업데이트하거나 다음 버전으로 업그레이드해야 할 수 있습니다.
사용자 인증 정보를 애플리케이션 기본 사용자 인증 정보(ADC)로 설정합니다.
gcloud auth application-default login
메시지에 따라 ADC용 Google 계정을 선택합니다.
부트스트랩 클러스터를 만듭니다.
bmctl register bootstrap \ --ssh-key=/root/.ssh/id_rsa \ --name=bootstrap-ADMIN_CLUSTER_NAME \ --project-id=PROJECT_ID
bmctl
이 부트스트랩 클러스터를 성공적으로 만들면 다음과 비슷한 출력이 표시됩니다.
[2023-03-22 17:35:24+0000] Waiting for the temporary cluster to be registered... OK [2023-03-22 17:35:37+0000] Please go to https://console.cloud.google.com/home/dashboard?project=example-project-12345 to create the cluster [2023-03-22 17:35:37+0000] Waiting for preflight checks and cluster to run..
관리자 클러스터 만들기
콘솔
관리자 워크스테이션의 부트스트랩 환경 섹션에 있는 부트스트랩 환경 설치 페이지에서 연결 확인을 클릭합니다.
성공하면 콘솔에
연결 설정됨이 표시됩니다.계속하기 전에 부트스트랩 클러스터에 대한 연결을 설정해야 합니다. 연결이 설정되지 않았으면
bmctl register bootstrap
명령어에 지정한 인수를 확인합니다.--name
값이 부트스트랩 환경 기본사항 섹션에 표시된 파생된 부트스트랩 이름과 일치하는지 확인합니다.--project-id
값이 콘솔에서 선택한 프로젝트의 ID와 일치하는지 확인합니다.
부트스트랩 클러스터 이름 또는 프로젝트 ID를 변경해야 하는 경우
Ctrl-C
를 입력하여bmctl register bootstrap
을 종료하고 명령어를 다시 실행합니다.왼쪽 탐색 메뉴에서 네트워킹을 클릭합니다.
제어 영역 섹션에서 제어 영역 노드 IP 1 필드에 다음을 입력합니다.
10.200.0.3
이는 스크립트로 생성된 VXLAN의 abm-admin-cluster-cp VM의 IP 주소입니다.
부하 분산기 섹션에서 번들이 선택되어 있는지 확인합니다.
가상 IP(VIP) 섹션에서 제어 영역 VIP 필드에 다음을 입력합니다.
10.200.0.48
확인 및 만들기를 클릭합니다.
콘솔에 설정을 확인하고 클러스터를 만들 때 상태 메시지가 표시됩니다.
gcloud CLI
이전에 정의한 환경 변수의 값이 올바른지 확인합니다. 예시 명령어에 자리표시자가 사용되지만 스크립트에서 사용한 환경 변수와 일치해야 합니다.
echo $PROJECT_ID echo $ADMIN_CLUSTER_NAME echo $ON_PREM_API_REGION echo $BMCTL_VERSION
부트스트랩 클러스터가 Fleet 멤버로 등록되었는지 확인합니다.
gcloud container fleet memberships list \ --project=PROJECT_ID
부트스트랩 클러스터가 나열되지 않았으면
bmctl register bootstrap
에 지정한 부트스트랩 클러스터 이름과 프로젝트 ID를 확인합니다. 부트스트랩 클러스터 이름 또는 프로젝트 ID를 변경해야 하는 경우Ctrl-C
를 입력하여bmctl register bootstrap
을 종료하고 명령어를 다시 실행합니다.번들 부하 분산기가 있는 관리자 클러스터를 만듭니다.
gcloud container bare-metal admin-clusters create ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --version=BMCTL_VERSION \ --max-pods-per-node=110 \ --control-plane-vip=10.200.0.48 \ --control-plane-load-balancer-port=443 \ --control-plane-node-configs node-ip=10.200.0.3 \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
이전 명령어에서 각 항목의 의미는 다음과 같습니다.
--control-plane-vip
:10.200.0.48
로 설정됩니다. 클러스터의 Kubernetes API 서버용 부하 분산기의 가상 IP(VIP)입니다.--control-plane-node-configs
:node-ip
는10.200.0.3
으로 설정됩니다. 이는 스크립트로 생성된 VXLAN의 abm-admin-cluster-cp VM의 IP 주소입니다.
플래그 및 해당 설명의 전체 목록은 gcloud CLI 참조를 확인하세요.
명령어 출력은 다음과 비슷합니다.
Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
예시 출력에서
operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179
문자열은 장기 실행 작업의OPERATION_ID
입니다. 다른 터미널 창에서 다음 명령어를 실행하여 작업 상태를 찾을 수 있습니다.gcloud container bare-metal operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
클러스터 만들기 프로세스에 대한 세부정보가 관리자 워크스테이션에 출력됩니다. bmctl
은 클러스터를 만들기 전에 일련의 실행 전 검사를 실행하여 구성을 확인합니다. 프리플라이트 검사가 통과하면 다음과 비슷하게 표시됩니다.
[2023-03-22 23:12:47+0000] Waiting for cluster kubeconfig to become ready OK [2023-03-22 23:15:47+0000] Writing kubeconfig file [2023-03-22 23:15:47+0000] kubeconfig of cluster being created is present at bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig [2023-03-22 23:15:47+0000] Please restrict access to this file as it contains authentication credentials of your cluster. [2023-03-22 23:15:47+0000] Waiting for cluster to become ready OK [2023-03-22 23:20:17+0000] Please run [2023-03-22 23:20:17+0000] kubectl --kubeconfig bmctl-workspace/abm-cluster-1/abm-cluster-1-kubeconfig get nodes [2023-03-22 23:20:17+0000] to get cluster nodes status. [2023-03-22 23:20:17+0000] Waiting for node pools to become ready OK [2023-03-22 23:20:37+0000] Waiting for metrics to become ready in GCP OK [2023-03-22 23:25:38+0000] Waiting for cluster API provider to install in the created admin cluster OK [2023-03-22 23:25:48+0000] Moving admin cluster resources to the created admin cluster [2023-03-22 23:25:51+0000] Waiting for node update jobs to finish OK [2023-03-22 23:27:41+0000] Flushing logs... OK [2023-03-22 23:27:41+0000] Deleting membership... OK [2023-03-22 23:27:42+0000] Deleting bootstrap cluster.
관리자 클러스터 확인
루트 계정의 bmctl-workspace
디렉터리에 있는 관리자 워크스테이션에서 관리자 클러스터의 kubeconfig
파일을 찾을 수 있습니다. 배포를 확인하려면 다음 단계를 완료하세요.
스크립트에서 관리자 클러스터를 만들었으면 SSH를 사용하여 관리자 워크스테이션에 루트로 액세스합니다.
gcloud compute ssh root@abm-ws --zone ZONE
VM 업데이트에 대한 메시지를 무시하고 이 튜토리얼을 완료하면 됩니다. VM을 테스트 환경으로 유지하려는 경우 Ubuntu 문서에 설명된 대로 OS를 업데이트하거나 다음 버전으로 업그레이드해야 할 수 있습니다.
클러스터 구성 파일의 경로로
KUBECONFIG
환경 변수를 설정하여 클러스터에서kubectl
명령어를 실행합니다.export clusterid=ADMIN_CLUSTER_NAME export KUBECONFIG=$HOME/bmctl-workspace/$clusterid/$clusterid-kubeconfig kubectl get nodes
출력은 다음과 비슷합니다.
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane,master 91m v1.24.2-gke.1900
환경 변수에 현재 컨텍스트를 설정합니다.
export CONTEXT="$(kubectl config current-context)"
다음
gcloud
명령어를 실행합니다. 이 명령어는 다음을 수행합니다.- 사용자 계정에 클러스터에 대한 Kubernetes
clusterrole/cluster-admin
역할을 부여합니다. - 관리자 워크스테이션에 SSH로 연결할 필요 없이 로컬 컴퓨터에서
kubectl
명령어를 실행할 수 있도록 클러스터를 구성합니다. - Google ID를 사용해서 콘솔에서 클러스터에 로그인할 수 있습니다.
YOUR_EMAIL_ADDRESS
을 Google Cloud 계정과 연결된 이메일 주소로 바꿉니다. 예를 들면--users=alex@example.com
입니다.gcloud container fleet memberships generate-gateway-rbac \ --membership=ADMIN_CLUSTER_NAME \ --role=clusterrole/cluster-admin \ --users=YOUR_EMAIL_ADDRESS \ --project=PROJECT_ID \ --kubeconfig=$KUBECONFIG \ --context=$CONTEXT\ --apply
이 명령어의 출력은 가독성을 위해 잘려서 표시된 다음과 비슷합니다.
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/ADMIN_CLUSTER_NAME/ADMIN_CLUSTER_NAME-kubeconfig, context: ADMIN_CLUSTER_NAME-admin@ADMIN_CLUSTER_NAME Writing RBAC policy for user: YOUR_EMAIL_ADDRESS to cluster. Successfully applied the RBAC policy to cluster.
- 사용자 계정에 클러스터에 대한 Kubernetes
탐색이 완료되었으면 exit를 입력하여 관리자 워크스테이션에서 로그아웃합니다.
로컬 컴퓨터에서 다음 명령어를 실행하여 Connect 게이트웨이를 통해 클러스터에 액세스할 수 있는 kubeconfig 항목을 가져옵니다.
gcloud container fleet memberships get-credentials ADMIN_CLUSTER_NAME
출력은 다음과 비슷합니다.
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_ADMIN_CLUSTER_NAME" has been generated and set as the current context.
이제 커넥트 게이트웨이를 통해
kubectl
명령어를 실행할 수 있습니다.kubectl get nodes
출력은 다음과 비슷합니다.
NAME STATUS ROLES AGE VERSION abm-admin-cluster-cp Ready control-plane,master 94m v1.24.2-gke.1900
베어메탈용 GKE 1.16 이상에서는 클러스터가 GKE On-Prem API에 자동으로 등록됩니다. 이렇게 하면 gcloud CLI 및 콘솔을 사용하여 관리자 클러스터를 업그레이드 및 업데이트할 수 있습니다.
사용자 클러스터 만들기
이 스크립트에서는 VM에 L2 VXLAN을 만들 때 10.200.0.0/24 네트워크에서 다음 IP 주소를 할당했습니다. 사용자 클러스터에 대해 네트워크 및 노드 풀 설정을 구성할 때 이러한 IP 주소를 사용합니다.
VM 이름 | 네트워크 IP | 노드 설명 |
---|---|---|
abm-admin-cluster-cp1 | 10.200.0.3 | 관리자 클러스터의 제어 영역 노드 |
abm-user-cluster-cp1 | 10.200.0.4 | 사용자 클러스터의 제어 영역 노드 |
abm-user-cluster-w1 | 10.200.0.5 | 사용자 클러스터의 워커 노드 |
abm-user-cluster-w2 | 10.200.0.6 | 사용자 클러스터의 다른 워커 노드 |
Google Cloud 콘솔, Google Cloud CLI 또는 Terraform을 사용하여 사용자 클러스터를 만들 수 있습니다.
콘솔
콘솔에서 사용자 클러스터를 만들려면 다음 단계를 수행합니다.
콘솔에서 베어메탈용 GKE 클러스터 만들기 페이지로 이동합니다.
관리자 클러스터를 만든 Google Cloud 프로젝트가 선택되어 있는지 확인하세요.
클러스터 유형 선택에서 기존 관리자 클러스터의 사용자 클러스터 만들기를 선택합니다.
다음을 클릭합니다.
클러스터 기본사항
사용자 클러스터의 이름을 입력하거나 기본값을 사용합니다.
새로 만든 관리자 클러스터가 선택되었는지 확인합니다. 이 페이지의 나머지 설정에는 기본값을 사용해도 됩니다.
왼쪽 탐색 메뉴에서 네트워킹을 클릭합니다.
네트워킹
제어 영역 섹션에서 제어 영역 노드 IP 1 필드에 다음을 입력합니다.
10.200.0.4
이는 스크립트로 생성된 VXLAN에 있는 abm-user-cluster-cp1 VM의 IP 주소입니다.
부하 분산기 섹션에서 기본 부하 분산기인 MetaLB와 번들로 제공을 사용하세요.
새 주소 풀 섹션에서 IP 주소 범위 1 필드에 다음 IP 주소 범위를 입력합니다.
10.200.0.51-10.200.0.70
완료를 클릭합니다.
가상 IP 섹션에서 제어 영역 VIP 필드에 다음 IP 주소를 입력합니다.
10.200.0.50
인그레스 VIP에 다음 IP 주소를 입력합니다.
10.200.0.51
서비스 및 포드 CIDR 섹션에서 기본 IP 주소를 사용합니다.
왼쪽 탐색 메뉴에서 기본 풀을 클릭합니다.
노드 풀 만들기
클러스터에 워커 노드에 대해 노드 풀이 하나 이상 있어야 합니다. 노드 풀은 이 클러스터에서 만든 워커 노드 그룹의 템플릿입니다.
노드 주소 1 필드에 다음 IP 주소를 입력합니다.
10.200.0.5
이는 스크립트로 생성된 VXLAN에 있는 abm-user-cluster-w1 VM의 IP 주소입니다.
클러스터 만들기
확인 및 만들기를 클릭하여 사용자 클러스터를 만듭니다.
사용자 클러스터를 만드는 데 15분 이상 걸립니다. 콘솔에 설정을 확인하고 클러스터를 만들 때 상태 메시지가 표시됩니다.
구성에 문제가 있으면 콘솔에 구성 문제를 해결하고 클러스터를 다시 만들 수 있도록 명확한 오류 메시지가 표시됩니다.
생성 프로세스에 대한 추가 정보를 보려면 세부정보 표시를 클릭하여 측면 패널을 표시합니다. 세부정보 패널을 닫으려면
를 클릭합니다.클러스터가 생성되면 클러스터 상태: 실행 중이 표시됩니다.
클러스터가 생성되면
클러스터를 클릭하여 클러스터 페이지로 돌아갑니다.
gcloud CLI
다음 명령어를 사용하여 사용자 클러스터를 만듭니다.
gcloud container bare-metal clusters create
클러스터를 만든 후 다음 명령어를 사용하여 적어도 하나 이상의 노드 풀을 만들어야 합니다.
gcloud container bare-metal node-pools create
사용자 클러스터를 만들려면 다음 안내를 따르세요.
이전에 정의한 환경 변수의 값이 올바른지 확인합니다. 예시 명령어에 자리표시자가 사용되지만 스크립트에서 사용한 환경 변수와 일치해야 합니다.
echo $PROJECT_ID echo $ADMIN_CLUSTER_NAME echo $ON_PREM_API_REGION echo $BMCTL_VERSION
다음 명령어를 실행하여 사용자 클러스터를 만듭니다. 다음을 바꿉니다.
USER_CLUSTER_NAME
: 클러스터의 이름입니다.클러스터를 관리할 수 있도록
--admin-users
가 Google 계정과 연결된 이메일 주소로 설정되었는지 확인합니다.
나머지 플래그 값은 자동으로 입력됩니다. 필요에 따라 스크롤해서
--admin-cluster-membership
플래그가 전체 지정된 멤버십 이름의 마지막 세그먼트인 관리자 클러스터 이름에 올바른 값인지 확인합니다.gcloud container bare-metal clusters create USER_CLUSTER_NAME \ --project=PROJECT_ID \ --admin-cluster-membership=projects/PROJECT_ID/locations/global/memberships/ADMIN_CLUSTER_NAME \ --location=ON_PREM_API_REGION \ --version=BMCTL_VERSION \ --admin-users=YOUR_EMAIL_ADDRESS \ --metal-lb-address-pools='pool=lb-pool-1,manual-assign=True,addresses=10.200.0.51-10.200.0.70' \ --control-plane-node-configs='node-ip=10.200.0.4' \ --control-plane-vip=10.200.0.50 \ --control-plane-load-balancer-port=443 \ --ingress-vip=10.200.0.51 \ --island-mode-service-address-cidr-blocks=10.96.0.0/20 \ --island-mode-pod-address-cidr-blocks=192.168.0.0/16 \ --lvp-share-path=/mnt/localpv-share \ --lvp-share-storage-class=local-shared \ --lvp-node-mounts-config-path=/mnt/localpv-disk \ --lvp-node-mounts-config-storage-class=local-disks
다음 목록은 플래그에 대한 설명입니다.
--project
: 사용자 클러스터가 등록되는 프로젝트의 ID입니다. 이 프로젝트를 Fleet 호스트 프로젝트라고 합니다.--admin-cluster-membership
: Fleet에서 관리자 클러스터를 식별하는 완전하게 지정된 관리자 클러스터 이름입니다.--location
: GKE On-Prem API가 실행되고 메타데이터를 저장하는 Google Cloud 리전입니다.--version
: 베어메탈용 GKE 버전입니다.--admin-users
: 클러스터에 대한 전체 관리 액세스 권한을 제공하는 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 부여할 이메일 주소를 포함합니다.--metal-lb-address-pools
: 번들 MetalLB 부하 분산기의 주소 풀 구성입니다. IP 주소 범위가 스크립트에서 만든10.200.0.0/24
네트워크에 속해야 합니다. IP 주소 범위에 VM 또는 제어 영역 VIP에 할당된 IP 주소가 포함되면 안 됩니다. 그러나 인그레스 VIP는 이 IP 주소 범위 내에 있어야 합니다.--control-plane-node-configs
: 사용자 클러스터의 제어 영역 노드 구성입니다.node-ip
값은 스크립트가 VMabm-user-cluster-cp1
에 지정한 IP 주소인10.200.0.4
입니다.--control-plane-vip
: 제어 영역의 가상 IP입니다.10.200.0.50
값은 스크립트에서 만든10.200.0.0/24
네트워크에 속하지만 MetalLB 부하 분산기 주소 풀에 사용되는 IP 주소 범위와 겹치지 않습니다.--control-plane-load-balancer-port
: 부하 분산기가 제어 영역에 제공하는 포트입니다. 다른 값을 구성할 수 있지만 포트443
이 HTTPS 연결에 사용되는 표준 포트입니다.--ingress-vip
: 인그레스 서비스의 가상 IP입니다. 이 IP 주소는 MetalLB 부하 분산기 주소 풀에 사용되는 IP 주소 범위에 속해야 합니다.--island-mode-service-address-cidr-blocks
: 사용자 클러스터의 서비스에 사용할 CIDR 형식의 IP 주소 범위입니다. 이 예시 명령어에서는 콘솔에서 제공하는 기본값인10.96.0.0/20
을 사용했습니다. CIDR 범위는 /24에서 /12 사이여야 합니다. 여기서 /12는 대부분의 IP 주소를 제공합니다. RFC 1918에 정의된 대로 비공개 인터넷에 대한 IP 주소 공간의 범위를 사용하는 것이 좋습니다.--island-mode-pod-address-cidr-blocks
: 사용자 클러스터의 포드에 사용할 CIDR 형식의 IP 주소 범위입니다. 이 예시 명령어에서는 콘솔에서 제공하는 기본값인192.168.0.0/16
을 사용했습니다. CIDR 범위는 /18에서 /8 사이여야 합니다. 여기서 /8은 대부분의 IP 주소를 제공합니다. RFC 1918에 정의된 대로 비공개 인터넷에 대한 IP 주소 공간의 범위를 사용하는 것이 좋습니다.--lvp-share-path
: 하위 디렉터리를 만들 수 있는 호스트 머신 경로입니다. 각 하위 디렉터리에 대해 로컬 PersistentVolume(PV)이 생성됩니다.--lvp-share-storage-class
: 영구 볼륨을 만드는 데 사용할 StorageClass입니다. StorageClass는 클러스터 생성 중에 생성됩니다.--lvp-node-mounts-config-path
: 마운트된 디스크를 검색할 수 있는 호스트 머신 경로입니다. 각 마운트마다 로컬 PersistentVolume(PV)이 생성됩니다.--lvp-node-mounts-config-storage
: 클러스터 생성 중에 PV가 만든 스토리지 클래스입니다.
명령어를 실행한 후 다음과 같은 출력이 표시됩니다.
Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678304606537-5f668bde5c57e-341effde-b612ff8a] to complete...
예시 출력에서 operation-1678304606537-5f668bde5c57e-341effde-b612ff8a
문자열은 장기 실행 작업의 OPERATION_ID
입니다.
작업 상태를 확인하려면 출력에서 OPERATION_ID
를 다음 명령어로 복사합니다. 다른 터미널 창을 열고 명령어를 실행합니다.
gcloud container bare-metal operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
클러스터를 만드는 데 15분 이상 걸립니다. 클러스터가 생성되는 동안 이전 명령어를 충분히 자주 실행해서 현재 상태를 가져올 수 있습니다.
클러스터가 생성되면 다음과 같은 출력이 표시됩니다.
Created Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/USER_CLUSTER_NAME].
노드 풀 만들기
클러스터가 성공적으로 생성되면 다음 명령어를 실행하여 노드 풀을 만듭니다. NODE_POOL_NAME
을 노드 풀의 이름으로 바꾸고 --cluster
플래그의 자리표시자가 여전히 사용자 클러스터 이름으로 설정되어 있는지 확인합니다.
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --node-configs='node-ip=10.200.0.5'
-node-configs
:node-ip
에 할당된 값은 스크립트로 생성된 VXLAN에 있는 abm-user-cluster-w1 VM의 IP 주소입니다.
명령어를 실행한 후 다음과 같은 출력이 표시됩니다.
Waiting for operation [projects/PROJECT_ID/locations/ON_PREM_API_REGION/operations/operation-1678308682052-5f669b0d132cb-6ebd1c2c-816287a7] to complete...
노드 풀을 만드는 데 약 5분 정도 걸립니다. 노드 풀이 생성되면 다음과 같은 출력이 표시됩니다.
Created node pool in Anthos cluster on bare metal [https://gkeonprem.googleapis.com/v1/projects/PROJECT_ID/locations/ON_PREM_API_REGION/bareMetalClusters/USER_CLUSTER_NAME/bareMetalNodePools/NODE_POOL_NAME].
기타 사용자 클러스터 명령어
클러스터를 만드는 것 외에도 실행할 수 있는 다른 gcloud CLI 명령어가 있습니다.
- 사용자 클러스터를 나열하려면 다음 안내를 따르세요.
gcloud container bare-metal clusters list \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
- 사용자 클러스터를 설명하려면 다음 안내를 따르세요.
gcloud container bare-metal clusters describe USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
자세한 내용은 gcloud container bare-metal clusters를 참조하세요.
기타 노드 풀 명령어
노드 풀을 만드는 것 외에도 다음과 같이 실행할 수 있는 다른 gcloud CLI 명령어가 있습니다.
- 노드 풀을 나열하려면 다음을 실행합니다.
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
- 노드 풀을 설명하려면 다음을 실행합니다.
gcloud container bare-metal node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
자세한 내용은 gcloud container bare-metal node-pools를 참조하세요.
Terraform
다음 기본 구성 샘플을 사용하여 번들 MetalLB 부하 분산기로 사용자 클러스터를 만들 수 있습니다. 자세한 내용은 google_gkeonprem_bare_metal_cluster
참조 문서를 확인하세요.
anthos-samples
를 클론한 디렉터리에서 Terraform 샘플이 있는 디렉터리로 변경합니다.cd anthos-samples/anthos-onprem-terraform/abm_user_cluster_metallb
이 샘플은
main.tf
에 전달할 변수 파일 예시를 제공합니다.terraform.tfvars.sample
파일의 사본을 만듭니다.cp terraform.tfvars.sample terraform.tfvars
terraform.tfvars
의 매개변수 값을 수정하고 파일을 저장합니다.아래 목록에서 변수를 설명합니다.
project_id
: 사용자 클러스터가 등록되는 프로젝트의 ID입니다. 이 프로젝트를 Fleet 호스트 프로젝트라고 합니다.region
: 튜토리얼의 시작 부분에서 설정하는 Google Cloud 리전입니다.echo $ON_PREM_API_REGION
을 실행하여 값을 가져옵니다.admin_cluster_name
: 이 튜토리얼의 시작 부분에서 설정하는 관리자 클러스터의 이름입니다. echo$ADMIN_CLUSTER_NAME
을 실행하여 값을 가져옵니다.bare_metal_version
: 사용자 클러스터의 베어메탈용 GKE 버전입니다. 관리자 클러스터에 사용한 것과 동일한 버전을 사용하려면echo $BMCTL_VERSION
을 실행하여 값을 가져옵니다. 원하는 경우 관리자 클러스터 버전보다 부 버전이 두 단계 이상 낮은 버전을 지정할 수 있습니다. 사용자 클러스터 버전은 관리자 클러스터 버전보다 높을 수 없습니다.cluster_name
: 사용자 클러스터의 TVARS 파일에 있는 이름을 사용하거나 원하는 이름을 지정할 수 있습니다. 클러스터를 만든 후에는 이름을 변경할 수 없습니다.admin_user_emails
: 클러스터에 대한 관리자 권한을 부여할 사용자의 이메일 주소 목록입니다. 클러스터를 관리할 수 있도록 이메일 주소를 추가해야 합니다.클러스터가 생성되면 GKE On-Prem API는 클러스터에 Kubernetes 역할 기반 액세스 제어(RBAC) 정책을 적용하여 관리자에게 모든 네임스페이스의 클러스터에 있는 모든 리소스에 대한 전체 액세스 권한을 제공하는 Kubernetes
clusterrole/cluster-admin
역할을 부여합니다. 이렇게 하면 사용자가 Google ID를 사용하여 콘솔에 로그인할 수 있습니다.
나머지 변수에 대해
terraform.tvars
에 정의된 기본값을 사용합니다. VM 및 관리자 클러스터를 만들 때 스크립트에 이러한 값이 사용되었습니다.control_plane_ips
: 제어 영역 노드에 대한 하나 이상의 IPv4 주소 목록입니다. 스크립트가 VMabm-user-cluster-cp1
에 지정한 IP 주소인 기본값을 사용합니다.worker_node_ips
: 워커 노드 머신에서 하나 이상의 IPv4 주소 목록입니다. 스크립트가 VMabm-user-cluster-w1
및abm-user-cluster-w2
에 지정한 IP 주소인 기본값을 사용합니다.control_plane_vip
: 제어 영역의 가상 IP(VIP)입니다. 스크립트로 만든10.200.0.0/24
네트워크에 있는 기본값10.200.0.50
을 사용합니다. 이 IP 주소는 MetalLB 부하 분산기 주소 풀에 사용된 IP 주소 범위와 겹치지 않습니다.ingress_vip
: 인그레스 프록시에 대해 부하 분산기에 구성할 가상 IP 주소입니다. 스크립트로 만든10.200.0.0/24
네트워크에 있는 기본값10.200.0.51
을 사용합니다. 이 IP 주소는 MetalLB 부하 분산기 주소 풀에 사용된 IP 주소 범위에 포함됩니다.lb_address_pools
: MetalLB 부하 분산기에 대해 주소 풀을 정의하는 맵 목록입니다. 기본값을 사용합니다.
변경사항을
terraform.tfvars
에 저장합니다.Terraform 계획을 초기화하고 만듭니다.
terraform init
Terraform은 Google Cloud 제공업체와 같은 필요한 라이브러리를 설치합니다.
구성을 검토하고 필요한 경우 변경합니다.
terraform plan
Terraform 계획을 적용하여 사용자 클러스터를 만듭니다.
terraform apply
사용자 클러스터를 만드는 데 15분 이상 걸립니다. Google Cloud 콘솔의 GKE 클러스터 페이지에서 클러스터를 볼 수 있습니다.
사용자 클러스터에 연결
콘솔 또는 gcloud CLI를 사용하여 사용자 클러스터를 만들 때 gcloud container fleet memberships generate-gateway-rbac
실행 시 관리자 클러스터에 구성한 것과 동일한 Kubernetes 역할 기반 액세스 제어(RBAC) 정책으로 클러스터가 구성됩니다.
이러한 RBAC 정책을 사용하면 Google Cloud 계정과 연결된 이메일 주소인 Google Cloud ID를 사용하여 클러스터에 연결할 수 있습니다. RBAC 정책을 사용하면 추가 구성 없이 콘솔에 로그인할 수 있습니다.
콘솔에서 클러스터에 연결
gcloud CLI 또는 Terraform을 사용하여 사용자 클러스터를 만든 경우 콘솔에서 GKE 클러스터 페이지로 이동합니다.
사용자 클러스터를 만든 프로젝트가 선택되었는지 확인합니다. 목록에 관리자 클러스터와 사용자 클러스터가 모두 표시됩니다.
사용자 클러스터의 유형 열에 베어메탈: 사용자가 표시됩니다. 이는 클러스터가 GKE On-Prem API에서 관리됨을 나타냅니다.
스크립트를 사용하여 관리자 클러스터를 만든 경우 유형 열에 외부가 표시됩니다. 이는 클러스터가 GKE On-Prem API에서 관리되지 않음을 나타냅니다. 클러스터가 생성된 후 GKE On-Prem API에서 관리하도록 관리자 클러스터를 구성할 수 있습니다.
클러스터에 로그인하려면 다음 안내를 따르세요.
클러스터 이름의 링크를 클릭하고 측면 패널에서 로그인을 클릭합니다.
Google ID를 사용하여 로그인을 선택합니다.
로그인을 클릭합니다.
동일한 단계를 반복하여 관리자 클러스터에도 로그인합니다.
명령줄에서 클러스터에 연결
GKE On-Prem API는 자동으로 RBAC 정책을 사용자 클러스터 생성자로 구성합니다. 이러한 정책을 사용하면 Connect 게이트웨이 kubeconfig
를 사용하여 로컬 데스크톱에서 kubectl
명령어를 실행할 수 있습니다.
로컬 컴퓨터에서 다음을 수행합니다.
Connect 게이트웨이를 통해 클러스터에 액세스할 수 있는
kubeconfig
항목을 가져옵니다.gcloud container fleet memberships get-credentials USER_CLUSTER_NAME
출력은 다음과 비슷합니다.
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_USER_CLUSTER_NAME" has been generated and set as the current context.
이제 커넥트 게이트웨이를 통해
kubectl
명령어를 실행할 수 있습니다.kubectl get nodes
출력은 다음과 비슷합니다.
NAME STATUS ROLES AGE VERSION abm-user-cluster-cp Ready control-plane,master 14m v1.24.2-gke.1900 abm-user-cluster-w1 Ready worker 8m28s v1.24.2-gke.1900
사용자 클러스터에 다른 노드 풀 추가
콘솔
콘솔에서 GKE 클러스터 페이지로 이동합니다.
클러스터 목록에서 클러스터 이름을 클릭한 다음 세부정보 더보기 패널에서 세부정보 보기를 클릭합니다.
노드 탭을 클릭합니다.
노드 풀 추가를 클릭합니다.
노드 풀에 이름을 입력합니다.
노드 주소 1 필드에 다음 IP 주소를 입력합니다.
10.200.0.6
이는 스크립트로 생성된 abm-user-cluster-w2 VM의 IP 주소입니다.
만들기를 클릭합니다.
필요한 경우 노드 탭을 다시 클릭합니다.
새 노드 풀에 조정 중 상태가 표시됩니다.
노드 풀 만들기 상태를 보려면 오른쪽 상단의
를 클릭합니다. 노드 풀 목록에서 업데이트된 상태를 보려면 페이지를 새로고침해야 할 수 있습니다.
gcloud CLI
다음 명령어를 실행하여 다른 노드 풀을 만듭니다. NODE_POOL_NAME_2
를 노드 풀의 이름으로 바꾸고 --cluster
플래그의 자리표시자가 여전히 사용자 클러스터 이름으로 설정되어 있는지 확인합니다.
gcloud container bare-metal node-pools create NODE_POOL_NAME_2 \ --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --node-configs='node-ip=10.200.0.6'
-node-configs
:node-ip
에 할당된 값은 스크립트로 생성된 VXLAN에 있는 abm-user-cluster-w2 VM의 IP 주소입니다.
Terraform
Terraform을 사용하여 클러스터를 만든 경우 클러스터가 두 개 노드로 생성되므로, VXLAN에 다른 노드를 추가할 수 있는 추가 VM이 없습니다. 노드 풀 추가에 대한 자세한 내용은 google_gkeonprem_bare_metal_cluster
참조 문서를 참조하세요.
또한 kubectl
을 사용하여 새 노드를 확인할 수도 있습니다. 먼저 클러스터 명령어를 가져오려면 앞에 설명한 gcloud container fleet memberships get-credentials
명령어를 실행해야 합니다.
kubectl get nodes
출력은 다음과 비슷합니다.
NAME STATUS ROLES AGE VERSION
abm-user-cluster-cp Ready control-plane,master 24m v1.24.2-gke.1900
abm-user-cluster-w1 Ready worker 18m v1.24.2-gke.1900
abm-user-cluster-w2 Ready worker 52s v1.24.2-gke.1900
삭제
다음 섹션에는 이 가이드에서 만든 클러스터와 VM을 삭제하는 안내가 포함되어 있습니다.
사용자 클러스터 삭제
콘솔
콘솔에서 GKE 클러스터 페이지로 이동합니다.
클러스터 목록에서 사용자 클러스터를 클릭합니다.
세부정보 패널에서 추가 세부정보를 클릭합니다.
창 상단에서
삭제를 클릭합니다.확인 메시지가 표시되면 클러스터 이름을 입력하고 확인을 클릭합니다.
오른쪽 상단에 있는
를 클릭하여 삭제 상태를 확인합니다. 클러스터 목록을 업데이트하려면 페이지를 새로고침해야 할 수 있습니다.
gcloud CLI
다음 명령어를 실행하여 클러스터를 삭제합니다.
gcloud container bare-metal clusters delete USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION \ --force
--force
플래그를 사용하면 노드 풀이 있는 클러스터를 삭제할 수 있습니다.
--force
플래그가 없으면 먼저 노드 풀을 삭제한 후 클러스터를 삭제해야 합니다.
다른 플래그에 대한 자세한 내용은 gcloud container bare-metal clusters delete를 참조하세요.
Terraform
다음 명령어를 실행합니다.
terraform destroy
관리자 클러스터 및 VM을 삭제하기 전에 사용자 클러스터가 삭제될 때까지 기다립니다.
관리자 클러스터 및 VM 삭제
GKE On-Prem API에서 관리자 클러스터를 등록 해제합니다.
gcloud container bare-metal admin-clusters unenroll ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=ON_PREM_API_REGION
관리자 워크스테이션에 연결합니다.
gcloud compute ssh root@abm-ws --zone ZONE
관리자 클러스터를 삭제합니다.
bmctl reset -c ADMIN_CLUSTER_NAME
bmctl
은 Fleet에서 클러스터를 등록 취소한 후 클러스터를 삭제합니다. 클러스터가 삭제될 때까지 기다린 후 VM을 삭제합니다.관리자 워크스테이션을 종료합니다.
이름에
abm
이 있는 모든 VM을 나열합니다.gcloud compute instances list | grep 'abm'
이름에
abm
이 포함된 모든 VM을 삭제해도 괜찮은지 확인합니다.확인한 후에는 다음 명령어를 실행하여
abm
VM을 삭제할 수 있습니다.gcloud compute instances list --format="value(name)" | \ grep 'abm' | \ xargs gcloud --quiet compute instances delete --zone ZONE
서비스 계정을 삭제합니다.
gcloud iam service-accounts delete baremetal-gcr@PROJECT_ID.iam.gserviceaccount.com
확인 프롬프트에서 y를 입력합니다.
다음 단계