Pod 的访问问题
工作负载创建完成后,其在多个 Pod 中运行,而 Pod 由于具备弹性伸缩属性,因此访问 Pod 会面临如下几个问题:
- Pod 会随时被 Deployment 等控制器新建或删除,因此,直接访问 Pod 具有很大的不确定性,无法保证访问 Pod 的结果。
- Pod 的 IP 地址是在 Pod 启动后才被分配,在启动前并不知道 Pod 的 IP 地址。
- 工作负载是由一组(多个)运行相同镜像的 Pod 组成,逐个访问 Pod 也会带来很多问题。
使用 Service 解决 Pod 的访问问题
Kubernetes 中的 Service 对象就是用来解决上述 Pod 访问问题的。Service 有一个固定 IP 地址,用户可以通过访问 Service 来访问工作负载。而 Service 通过 Label 来选择 Pod,并将用户的访问流量转发给 Pod,同时,Service 还可以给 Pod 做负载均衡。
![图片](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/3cc41fb323e24a3987163d21cfe44ebf~tplv-goo7wpa0wc-image.image)
Service类型
Service 包含多种类型,适用于不同的场景。边缘托管支持以下类型的 Service:
- 集群内访问(ClusterIP):集群内访问是指将工作负载暴露给同一集群内其他工作负载访问的方式,可以通过 集群内部域名 访问。
![图片](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/7cf394cc300d46459731282e8ed12322~tplv-goo7wpa0wc-image.image)
- 节点端口访问(NodePort):节点端口访问是指在每个节点的IP上开放一个静态端口,通过静态端口对外暴露服务。外部用户通过请求节点IP:节点Port,即可从集群的外部访问一个服务。
说明
说明:如果使用的边缘节点为火山引擎边缘计算节点,需要为当前节点的端口配置外网防火墙入向访问规则
![图片](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/d95025191cc34530a2dc19501deafb0b~tplv-goo7wpa0wc-image.image)
- 负载均衡 (LoadBalancer):该类型的 Service 其实是 NodePort 类型的扩展,通过负载均衡器访问 Service,Service 再将请求转发到节点的 NodePort。该类型的 Service 通过负载均衡提供了更高的可靠性保障。
![图片](https://p9-arcosite.byteimg.com/tos-cn-i-goo7wpa0wc/cc5d98c9be2943f2afb302c4362dfab8~tplv-goo7wpa0wc-image.image)