不同类型的IP
Node IP:Node节点的IP地址
Pod IP:Pod的IP地址,Docker Engine根据docker0网桥的IP地址进行分配的,通常是一个虚拟的二层网络
Cluster IP:Service的IpP地址,属于Kubernetes集群内部的地址,无法在集群外部直接使用
不同类型的Port
nodePort:提供给集群外部访问service的入口
port:提供给集群内部访问service的入口
targetPort:容器应用访问的端口
实例
Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: framework
namespace: default
spec:
replicas: 3
selector:
matchLabels:
app: framework
template:
metadata:
labels:
app: framework
spec:
containers:
- name: framework
image: 192.168.2.45:8082/start:v3
ports:
- containerPort: 8080
imagePullSecrets:
- name: myregistrykey
NodePort类型的Service
apiVersion: v1
kind: Service
metadata:
name: framework-web-service
labels:
name: framework-web-service
namespace: default
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
protocol: TCP
nodePort: 32144
selector:
app: framework
访问URL:http://192.168.2.41:32144
分析:
访问的URL格式为:NodeIp + NodePort
查看当前集群SERVICE的详情,可以看到如SERVICE配置中定义的一样,对外提供访问的SERVICE,对于集群外部开放的端口是32144,集群内部是8080。
当我们通过 NodeIp + NodePort 访问SERVICE时,会得到该SERVICE的Cluster IP:10.92.12.23,PORT:8080。
CluserIp + Port 组成了 全局唯一的虚拟IP地址,负责对其下管理的Pod进行负载均衡。
这样做的原因:Pod的EndPoint会随着Pod的销毁和重新创建发生改变,而Service一旦创建,Cluster IP会保持全局唯一
由此串起来的链路是:NodeIP + NodePort ——> ClusterIP + Port ——> PodIP + Port