我正在尝试将Cloud与私有GKE集群一起使用。 我使用以下命令创建了集群:
app_two
我在同一VPC和子网中创建了一个堡垒主机,可以使用以下命令与该群集联系:
gcloud beta container clusters create cluster-name \
--create-subnetwork name=cloud-run-subnet \
--enable-master-authorized-networks \
--enable-ip-alias \
--enable-private-nodes \
--enable-private-endpoint \
--master-ipv4-cidr 172.16.0.32/28 \
--no-enable-basic-auth \
--no-issue-client-certificate \
--addons=HorizontalPodAutoscaling,HttpLoadBalancing,Istio,CloudRun \
--machine-type=n1-standard-1 \
--enable-stackdriver-kubernetes \
--scopes cloud-platform \
--zone us-central1-a
我在堡垒主机上安装了kubectl,并使用gcloud compute instances create bastion \
--zone us-central1-a \
--subnet cloud-run-subnet \
--machine-type=g1-small \
--scopes cloud-platform
命令将上下文切换到该集群。
我使用以下命令确保在默认名称空间上启用了Istio:
gcloud container clusters get-credentials
现在,当我尝试使用以下命令部署服务时,出现错误:
kubectl label namespace default istio-injection=enabled
错误:
gcloud beta run deploy hello \
--image=gcr.io/projectname/hello-world \
--platform=gke \
--cluster=cluster-name \
--cluster-location=us-central1-a \
--connectivity=internal
我尝试使用ERROR: (gcloud.beta.run.deploy) Error:
failed calling webhook "webhook.serving.knative.dev": Post https://webhook.knative-serving.svc:443/?timeout=30s: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting he
aders)
和--connectivity=internal
遇到相同的错误。
当我尝试使用控制台创建服务时,出现以下错误:
--connectivity=external
我确保容器注册表( gcr.io )和GKE群集保持相同的项目。
确切的事情可以在公共集群上正常工作。 我无法找到特定的文档来使它们与私有GKE集群一起使用。有什么我想念的吗? 我有做错什么吗?
答案 0 :(得分:1)
在此GitHub线程中解决了类似的问题:
https://github.com/knative/serving/issues/4868
主要原因是,在私有GKE群集中,默认情况下,只有GKE主服务器才能访问端口443或80上的服务。
您能否尝试使用端口443
而不是8443
,并将端口PagedResult<T>
列入白名单。
https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules
答案 1 :(得分:0)
您可以尝试使用yaml文件部署Cloud Run服务吗?
在这里文件
apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
name: hello
namespace: default
spec:
traffic:
- percent: 100
latestRevision: true
template:
spec:
containers:
- image: gcr.io/projectname/hello-world
只需从您的堡垒中执行kubectl apply -f <file>
如果有效,则意味着gcloud命令无法与私有集群通信(并且您可以对此打开问题)。