service定义一组pod的访问规则

    1.service存在意义
    1)防止Pod失联 (服务发现)
    pod之间的相互调用不能使用ip访问,因为pod的ip是不固定的,可以使用servicename访问
    CoreDNS 把servicename和service-ip关联起来
    2)定义一组Pod访问策略(负载均衡)

    2.Pod和Service关系 (Pod和Controller关系)
    根据label和selector标签建立关联的
    通过service实现Pod的负载均衡
    service的ip是vip,虚拟ip,不是实际存在的

    3.service常用类型
    kubectl export —help # 可以查看type类型
    1)ClusterIP:集群IP,集群内部使用
    2)NodePort:对外访问应用使用,每个node节点都开一个port
    3)LoadBalancer:对外访问应用使用,公有云厂商使用,再进行公有云的负载均衡

    kubectl expose deployment web —port=80 —target-port=80 —dry-run -o yaml > service1.yaml

    node内网部署应用,外网一般不能访问到的
    找到一台可以进行外网访问机器,安装nginx,反向代理
    手动把可以访问节点添加到nginx里面

    1. service.yaml 内容有
    2. api
    3. kind
    4. metadata
    5. spec
    6. type: # NodePort、ClusterIP
    7. ports:
    8. - port: # Service暴露端口
    9. targetPort: # 真正提供服务的Pod端口
    10. nodePort: # 宿主机暴露端口
    11. selector:
    12. portservice端口,即k8s中服务之间的访问端口
    13. targetportpod(也就是容器)的端口
    14. nodeport是容器所在node节点的端口,即外部机器可访问的端口。(通过nodeport类型的service暴露给集群节点)