我有一个定义为ClusterIP服务类型的服务,但是我很惊讶地看到它具有端点,因此可以从群集外部访问。
根据定义,clusterIP服务类型只能从Kubernetes集群内部访问,但是具有端点可以使该服务可以从任何地方(在某个VNET内)插入,并且可以从集群外部访问。
有人知道为什么会这样吗?
Name: active-mq-service
Namespace: qa-env
Labels: name=active-mq-service
Annotations: Selector: app=active-mq
Type: ClusterIP
IP: 10.0.140.160
Port: dashboard 8161/TCP
TargetPort: 8161/TCP
Endpoints: 10.3.1.20:8161
Port: openwire 61616/TCP
TargetPort: 61616/TCP
Endpoints: 10.3.1.20:61616
Port: amqp 5672/TCP
TargetPort: 5672/TCP
Endpoints: 10.3.1.20:5672
Port: stomp 61613/TCP
TargetPort: 61613/TCP
Endpoints: 10.3.1.20:61613
Port: mqtt 1883/TCP
TargetPort: 1883/TCP
Endpoints: 10.3.1.20:1883
Session Affinity: None
Events: <none>
谢谢
答案 0 :(得分:2)
您看到的终结点是服务背后Pod的IP地址和端口。
创建集群时,定义一个Pod IP地址范围,并且每个Pod在创建时都从该范围获得一个IP地址(这些是“虚拟” IP地址,这意味着没有使用这些IP的物理网络设备地址)。
根据您使用的CNI插件,此CNI插件会配置主机网络中网关中的路由条目,以将消息路由到这些Pod(在您使用未封装 CNI插件时,参见encapsulated vs unencapsulated CNI plugins)。因此,如果您可以从群集外部访问此网关(例如,从同一个VNET访问),则可以从群集外部访问这些Pod。
但是,这是一种特殊情况,通常会限制并缩小在其中创建Kubernetes集群的网络的范围,以便没有意外的源可以访问集群中的任何内容。
答案 1 :(得分:0)
端点地址是Pod的(内部IP),因此无法从外部访问。
在Kubernetes中,在服务的上下文中,您具有以下地址: