Kubernetes服务外部暴露与Pod就绪信号机制详解
1. 服务外部暴露基础
在Kubernetes中,将服务暴露给外部客户端有多种方式。其中一种是通过隐式分配节点端口(Node Port),外部客户端连接到某个节点的节点端口后,连接会被转发到其中一个Pod实例。而LoadBalancer类型的服务实际上是带有额外基础设施提供的负载均衡器的NodePort服务。使用 kubectl describe 查看服务信息时,能看到为该服务选择的节点端口。若打开此端口的防火墙,就可以通过节点IP访问服务。
如果使用Minikube,虽然不会配置负载均衡器,但仍可通过节点端口(在Minikube虚拟机的IP地址处)访问服务。
2. 外部连接特性
在处理外部发起的服务连接时,需要注意以下几个方面:
- 避免不必要的网络跳转 :当外部客户端通过节点端口连接服务时(包括先经过负载均衡器的情况),随机选择的Pod可能不在接收连接的同一节点上,这就需要额外的网络跳转。通过配置服务将外部流量仅重定向到接收连接的节点上运行的Pod,可以避免这种额外跳转。在服务的 spec 部分设置 externalTrafficPolicy 字段为 Local 即可实现:
spec:
externalTrafficPolicy: Local
...
不过,使用此设置也有缺点。正常情况下,连接会均匀分布在所有
超级会员免费看
订阅专栏 解锁全文
741

被折叠的 条评论
为什么被折叠?



