本文主要整理一下学习和实践过程中,外部如何访问集群内部服务的三种方法,记录一下实践的过程和理解。
1. k8s集群中三种IP(NodeIP、PodIP、ClusterIP)介绍
1.1 三种 IP 定义
- NodeIP:Node 节点的 IP 地址,即物理机(虚拟机)的 IP 地址。
- PodIP:Pod 的 IP 地址,即 docker 容器的 IP 地址,此为虚拟 IP 地址。
- ClusterIP:k8s 虚拟的 Service 的 IP 地址,此为虚拟 IP 地址。
1.2 三种 IP 的理解
- Node IP:
是物理机的IP(或虚拟机IP)。每个Service都会在Node节点上开通一个端口,外部可以通过 http://NodeIP:NodePort 即可访问 Service 里的 Pod 提供的服务。 - Pod IP:
是每个 Pod 的 IP 地址,Docker Engine根据 docker 网桥的 IP 地址段进行分配的,通常是一个虚拟的二层网络。- 同Service下的pod可以直接根据PodIP相互通信
- 不同Service下的pod在集群间pod通信要借助于 cluster ip
- pod和集群外通信,要借助于node ip
- Cluster IP
是 Service 的 IP 地址,此为虚拟 IP 地址,外部网络无法 ping 通,只有kubernetes集群内部访问使用。