概览

  1. 产生原因:Pod时转瞬即逝的,每个Pod也有自己的IP,挂了后重启会被分配不同的ip,所以需要一个统一的服务提供,以屏蔽多个pod和pod的变化
  2. Service:它定义了 Pod 的逻辑集和访问 Pod 的协议,推荐使用Yaml来定义
  3. Service暴露方式:
    1. ClusterIP(默认):集群内部IP上公开Service,只能集群内访问
    2. NodePort:使用NAT在集群中选定Node的相同端口公开Service,NodeIP:NodePort
    3. LoadBalancer:
    4. ExternalName

image.png

  1. 匹配Pod方式:标签和选择器,标签是key:value形式的
    1. 选择器:指定哪些标签值被匹配
    2. 标签:key->value,打在pod上

image.png

实操

  1. 查看Service

    1. kubectl get services
  2. 查看deploy的label

image.png

  1. 根据label获取pods

    1. kubectl get pods -l app=kubernetes-bootcamp
  2. 根据label获取service

    1. kubectl get services -l app=kubernetes-bootcamp
  3. 为pod赋予label

    1. kubectl label pods $POD_NAME version=v
  4. 创建一个服务

    1. kubectl expose deployment/kubernetes-bootcamp --type="NodePort" --port 8080

    参考文档