我尝试在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"
更新 - 我决定从一个干净整洁的项目开始,我已经过了这一步。我会继续保持项目,并将继续进行故障排除
答案 0 :(得分:1)
我不认为这一系列命令实际上是获取访问GKE集群所需的凭据。具体来说,运行:
# Let's extract their creds
gcloud config set container/use_client_certificate True
export CLOUDSDK_CONTAINER_USE_CLIENT_CERTIFICATE=True
告诉gcloud,当它获取GKE集群的凭据时,它必须获取可用于对GKE集群进行身份验证的TLS密钥对。但它实际上并没有取任何东西。
然后当你跑:
# 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 Cloud DNS编程的真实域名才能使联合服务正常工作。
编辑:第二个gcloud get-credentials
命令正在调用gcloud create
而不是gcloud get-credentials
。现在已经解决了。