![](/img/trans.png)
[英]netstat showing foreign ports as kubernetes:port. What does this mean?
[英]Kubernetes - what does <unset> mean in port in a service?
我有一个类型为 = LoadBalancer 的服务,当我执行
kubectl describe services servicename
,
我得到这个输出:
Name: ser1
Namespace: default
Labels: app=online1
Selector: app=online1
Type: LoadBalancer
IP: 10.0.0.32
External IPs: 192.168.99.100
Port: <unset> 8080/TCP
NodePort: <unset> 30545/TCP
Endpoints: 172.17.0.10:8080,172.17.0.11:8080,172.17.0.8:8080 + 1 more...
Session Affinity: None
有人可以指导以下疑问:
1.) 我无法理解<unset>
在 Port 和 NodePort 中的含义。 另外,它如何影响我的服务?
2.) 当我想访问一个服务时,我使用<external-ip:NodePort>
来访问该服务,对吗? 那么Port有什么用呢?
端口未设置意味着:您没有在服务创建中指定名称。
服务 Yaml 摘录(注释name: grpc
):
spec:
ports:
- port: 26257
targetPort: 26257
name: grpc
type: NodePort
kubectl describe services servicename
输出摘录:
Type: NodePort
IP: 10.101.87.248
Port: grpc 26257/TCP
NodePort: grpc 31045/TCP
Endpoints: 10.20.12.71:26257,10.20.12.73:26257,10.20.8.81:26257
端口是服务将在(实际端点)上发送流量的容器端口的定义。
回答问题的第二部分: When I want to hit a service, I hit the service using <external-ip:NodePort> right? Then what's the use of Port?
When I want to hit a service, I hit the service using <external-ip:NodePort> right? Then what's the use of Port?
:
k8s 中的Service
是虚拟 IP 和虚拟端口的组合。
就像我们为(以太网)接口分配 IP 以通过它进行通信一样,这种虚拟 IP:端口组合是一种通过服务进行通信的方式。
targetPort
是目标容器的端口。 (如果不指定,k8s默认为Service的端口(虚拟端口))
NodePort
是在机器的以太网接口(配置了 k8s 集群)上公开的端口。 (如果未指定,k8s 会为服务类型NodePort
和LoadBalancer
选择 30000-32767 之间的随机可用端口)。
因此,如您所见,虽然我们可以忽略targetPort
或NodePort
,但如果没有“端口”(虚拟端口),则不存在 Service。
顺便说一句:这些虚拟 IP 和服务端口完全存在于 IPtables 规则中(如果使用 IPtables)以及通过此虚拟 ip:port 从/到节点或容器的转发规则。
请注意: Headless Service
是这个概念的一个例外。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.