Kubernetes版本: v1.10.3
Docker版本: 17.03.2-CE
操作系统和内核: Centos 7
重现步骤: https://kubernetes.io/docs/tasks/access-application-cluster/service-access-application-cluster/
结果:
[root @ rd07 rd] #kubectl describe services example-service
姓名:示例服务
命名空间:默认
标签:run = load-balancer-example
注释:
选择器:run = load-balancer-example
类型:NodePort
IP:10.108.214.162
港口:9090 / TCP
TargetPort:9090 / TCP
NodePort:31105 / TCP
终点:192.168.1.23:9090,192.168.1.24:9090
会话亲和力:无
外部交通政策:集群
事件:
预期:
期望能够卷曲kubernetes服务中定义的集群ip
我不确定哪个是所谓的" public-node-ip",所以我尝试了每个相关的ip地址,只有当使用主ip作为" public时-node-IP"它显示"没有主持人的路线"。
我用过" netstat"检查端点是否被监听。
我试过" https://github.com/rancher/rancher/issues/6139"冲洗我的iptables,它根本不起作用。
我试过" https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/"," nslookup hostnames.default"没有用。
服务似乎运行得很好,但仍然无法访问服务。
我正在使用" calico"和法兰绒"也试过了。
我尝试了很多应用服务的教程,但都无法访问它们。
我是kubernetes的新手,如果有人可以帮助我,那就好了。
答案 0 :(得分:1)
如果您在任何公共云上,则不应在ip a
命令获取公共IP地址。但即使该端口将暴露给0.0.0.0:31105
以下是您可以验证配置的示例文件:
apiVersion: v1
kind: Service
metadata:
labels:
k8s-app: app-name
name: bss
namespace: default
spec:
externalIPs:
- 172.16.2.2
- 172.16.2.3
- 172.16.2.4
externalTrafficPolicy: Cluster
ports:
- port: 9090
protocol: TCP
targetPort: 9090
selector:
k8s-app: bss
sessionAffinity: ClientIP
type: LoadBalancer
status:
loadBalancer: {}
只需在<private-ip>
替换externalIPs:
,然后使用您的节点端口卷曲您的公共IP。
如果您使用任何云部署应用程序,还要验证来自云安全组/防火墙的配置以打开端口。
希望这可能会有所帮助。
谢谢!
答案 1 :(得分:0)
我的k8s群集是1个主节点和1个节点 服务pod正在节点上运行 所以我使用了http://nodeip:31105,它显示了“Hello Kubernetes!” 但是http://masterip:31105仍然不起作用,它是否正确? 我检查了端点监听,31105是在主人上听的。