Google cloud platform Kubernetes入口控制器GPC GKE can';我无法到达现场
Kubernetes入口控制器无法到达站点 您好,这是我第一次尝试使用kubernetes部署应用程序。我面临的问题是,我希望能够用我的svc链接子域,但当我尝试导航到我得到的链接时 无法访问此网站 我将解释我为这些所做的步骤,可能我有什么不对劲或遗漏了Google cloud platform Kubernetes入口控制器GPC GKE can';我无法到达现场,google-cloud-platform,google-kubernetes-engine,kubernetes-ingress,nginx-ingress,gke-networking,Google Cloud Platform,Google Kubernetes Engine,Kubernetes Ingress,Nginx Ingress,Gke Networking,Kubernetes入口控制器无法到达站点 您好,这是我第一次尝试使用kubernetes部署应用程序。我面临的问题是,我希望能够用我的svc链接子域,但当我尝试导航到我得到的链接时 无法访问此网站 我将解释我为这些所做的步骤,可能我有什么不对劲或遗漏了 我在google云平台上安装了ingress controller 在GCP->网络服务->云DNS中 a。我用谷歌dns指向testcompany.com b。我从上一步“ingress nginx controller”创建了指向公共IP
ingress controller
apiVersion: v1
kind: Service
metadata:
namespace: staging
name: testcompany-svc
labels:
app: testcompany-svc
spec:
type: NodePort
ports:
- name: test-http
port: 80
protocol: TCP
targetPort: 3001
selector:
app: testcompany
apiVersion: networking.k8s.io/v1beta1
- host: api.testcompany.com
http:
paths:
- backend:
serviceName: testcompany-svc
servicePort: test-http
更新1
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
namespace: staging
name: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: front.stagingtestcompany.com
http:
paths:
- backend:
serviceName: testcompanyfront-svc
servicePort: testcompanyfront-http
- host: api.stagingtestcompanysrl.com
http:
paths:
- backend:
serviceName: testcompanynodeapi-svc
servicePort: testcompanyapi-http
您应该按以下顺序检查此项:
您的服务、Pod和入口位于同一命名空间中:kubectl get all-n staging
您的Pod正在端口3001上侦听:如果可以,请在本地运行,或者使用kubectl port forward pods/[Pod name]-n staging 3001:3001
并在本地使用http://localhost:3001/...
您的服务正确到达Pod:使用kubectl端口转发服务/testcompany svc-n staging 3001:3001
并在本地使用http://localhost:3001/...
在发布之前检查任何其他入口规范规则
检查VPC网络中的防火墙规则,它们应该允许来自Google LBs的流量
您应该按以下顺序检查此项:
您的服务、Pod和入口位于同一命名空间中:kubectl get all-n staging
您的Pod正在端口3001上侦听:如果可以,请在本地运行,或者使用kubectl port forward pods/[Pod name]-n staging 3001:3001
并在本地使用http://localhost:3001/...
您的服务正确到达Pod:使用kubectl端口转发服务/testcompany svc-n staging 3001:3001
并在本地使用http://localhost:3001/...
在发布之前检查任何其他入口规范规则
检查VPC网络中的防火墙规则,它们应该允许来自Google LBs的流量
您能在内部呼叫您的服务吗?您可以使用节点的内部ip地址和节点端口来检查它。另外,确保pod有一个容器监听TCP端口3001。最后一件事,你的节点端口范围是30000-32767还是你自己定制的?更多信息通过运行此命令,Kubectl get service-o yamldid您是否尝试直接访问公共IP而不是主机名?使用curl,您可以如下设置主机curl-H“host:api.testcompany.com”
以避免DNS延迟或错误配置您安装了什么ingress controller
?你能提供链接吗?是ingress nginx
还是kubernetes ingress
?您是否也可以共享您的整个入口
清单,以便我们可以查看所有注释等+1.请回答上述问题。当您curl
直接访问服务IP时,它是否正常工作?@Milad谢谢您的评论。来自nodeport的端口在默认范围之间。在本地,它正在工作,但我在本地没有域。谢谢你的评论,这很有用@guillaumeblaquiere感谢您的评论。如果我尝试访问ingress nginx控制器外部ip,我有404。您可以在内部调用您的服务吗?您可以使用节点的内部ip地址和节点端口来检查它。另外,确保pod有一个容器监听TCP端口3001。最后一件事,你的节点端口范围是30000-32767还是你自己定制的?更多信息通过运行此命令,Kubectl get service-o yamldid您是否尝试直接访问公共IP而不是主机名?使用curl,您可以如下设置主机curl-H“host:api.testcompany.com”
以避免DNS延迟或错误配置您安装了什么ingress controller
?你能提供链接吗?是ingress nginx
还是kubernetes ingress
?您是否也可以共享您的整个入口
清单,以便我们可以查看所有注释等+1.请回答上述问题。当您curl
直接访问服务IP时,它是否正常工作?@Milad谢谢您的评论。来自nodeport的端口在默认范围之间。在本地,它正在工作,但我在本地没有域。谢谢你的评论,这很有用@guillaumeblaquiere感谢您的评论。如果我尝试访问ingress nginx控制器外部ip,我就得到了404。感谢步骤3之前的答案,一切正常,我应该检查ingress规范规则和防火墙。谢谢你,福斯托福萨罗,你的回答对分析一切都很有帮助。我缺少的是在CGP网络DNS中设置子域。感谢第三步的答案一切正常我应该检查入口规范规则和防火墙。谢谢你,福斯托福萨罗,你的回答对分析一切都很有帮助。我缺少的是在CGP网络DNS中设置子域。谢谢