我正在学习kubernetes,目前正在尝试部署演示hello-world容器并将其作为服务公开(类型NodePort)。我有一个主机和一个工人连接到群集。使用weavenet作为CNI。
我一直在关注exposing it as a service.的官方k8s文档
我有一个副本通过部署运行,并且作为服务公开。
这是kubectle get all
的输出:
NAME READY STATUS RESTARTS AGE
pod/hello-world-f9b447754-fthwg 1/1 Running 0 2d7h
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/hello-world NodePort 10.96.217.234 <none> 8080:31097/TCP 2d7h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/hello-world 1/1 1 1 2d7h
NAME DESIRED CURRENT READY AGE
replicaset.apps/hello-world-f9b447754 1 1 1 2d7h
虽然我可以直接卷曲到<worker IP>:<NodePort>
并获得响应,但是我无法通过<master IP>:<NodePort>
卷曲到服务。几秒钟的延迟后,我收到错误消息:curl: (7) Failed to connect to <master-IP> port 31097: No route to host
。
任何其他端口或通过群集IP都会给我错误:curl: (7) Failed to connect to 10.96.217.234 port 31097: Connection refused
问题:
我在这里想念什么?应该可以通过群集外部的主IP和NodePort访问该服务吗?
kube-proxy在两个节点上都运行,并且apiserver似乎运行良好。有人提到我可能需要更改与apiserver对应的YAML文件,尽管我不确定该如何或该怎么做。
我需要可以通过主IP和公开端口访问该服务。我应该看一下集群配置的哪一部分才能使它正常工作。我是新手,想学习kubernetes的工作原理以及与容器相关的一切。
PS
我正在通过主节点的PC浏览器尝试curl命令。永远都行不通。同样适用于worker-IP。
我是在使用代理但为主IP和工作IP设置了no_proxy的公司网络中进行此操作。
这也是所有正在运行的吊舱:
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-6955765f44-hhf7x 1/1 Running 0 2d10h
kube-system coredns-6955765f44-z5vx5 1/1 Running 0 2d10h
kube-system etcd-master-node 1/1 Running 0 2d10h
kube-system kube-apiserver-master-node 1/1 Running 0 2d10h
kube-system kube-controller-manager-master-node 1/1 Running 3 2d10h
kube-system kube-proxy-9m9gk 1/1 Running 0 2d9h
kube-system kube-proxy-nttqg 1/1 Running 0 2d10h
kube-system kube-scheduler-master-node 1/1 Running 3 2d10h
kube-system weave-net-6qlt8 2/2 Running 1 2d10h
kube-system weave-net-fk9nc 2/2 Running 0 2d9h
production hello-world-f9b447754-fthwg 1/1 Running 0 2d8h