Service是K8S最核心的概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求进行负载均发到后端的各个容器应用上;

一、集群外部访问Pod或Service

1、将容器应用的端口号映射到物理机

(1)通过设置容器级别的hostPort,将容器应用的端口映射到物理机上;
pod-hostport.yaml

  1. xxx
  2. kind: Pod
  3. xxx
  4. spec:
  5. containers:
  6. - name: webapp
  7. image: tomcat
  8. ports:
  9. - containerPort: 8080
  10. hostPort: 8081

(2)通过设置Pod级别的hostNetWork=true,该Pod中所有容器的端口号都被直接映射到物理机上;需要注意:在容器的ports部分,如果不指定hostPort,则默认hostPort等于containerPort;如果指定了hostPort,则hostPort的值必须等于containerHost的值;

2、将Service的端口号映射到物理机上

(1)通过设置nodePort映射到物理机上,同时设置Service的类型为nodePort;

  1. xxx
  2. kind: Service
  3. xxx
  4. spec:
  5. type: NodePort
  6. ports:
  7. - port: 8080
  8. targetPort: 8080
  9. nodePort: 8081

(2)通过设置LoadBalancer映射到云服务商提供的LoadBalancer的地址;