# 网络概念及策略控制
# 基本网络模型
# 约法三单
- pod之间可以直接通信,无需显式使用NAT接收和地址转换
- node与pod之间可以直接通信,无需要明显地址转换
- pod可以看到自己的ip跟别人看到它所用的ip是一样的,中间不经过转换
# 分类
- underlay:与Host网络同层
- ovrelay:只要与Host网络不冲突,ip可以自由分配
# 14 Kubenets Service
metadata:
name: my-service
spec:
ports:
- protocol: TCP
port: 80
targetPort: 9376
1
2
3
4
5
6
7
2
3
4
5
6
7
# 集群内访问
my-service:80 -> 192.168.11.236:9376
my-service.my-namespace:80 -> 192.168.11.236:9376
172.18.255.16:80 -> 192.168.11.236:9376
环境变量
TASK_BUS_SERVICE_HOST=172.18.254.152
TASK_BUS_SERVICE_PORT=80
TASK_WORKER_SERVICE_HOST=172.18.255.164
TASK_WORKER_SERVICE_PORT=80
1
2
3
4
2
3
4
Headless ServiceclusterIP: None
不再提供虚拟IP来负载均衡
my-service:9376 -> 192.168.11.236:9376,192.168.11.237:9376
my-service.my-namespace:9376 -> 192.168.11.236:9376,192.168.11.237:9376
# 集群外访问
NodePort:在node上面暴露节点的一个端口,转发到虚拟的IP地址上面
LoadBalancer:
# APIServer
统一管理所有对象,所有组件注册到它上面监听对象的变化
# Cloud Controller Managere
负责去配置LoadBalance的一个负载均衡器给外部访问
# CoreDns
观测pod的变化,配置dns解析,实现通过service的名字直接访问service的虚拟IP或者Headless类型service的ip列表解析
# Kube-proxy
监听service与pod变化,实际配置集群pod或是虚拟地址的一个访问