Kubernetes 服务简介
在本教程中,我将为您提供Kubernetes 服务的完整概述。
Kubernetes 中的服务是什么?为什么我们需要它?🤔
在 Kubernetes 集群中,每个 Pod 都有自己的内部 IP 地址,但Kubernetes 中的 Pod 是临时的,这意味着它们经常被销毁。
当 Pod 重启,或者旧的 Pod 失效,新的 Pod 启动时,它会获得一个新的 IP 地址。
因此直接使用 Pod IP 地址是没有意义的,因为每次重新创建 Pod 时都必须进行调整。
稳定的IP地址
然而,使用服务组件,您可以获得稳定或静态 IP 地址的解决方案,即使 Pod 被销毁,该 IP 地址仍然保留。
所以基本上在每个 Pod 前面我们设置一个 Service,它代表一个稳定的 IP 地址。
负载均衡器
Service 还提供负载均衡,因为当你拥有 Pod 副本(例如 3 个 MySQL 副本)时,Service 会获取每个指向该 MySQL 应用程序的请求,然后将其转发到其中一个 Pod。这样
,客户端就可以调用一个稳定的 IP 地址,而不必逐个调用每个 Pod。👍
因此,服务是集群内部通信松散耦合的良好抽象,也是来自外部服务(如进入集群的浏览器请求)的良好抽象。
选择器、标签和端口
一旦请求被交给服务,服务就会知道将该请求转发到注册为服务端点的其中一个 Pod 。
你现在可能会问的问题是:
1. Service 如何知道将请求转发到哪个 Pod?
2. Service 如何知道将请求转发到哪个端口?
第一个由"selectors"定义。Service 使用 Service YAML 配置文件中的selector属性来定义其成员 Pod 或端点 Pod。Selector是一个键值对,必须与 Pod 配置文件中 metadata 部分定义的标签匹配:
我在下面的视频中更详细地解释了这个问题和第二个问题。
不同的服务类型⭐️
您可以配置多种类型的服务:
- ClusterIP 服务
- NodePort 服务
- 负载均衡服务
集群IP
最常见的是 ClusterIP,它是 Service 的默认类型。它是一种内部 Service,这意味着该 Service 只能在集群内部访问。
节点端口
在每个节点的 IP 上通过静态端口公开服务。因此,外部流量只能访问每个工作节点上的固定端口!
这种公开方式不太安全。更好的替代方案是使用 LoadBalancer 类型。
负载均衡器
使用 LoadBalancer 类型,服务可以通过云提供商的负载均衡器访问。每个云提供商(AWS、Azure、Google Cloud、Linode 等)都有自己原生的负载均衡器实现。
您还可以使用 Ingress 使您的服务可以从外部访问。它将充当集群的入口点,但 Ingress 不属于服务类型。K8s Ingress 的解释在这里。
多端口和无头服务
您可以在一个服务上配置多个端口。这称为多端口服务。
当 Pod 或客户端想要与另一个特定 Pod 直接通信时,就会使用无头服务。
它们不是type
直接通过字段配置的。
我将在这里更详细地解释它们之间的区别以及何时使用它们:
► 使用此代码可享受30% 折扣:UDEMY_NANA_NOV2020:Udemy 课程在此
► Kubernetes 101:紧凑且易于阅读的电子书包 🚀
这是一种快速查找某些内容或在工作中刷新知识并将其用作备忘单的便捷方法 😎
喜欢、分享并关注我😍以获取更多内容:
文章来源:https://dev.to/techworld_with_nana/kubernetes-services-simply-explained-d5