이 페이지에서는 사용자 클러스터를 만드는 방법을 설명합니다.
구성 파일 생성
사용자 클러스터를 만들려면 사용자 클러스터 구성 파일이 필요합니다. gkeadm
을 사용하여 관리 워크스테이션을 만든 경우 gkeadm
은 구성 파일의 템플릿을 생성하고 일부 필드를 채웠습니다.
gkeadm
을 사용하여 관리자 워크스테이션을 만들지 않은 경우 다음 명령어를 실행하여 템플릿을 생성할 수 있습니다.
gkectl create-config cluster --config [OUTPUT_PATH]
여기서 [OUTPUT_PATH]은 생성된 템플릿에 대한 경로입니다. --config
플래그를 포함하지 않으면 gkectl
은 파일 이름을 user-cluster.yaml
로 지정하고 현재 디렉터리에 넣습니다.
구성 파일 작성
name
name
필드를 사용자 클러스터용으로 선택한 이름으로 설정합니다.
gkeOnPremVersion
gkeOnPremVersion
필드를 설정합니다.
vCenter
관리자 클러스터의 vCenter
섹션에 설정한 값은 전역입니다. 즉, 관리자 클러스터 및 사용자 클러스터에 적용됩니다.
사용자 클러스터를 만들 때마다 전역 vCenter
값 중 일부를 재정의할 수 있습니다.
전역 vCenter
값을 재정의하려면 사용자 클러스터 구성 파일의 vCenter
섹션에 있는 관련 필드를 작성하세요.
network
network.ipMode.type
을 관리자 클러스터에 설정한 것과 같은 값("dhcp"
또는 "static"
)으로 설정하세요.
ipMode.type
을 "static"
으로 설정한 경우 사용자 클러스터의 노드에 대한 고정 IP 주소를 제공하는 호스트 구성 파일을 만듭니다. 그런 다음 network.ipBlockFilePath
를 호스트 구성 파일의 경로로 설정합니다.
network
섹션의 나머지 필드에 값을 넣습니다.
loadBalancer
사용자 클러스터의 Kubernetes API 서버에 대해 VIP를 별도로 설정합니다. 사용자 클러스터의 인그레스 서비스에 대해 다른 VIP를 설정합니다. VIP를 loadBalancer.controlPlaneVIP
및 loadBalancer.ingressVIP
의 값으로 제공합니다.
loadBalancer.kind
를 관리자 클러스터 구성 파일에 설정한 것과 같은 값("ManualLB"
, "F5BigIP"
, 또는 "Seesaw"
)으로 설정하세요. 그런 다음 해당하는 manualLB
, f5BigIP
또는 seesaw
섹션을 작성합니다.
proxy
관리자 클러스터 노드가 있는 네트워크가 프록시 서버 뒤에 있는 경우 proxy
섹션을 작성합니다.
masterNode
masterNode
섹션을 입력합니다.
nodePools
nodePools
섹션을 입력합니다.
authentication
OpenID Connect(OIDC)를 사용하여 사용자를 인증하려면 authentication.oidc
섹션을 작성합니다.
사용자 클러스터의 vCenter 서버에 추가 제공 인증서를 제공하려면 authentication.sni
섹션을 작성합니다.
stackdriver
stackdriver
섹션을 입력합니다.
gkeConnect
gkeConnect
섹션을 입력합니다.
cloudRun
cloudRun.enabled
를
true
또는
false
로 설정합니다.
구성 파일 검사
사용자 클러스터 구성 파일을 입력한 후 gkectl check-config
를 실행하여 파일이 유효한지 확인합니다.
gkectl check-config --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [CONFIG_PATH]
각 매개변수는 다음과 같습니다.
[ADMIN_CLUSTER_KUBECONFIG]는 관리자 클러스터의 kubeconfig 파일 경로입니다.
[CONFIG_PATH]는 사용자 클러스터 구성 파일의 경로입니다.
명령어가 실패 메시지를 반환하면 문제를 해결하고 파일을 다시 검사합니다.
시간이 오래 걸리는 검사를 건너뛰려면 --fast
플래그를 전달합니다.
개별 검사를 건너뛰려면 --skip-validation-xxx
플래그를 사용합니다. check-config
명령어에 대해 자세히 알아보려면 실행 전 검사 실행을 참조하세요.
사용자 클러스터 만들기
사용자 클러스터 만들기
gkectl create cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \ --config [CONFIG_PATH] --skip-validation-all
각 항목의 의미는 다음과 같습니다.
[CONFIG_PATH]는 사용자 클러스터 구성 파일의 경로입니다.
[ADMIN_CLUSTER_KUBECONFIG]는 관리자 클러스터의 kubeconfig 파일 경로입니다.
gkectl create cluster
명령어는 현재 디렉터리에 [USER_CLUSTER_NAME]-kubeconfig
라는 kubeconfig 파일을 만듭니다. 나중에 사용자 클러스터와 상호 작용하려면 이 kubeconfig 파일이 필요합니다.
이전에 구성 파일을 검사하지 않은 경우 --skip-validation-all
플래그를 사용하지 마세요.
사용자 클러스터 실행 여부 확인
사용자 클러스터 실행 여부 확인:
kubectl get nodes --kubeconfig [USER_CLUSTER_KUBECONFIG]
여기서 [USER_CLUSTER_KUBECONFIG]는 kubeconfig 파일의 경로입니다.
출력에 사용자 클러스터 노드가 표시됩니다.
문제해결
gkectl
을 사용하여 클러스터 문제 진단
gkectl diagnose
명령어를 사용하여 클러스터 문제를 식별하고 클러스터 정보를 Google과 공유하세요. 클러스터 문제 진단을 참조하세요.
기본 로깅 동작
gkectl
및 gkeadm
의 경우 기본 로깅 설정만 사용해도 됩니다.
-
기본적으로 로그 항목은 다음과 같이 저장됩니다.
gkectl
의 기본 로그 파일은/home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log
이며 파일은gkectl
을 실행하는 로컬 디렉터리의logs/gkectl-$(date).log
파일과 심볼릭 링크됩니다.gkeadm
의 경우 기본 로그 파일은gkeadm
을 실행하는 로컬 디렉터리의logs/gkeadm-$(date).log
입니다.
- 모든 로그 항목은 터미널에서 출력되지 않더라도 로그 파일에 저장됩니다(
--alsologtostderr
가false
인 경우). -v5
세부정보 수준(기본값)에는 지원팀에 필요한 모든 로그 항목이 포함됩니다.- 로그 파일에는 실행된 명령어와 실패 메시지도 포함되어 있습니다.
도움이 필요한 경우 로그 파일을 지원팀에 보내는 것이 좋습니다.
로그 파일에 기본값이 아닌 위치 지정
gkectl
로그 파일에 기본값이 아닌 위치를 지정하려면 --log_file
플래그를 사용합니다. 지정한 로그 파일은 로컬 디렉터리와 심볼릭 링크되지 않습니다.
gkeadm
로그 파일에 기본값이 아닌 위치를 지정하려면 --log_file
플래그를 사용합니다.
관리자 클러스터에서 Cluster API 로그 찾기
관리자 제어 영역이 시작된 후에 VM을 시작하지 못하는 경우 다음 안내에 따라 관리자 클러스터에서 Cluster API 컨트롤러의 로그를 검사하여 디버깅할 수 있습니다.
kube-system
네임스페이스에서 Cluster API 컨트롤러 pod의 이름을 찾습니다. 여기서 [ADMIN_CLUSTER_KUBECONFIG]는 관리자 클러스터의 kubeconfig 파일 경로입니다.kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
pod의 로그를 엽니다. 여기서 [POD_NAME]은 pod 이름입니다. 원하는 경우
grep
또는 비슷한 도구를 사용하여 오류를 검색합니다.kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager
관리자 클러스터 제어 영역 노드의 kubeconfig를 사용하여 F5 BIG-IP 문제 디버깅
설치 후 GKE On-Prem은 이름이 internal-cluster-kubeconfig-debug
인 관리자 워크스테이션의 홈 디렉터리에 kubeconfig 파일을 생성합니다. 이 kubeconfig 파일은 관리자 클러스터의 kubeconfig와 동일하지만 관리 제어 영역이 실행되는 관리자 클러스터의 제어 영역 노드를 직접 가리킨다는 것만 다릅니다. internal-cluster-kubeconfig-debug
파일을 사용하여 F5 BIG-IP 문제를 디버깅할 수 있습니다.
gkectl check-config
검사 실패: F5 BIG-IP 파티션을 찾을 수 없음
- 증상
F5 BIG-IP 파티션이 존재하더라도 이를 찾을 수 없어서 검사가 실패합니다.
- 가능한 원인
F5 BIG-IP API 관련 문제로 인해 검사가 실패할 수 있습니다.
- 해결 방법
gkectl check-config
를 다시 실행해 보세요.
gkectl prepare --validate-attestations
실패: 빌드 증명을 검사할 수 없음
- 증상
선택사항인
--validate-attestations
플래그로gkectl prepare
를 실행하면 다음 오류가 반환됩니다.could not validate build attestation for gcr.io/gke-on-prem-release/.../...: VIOLATES_POLICY
- 가능한 원인
해당 이미지에 대한 증명이 존재하지 않을 수 있습니다.
- 해결 방법
관리 워크스테이션 만들기 안내를 따라 관리 워크스테이션 OVA를 다시 다운로드하고 배포하세요. 문제가 계속되면 Google에 도움을 요청하세요.
부트스트랩 클러스터 로그를 사용하여 디버깅
설치 중 GKE On-Prem은 임시 부트스트랩 클러스터를 만듭니다. 설치가 성공한 후에는 GKE On-Prem이 부트스트랩 클러스터를 삭제하고 관리자 및 사용자 클러스터를 남겨둡니다. 일반적으로 이 클러스터와 상호작용할 이유가 없습니다.
설치 중 문제가 발생하고 --cleanup-external-cluster=false
를 gkectl create cluster
에 전달한 경우 부트스트랩 클러스터의 로그를 사용하여 디버깅하는 것이 유용할 수 있습니다. Pod를 찾은 후 해당 로그를 가져올 수 있습니다.
kubectl --kubeconfig /home/ubuntu/.kube/kind-config-gkectl get pods -n kube-system
kubectl --kubeconfig /home/ubuntu/.kube/kind-config-gkectl -n kube-system get logs [POD_NAME]
자세한 내용은 문제 해결을 참조하세요.