Service是K8S最核心的概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求进行负载均发到后端的各个容器应用上;
一、集群外部访问Pod或Service
1、将容器应用的端口号映射到物理机
(1)通过设置容器级别的hostPort,将容器应用的端口映射到物理机上;
pod-hostport.yaml
xxx
kind: Pod
xxx
spec:
containers:
- name: webapp
image: tomcat
ports:
- containerPort: 8080
hostPort: 8081
(2)通过设置Pod级别的hostNetWork=true,该Pod中所有容器的端口号都被直接映射到物理机上;需要注意:在容器的ports部分,如果不指定hostPort,则默认hostPort等于containerPort;如果指定了hostPort,则hostPort的值必须等于containerHost的值;
2、将Service的端口号映射到物理机上
(1)通过设置nodePort映射到物理机上,同时设置Service的类型为nodePort;
xxx
kind: Service
xxx
spec:
type: NodePort
ports:
- port: 8080
targetPort: 8080
nodePort: 8081
(2)通过设置LoadBalancer映射到云服务商提供的LoadBalancer的地址;