在 Kubernetes(K8s)集群中,涉及多种 IP 地址类型,每种都有特定的生成方式、使用方法以及与 API Server 的关联。以下是主要的 IP 地址类型及其详细说明:
-
Node IP(节点 IP) :
- 生成方式:每个节点(物理机或虚拟机)都有一个唯一的 IP 地址,通常由云服务提供商或网络管理员分配。
- 用途:用于节点间通信和外部访问。外部客户端可以通过
NodeIP:NodePort
访问暴露在节点上的服务。 - 与 API Server 的关联:API Server 通过节点的 IP 地址与集群中的各个节点通信。
-
Pod IP(Pod IP) :
- 生成方式:每个 Pod 都有一个唯一的 IP 地址,通常由网络插件(如 CNI 插件)在 Pod 创建时分配。
- 用途:用于 Pod 间通信。集群内的 Pod 可以直接通过 Pod IP 相互通信。
- 与 API Server 的关联:API Server 通过 Pod 的 IP 地址管理和调度 Pod。
-
Cluster IP(集群 IP) :
- 生成方式:为每个 Service 分配的虚拟 IP 地址,通常由 API Server 在 Service 创建时从预配置的 IP 范围内动态分配。
- 用途:用于集群内部访问。集群内的客户端可以通过
ClusterIP:Port
访问服务。 - 与 API Server 的关联:API Server 负责为 Service 分配
ClusterIP
,并通过该 IP 管理服务的生命周期和配置。需要注意的是这个IP是不支持直接访问的,可以理解成它相当于一个接口形式的IP,负责流量转发到label匹配的Pod的容器应用上。
-
External IP(外部 IP) :
- 生成方式:由云服务提供商或外部负载均衡器分配的 IP 地址,用于集群外部访问服务。
- 用途:外部客户端可以通过
ExternalIP:Port
访问服务。 - 与 API Server 的关联:API Server 通过
ExternalIP
管理服务的暴露和访问控制。
-
API Server IP(API Server IP) :
- 生成方式:Kubernetes API Server 的 IP 地址,通常由集群管理员在集群初始化时配置。
- 用途:用于集群内部和外部的 API 请求。客户端和集群组件通过
API Server IP
进行通信。 - 与 API Server 的关联:API Server 的 IP 地址是集群管理和操作的核心,所有的 API 请求都通过此地址进行。
-
Ingress IP(Ingress IP) :
- 生成方式:由 Ingress Controller 分配的 IP 地址,用于集群外部访问服务。
- 用途:外部客户端可以通过
IngressIP:Port
访问服务。