谷歌Kubernetes引擎入口不';行不通
创建入口遵循GKE上“Kubernetes in Action”一书的指南,但入口不起作用,可以从入口的公共IP地址访问谷歌Kubernetes引擎入口不';行不通,kubernetes,google-cloud-platform,google-kubernetes-engine,Kubernetes,Google Cloud Platform,Google Kubernetes Engine,创建入口遵循GKE上“Kubernetes in Action”一书的指南,但入口不起作用,可以从入口的公共IP地址访问 创建复制集以创建pod 创建服务。(遵循“Kubernetes in Action”上的节点端口方法) 创建入口 复制集、服务、入口创建成功,节点端口可以从公共IP地址访问,入口没有不健康 复制集: apiVersion: apps/v1beta2 kind: ReplicaSet metadata: name: kubia spec: replicas: 3 s
apiVersion: apps/v1beta2
kind: ReplicaSet
metadata:
name: kubia
spec:
replicas: 3
selector:
matchLabels:
app: kubia
template:
metadata:
labels:
app: kubia
spec:
containers:
- name: kubia
image: sonyfaye/kubia
服务:
apiVersion: v1
kind: Service
metadata:
name: kubia-nodeport
spec:
type: NodePort
ports:
- port: 80
targetPort: 8080
nodePort: 30123
selector:
app: kubia
入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: kubia
spec:
rules:
- host: kubia.example.com
http:
paths:
- path: /
backend:
serviceName: kubia-nodeport
servicePort: 80
节点端口本身可以从公共IP地址访问
C:\kube>kubectl获取svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.59.240.1 <none> 443/TCP 8d
kubia-nodeport NodePort 10.59.253.10 <none> 80:30123/TCP 20h
但是入口不能从外面进入
主机文件:
34.98.92.110 kubia.example.com
C:\kube>kubectl描述入口
Name: kubia
Namespace: default
Address: 34.98.92.110
Default backend: default-http-backend:80 (10.56.0.7:8080)
Rules:
Host Path Backends
---- ---- --------
kubia.example.com
/ kubia-nodeport:80 (10.56.0.14:8080,10.56.1.6:8080,10.56.3.4:8080)
Annotations:
ingress.kubernetes.io/backends: {"k8s-be-30123--c4addd497b1e0a6d":"HEALTHY","k8s-be-30594--c4addd497b1e0a6d":"HEALTHY"}
ingress.kubernetes.io/forwarding-rule: k8s-fw-default-kubia--c4addd497b1e0a6d
ingress.kubernetes.io/target-proxy: k8s-tp-default-kubia--c4addd497b1e0a6d
ingress.kubernetes.io/url-map: k8s-um-default-kubia--c4addd497b1e0a6d
Events:
<none>
C:\kube>telnet kubia.example.com 80
Connecting To kubia.example.com...
C:\kube>telnet 34.98.92.110 80
Connecting To 34.98.92.110...Could not open connection to the host, on port 80: Connect failed
从内部网尝试。
curl 34.98.92.110 IP可以得到一些结果,并且34.98.92.110的80端口可以从intranet访问
C:\kube>kubectl exec-it kubia-lrt9x bash
root@kubia-lrt9x:/# curl http://kubia.example.com
curl: (6) Could not resolve host: kubia.example.com
root@kubia-lrt9x:/#卷曲
默认后端-404
root@kubia-lrt9x:/#卷曲
默认后端-404
root@kubia-lrt9x:/#
root@kubia-lrt9x:/#卷曲
默认后端-404
root@kubia-lrt9x:/#
有人知道如何调试这个吗
节点端口已添加到防火墙,否则无法访问节点端口。入口IP似乎不需要添加到防火墙。尝试公开replicaset以便能够从外部连接:
$ kubectl expose rs hello-world --type=NodePort --name=my-service
请记住,首先删除服务kubia节点端口,并删除Ingress配置文件中带有服务的选择器和节,然后使用kubectl apply命令应用更改
您可以在此处找到更多信息:
有用的文档:。尝试公开replicaset以便能够从外部连接:
$ kubectl expose rs hello-world --type=NodePort --name=my-service
请记住,首先删除服务kubia节点端口,并删除Ingress配置文件中带有服务的选择器和节,然后使用kubectl apply命令应用更改
您可以在此处找到更多信息:
有用的文档:。您是否已将入口ip地址映射到DNS记录?谢谢,Harsh。是的。在我的例子中,使用hosts文件映射hosts文件:34.98.92.110 kubia.example.com。问题是,入口ip的80端口不能从internet访问,但可以从kubernetes intranet访问。它将默认后端404设置为内部网访问。您是否已将入口ip地址映射到DNS记录?谢谢,Harsh。是的。在我的例子中,使用hosts文件映射hosts文件:34.98.92.110 kubia.example.com。问题是,入口ip的80端口不能从internet访问,但可以从kubernetes intranet访问。它将默认后端404导出到内部网访问。
Connecting To 34.98.92.110...Could not open connection to the host, on port 80: Connect failed
root@kubia-lrt9x:/# curl http://kubia.example.com
curl: (6) Could not resolve host: kubia.example.com
$ kubectl expose rs hello-world --type=NodePort --name=my-service