创建了一个GKE集群,为互联网连接设置了cloud-nat。然后我部署了 kubernetes ingress-nginxkubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/provider/cloud/deploy.yaml
。
直到这里一切都很好,但是当我尝试部署ingress resource
时,我得到了这个Error from server (Timeout): error when creating "manifests/backend/service/be-nginx-ingress-serivce.yaml": Timeout: request did not complete within requested timeout 30s
.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-resource
namespace: sap
annotations:
kubernetes.io/ingress.class: nginx
spec:
tls:
- hosts:
- mywebname.com
secretName: ingress-tls
rules:
- host: mywebname.com
http:
paths:
- path: /
backend:
serviceName: app
servicePort: 5000
- path: /v1
backend:
serviceName: web
servicePort: 8081
我的清单在公共 GKE 上运行良好,但今天我将其切换到私有,我遇到了这个问题,这是我第一次使用 VPC,任何帮助或指导将不胜感激,谢谢
我很确定这是防火墙的事情。您是否遵循了文档?
https://kubernetes.github.io/ingress-nginx/deploy/#gce-gke
对于私有集群,您需要添加允许主节点访问工作器节点上的端口 8443/tcp 的额外防火墙规则,或者将允许访问端口 80/tcp、443/tcp 和 10254/tcp 的现有规则更改为也允许访问端口 8443/tcp。
https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters#add_firewall_rules
gcloud compute firewall-rules create firewall-rule-name
--action ALLOW
--direction INGRESS
--source-ranges master-CIDR-block
--rules protocol:port
--target-tags target