繁体   English   中英

Kubernetes - 做什么<unset>意味着在服务的端口?

[英]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 会为服务类型NodePortLoadBalancer选择 30000-32767 之间的随机可用端口)。

因此,如您所见,虽然我们可以忽略targetPortNodePort ,但如果没有“端口”(虚拟端口),则不存在 Service。

顺便说一句:这些虚拟 IP 和服务端口完全存在于 IPtables 规则中(如果使用 IPtables)以及通过此虚拟 ip:port 从/到节点或容器的转发规则。

请注意: Headless Service是这个概念的一个例外。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM