Dru*_*rux 9 google-compute-engine kubernetes google-kubernetes-engine
我有一种情况,Kubernetes 显然无法再为kubectl create -f Deployment.yaml. kubectl describe service <my-service>报告以下错误:
CreatingLoadBalancerFailed
Error creating load balancer (will retry): Failed to create load balancer
for service default/<my-service>: requested ip <my-address> is
neither static nor assigned to LB <id>(default/<my-service>): <nil>
Run Code Online (Sandbox Code Playgroud)
但gcloud compute addresses list表示my-address是静态IP地址:
NAME REGION ADDRESS STATUS
<my-address> europe-west1 <ip-address> RESERVED
Run Code Online (Sandbox Code Playgroud)
并Deployment.yaml包含<my-service>分配<my-address>给负载均衡器的规范:
kind: Service
apiVersion: v1
metadata:
name: my-service
spec:
selector:
app: my-app
ports:
- protocol: UDP
port: <my-port>
type: LoadBalancer
loadBalancerIP: <my-address>
Run Code Online (Sandbox Code Playgroud)
特别奇怪的是:(几乎)相同的部署之前已经工作过。我已经尝试重新创建我的集群,但这也没有帮助。还有什么可能是错误的,我怎样才能克服错误,使我的服务再次可以从外部访问?
UPDATE我准备了一个新的静态(此时还全局)的IP地址与gcloud compute addresses create test-address --global和相应改变分配给LB: loadBalancerIP: test-address。但同样的错误仍然存在。
更新如果我没有loadBalancerIP在 中指定Deployment.yaml,则部署成功且不会出错,一个新的外部 IP 地址被分配给my-service。可以在此地址从外部 ping 服务。
更新如果我用 删除我以前的地址,用gcloud compute addresses delete my-address --region europe-west1提升新的外部地址gcloud compute addresses create --addresses <ip-address> --region europe-west1,然后重新部署在 中loadBalancerIP: my-address恢复的原始行Deployment.yaml,同样的错误再次出现。
小智 16
我有一个类似的问题。事实证明,如果 IP 地址被保留为全局,那么它将无法工作。我删除了我的预留并将其更改为与我的 kubernetes 集群相同的区域。 --global 我不得不使用--region europe-west2- 与我的 k8s 集群相同的区域。
之前:失败
gcloud compute addresses create my-secure-sftp --global
之后:成功
gcloud compute addresses create my-secure-sftp --region europe-west2
@see https://github.com/kubernetes/kubernetes/issues/22721了解更多详情
问题在于我用符号名称而不是数字 IP 地址(以及分别显示的)Deployment.yaml来引用地址。如果我使用数字 IP 地址,负载均衡器就会出现,我的服务可以通过该地址从外部访问(通过负载均衡器)。(之前的答案让我走上了正确的道路。我可能有一种错误的印象,认为使用符号名称以前是有效的。)loadBalancerIpNAMEADDRESSgcloud compute addresses list
背景由于我切换到自己的 VM 实例(而不是 Google Cloud shell)来开发容器映像,因此我收到了"Insufficient Permission"来自该 VM 实例的错误gcloud compute addressess list。我知道我可以通过重新创建具有scope的VM实例 https://www.googleapis.com/auth/compute.readonly来改进这一点。无论如何,这个限制显然与当前的问题无关。
| 归档时间: |
|
| 查看次数: |
4061 次 |
| 最近记录: |