2017-11-07 6 views
1

내가이 명령을 사용하여 만들려고 할 때 나는 GKE에 연합 클러스터를 배포하려고 해요하지만 오류로 실행 해요 : 난구글 컨테이너 엔진 - 연합 클러스터를 초기화 할 수 없습니다

./kubefed init kfed \ 
> --host-cluster-context=america \ 
> --dns-zone-name=${DNS_ZONE} \ 
> --dns-provider="google-clouddns" 
error: no configuration has been provided 

을 튜토리얼에 따라 here이 발견되었으며 지금까지 모든 것이 잘 수행되었습니다. 불행히도 오류에 대한 자세한 정보를 얻기 위해 스위치가 표시되지 않습니다. 누구도 전에 이것을 보았습니까?

여기의 내가 촬영 한 모든 단계는 다음과 같습니다

# Let's export some variables to call below 
export PROJECT=final-project 
export DNS_ZONE=my.domain.co. 

# Let's Create two new clusters 
gcloud container clusters create webapp-america --zone us-west1-a --num-nodes=3 --scopes cloud-platform,storage-ro,logging-write,monitoring-write,service-control,service-management,https://www.googleapis.com/auth/ndev.clouddns.readwrite 
gcloud container clusters create webapp-europe --zone europe-west1-c --num-nodes=3 --scopes cloud-platform,storage-ro,logging-write,monitoring-write,service-control,service-management,https://www.googleapis.com/auth/ndev.clouddns.readwrite 

# Let's extract their creds 
gcloud config set container/use_client_certificate True 
export CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True 

# Let's create 2 new contexts for easier reference 
kubectl config set-context america --cluster=gke_${PROJECT}_us-west1-a_webapp-america --user=gke_${PROJECT}_us-west1-a_algolia-america 
kubectl config set-context europe --cluster=gke_${PROJECT}_europe-west1-c_webapp-europe --user=gke_${PROJECT}_europe-west1-c_algolia-europe 

# Let's delete the old context references 
kubectl config delete-context gke_${PROJECT}_us-west1-a_webapp-america 
kubectl config delete-context gke_${PROJECT}_europe-west1-c_webapp-europe 

# Let's initialize the cluster 
kubefed init kfed \ 
    --host-cluster-context=america \ 
    --dns-zone-name=${DNS_ZONE} \ 
    --dns-provider="google-clouddns" 

업데이트 - 나는 신선하고 깨끗한 프로젝트에서 시작하기로 결정했습니다, 나는이 단계를지나 이동하고 있습니다. 프로젝트를 계속 유지하고 문제 해결을 계속합니다.

답변

1

이 일련의 명령이 실제로 GKE 클러스터에 액세스하는 데 필요한 자격 증명을 가져 오지 않는다고 생각합니다. 구체적으로 실행 :

# Let's extract their creds 
gcloud config set container/use_client_certificate True 
export CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True 

그것이 GKE 클러스터에 대한 자격 증명을 가져 오는 때 GKE 클러스터에 대해 인증하는 데 사용할 수있는 TLS 키 쌍을 가져해야 gcloud 알려줍니다. 그러나 실제로 아무것도 가져 오지 않습니다.

한 다음 실행하면

# Let's create 2 new contexts for easier reference 
kubectl config set-context america --cluster=gke_${PROJECT}_us-west1-a_webapp-america --user=gke_${PROJECT}_us-west1-a_algolia-america 
kubectl config set-context europe --cluster=gke_${PROJECT}_europe-west1-c_webapp-europe --user=gke_${PROJECT}_europe-west1-c_algolia-europe 

당신이 단지 그들에 내용이없는 빈 컨텍스트를 만들 수 있습니다. 기본 kubeconfig 파일 (Linux의 경우 cat $HOME/.kube/config)에서 확인하여 확인할 수 있습니다.

을 실행하면이 문제를 해결할 수 있습니다

gcloud container clusters get-credentials webapp-america --zone us-west1-a 
gcloud container clusters get-credentials webapp-europe --zone europe-west1-c 

gcloud config set ... 명령을 실행 한 후,하지만 kubectl config set-context ... 명령을 실행하기 전에.

준 관련 메모 인 경우 gcloud-dns을 DNS 제공 업체로 사용하는 경우 페더레이션 서비스를 사용하려면 Google 클라우드 DNS를 통해 프로그래밍 할 수있는 실제 도메인 이름이 필요합니다.

EDIT : 두 번째 gcloud get-credentials 명령은 gcloud get-credentials 대신 gcloud create을 호출했습니다. 이제 해결되었습니다.

+0

이것은 완벽했습니다. 감사합니다! – RomeNYRR