K3s 是一个轻量级的 Kubernetes 发行版,它简化了 Kubernetes 的安装和管理,同时保持了与 Kubernetes API 的兼容。在 K3s 中,服务发现与负载均衡的机制与标准的 Kubernetes 非常相似。以下是 K3s 中节点内服务发现与负载均衡的主要机制:
服务发现
-
Kubernetes 服务 (Service)
- Kubernetes 服务 (Service) 是一种抽象,它定义了一组逻辑上相同的 Pods 以及一个访问它们的策略。
- 每个服务都有一个 DNS 名称,这个名称由 Kubernetes 内置的 DNS 服务器解析。
- 当应用程序需要访问另一个服务时,可以直接使用这个 DNS 名称。
-
Kube-DNS/CoreDNS
- K3s 使用 CoreDNS 作为默认的 DNS 服务器,它负责解析 Kubernetes 服务的 DNS 名称。
- CoreDNS 会根据 Kubernetes 的服务和端点信息,动态生成 DNS 记录,以便在 Pod 内部进行服务发现。
负载均衡
-
ClusterIP 服务
- ClusterIP 是 Kubernetes 的默认服务类型。它通过分配一个虚拟 IP 地址(ClusterIP),使服务在集群内部可达。
- 当客户端(Pod)访问这个 ClusterIP 地址时,Kube-proxy 会根据负载均衡策略(如轮询)将流量分配到后端的 Pod。