Kubernetes 为什么我的ClusterIP不能与指定的ip一起工作?

Kubernetes 为什么我的ClusterIP不能与指定的ip一起工作?,kubernetes,flannel,calico,Kubernetes,Flannel,Calico,我已经用ClusterIP定义了一个新服务 [ciuffoly@master-node ~]$ kubectl get services NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4d1h test-reg

我已经用ClusterIP定义了一个新服务

[ciuffoly@master-node ~]$ kubectl get services
NAME         TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)          AGE
kubernetes   ClusterIP      10.96.0.1       <none>          443/TCP          4d1h    
test-reg     ClusterIP      10.102.196.35   <none>          5000/TCP         58m
test-web     LoadBalancer   10.108.151.13   192.168.1.125   80:30001/TCP     73m
但我无法使用ClusterIP连接到此服务

[ciuffoly@master-node ~]$ telnet 10.102.196.35 5000
Trying 10.102.196.35...
^C
根据答案,我也测试了NodePort,但我仍然有同样的问题

[ciuffoly@master-node ~]$ kubectl get services|grep reg
test-reg     NodePort       10.111.117.116   <none>          5000:30030/TCP   5m41s

[ciuffoly@master-node ~]$ kubectl delete svc test-reg
service "test-reg" deleted
[ciuffoly@master-node ~]$ netstat -an|grep 30030

[ciuffoly@master-node ~]$ kubectl apply -f myreg.yaml
myreg.yamldeployment.apps/test-reg unchanged
service/test-reg created
[ciuffoly@master-node ~]$ netstat -an|grep 30030
tcp        0      0 0.0.0.0:30030           0.0.0.0:*               LISTEN
这很有效

[ciuffoly@master-node ~]$ telnet worker-node1  30030
Trying 192.168.1.20...
Connected to worker-node1.
Escape character is '^]'.
^]
telnet> q
Connection closed.
从:

服务类型
ClusterIP
公开集群内部的服务 知识产权。选择此值将使服务只能从中访问 在集群内。这是默认的服务类型

因此,您只能从集群内访问ClusterIP服务。因此,您可以部署一个安装了telnet的pod,并从那里测试您的设置

如果要从主机连接,可以使用服务类型


这样,您就可以通过
hostname:30080
连接到该服务。问题是,您可以使用集群的每一个主机名。

这是一个社区wiki答案,旨在提高可见性。请随意扩展它

安德里亚·齐福利已经证实,从法兰绒改为印花布解决了这个问题

Flannel是一种非常简单的覆盖网络,满足Kubernetes要求

另一方面,Calico是用于容器、虚拟机和基于本机主机的工作负载的开源网络和网络安全解决方案。Calico支持多个数据平面,包括:纯Linux eBPF数据平面、标准Linux网络数据平面和Windows HNS数据平面。Calico提供了完整的网络堆栈,但也可以与配合使用,以提供网络策略实施


很难说最终解决方案背后的唯一原因是什么,但您可以找到一些详细信息。

ClusterIP在集群内部有效。所以你需要进入一个Pod,使用telnet来使用ClusterIPok,但是有一种方法可以创建一个逻辑ip,我可以从master和所有worker连接它?我想将其用于本地注册我看到您有一个连接了外部IP的LoadBalancer服务。它附在什么上?您能描述一下(kubectl Descripte resource type resource name)服务和您试图到达的Pod吗?所有问题都已通过使用印花布而不是法兰布解决![ciuffoly@master-node~]$kubectl获取服务名称类型CLUSTER-IP EXTERNAL-IP端口年龄测试注册节点端口10.102.196.35 5000:30030/TCP 148m[ciuffoly@master-node~]$telnet 10.102.196.35 30030正在尝试10.102.196.35^考虑到使用NodePort对节点故障的恢复能力不如使用LoadBalancer服务。LoadBalancer服务是在HA和恢复能力需要发挥作用的情况下使用的服务类型。好的,但是NodePort和LoadBalancer都不能从主机上工作-node@AndD这是正确的。但在大多数onprem设置中,您没有现成的负载平衡器。@andreaciuffoli:不要在主机上使用clusterIP for telnet。使用主机名或IP节点。e、 g.
telnet主节点30080
(或您使用的端口…)
[ciuffoly@master-node ~]$ telnet master-node  30030
Trying 192.168.1.10...
^C
[ciuffoly@master-node ~]$ telnet worker-node1  30030
Trying 192.168.1.20...
Connected to worker-node1.
Escape character is '^]'.
^]
telnet> q
Connection closed.
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: MyApp
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30080