Service

作者: cdz620 | 来源:发表于2020-03-02 14:18 被阅读0次

    docs

    http://kubernetes.io/docs/user-guide/services/

    Service

    • service是逻辑pods逻辑集合的抽象
    • 解耦服务于pod间的关系,应用只关心服务,不关心pod,service内部保持相对稳定
    • 服务对外隐蔽,内部保持稳定
    • 保证pod label 唯一性,任何pod的label匹配到service的selector,都会被当做可以被接入的service port

    ServicePort

    containerPort

    • 默认情况下和port相同
    • 可以为string,代表pod的的port
    • 可以和默认的port不相同

    kube-proxy

    userspace 代理模式

    • 监听kube-master增加或者移除Service和Endpoint对象。针对每个Service,在node节点随机开启proxy-prot端口,从service 代理到proxy-port的流量都会转发到node节点的pod上。
    • 默认流量是轮训转发.可以将service.spec.sessionAffinity设置成“ClientIp”(只有两个值“clientIp”或者None),基于IP亲和性转发

    iptables 代理模式

    • 监听kube-master增加或者移除Service和Endpoint对象。针对Service,本地安装防火墙规则,捕获到Service's clusterIp的流量,直接重定向到pod节点,不走kube-proxy

    Headless services

    Headless services 是指不需要通过ClusterIp负载均衡的需求,可以通过设置spec.clusterIP 为None,

    提供服务到外部的ip

    • ClusterIP
    • NodePort
    • LoadBalancer
    • ExternalName 提供重定向服务到外部集群
    • ExternalIPs

    ClusterIP

    提供一个集群内部的ip,集群内可以访问

    NodePort

    • 外部可以通过<NodeIP>:<NodePort> 访问服务
    • Service’s spec.ports[*].nodePort 可以有系统分配或者手工指定
    • 手工指定nodePort时必须考虑到冲突的情况,默认是(30000 - 32768)
    • port指定ClusterIP服务访问的端口 docs
    • 可以通过 <NodeIP>:<spec.ports[*].nodePort>或者<clusterIp>:<spec.ports[*].port> 访问服务

    LoadBalancer

    具体详细的支持,需要看cloud provider

    ExternalIPs

    • 不管ServiceType是什么类型,用户只要确保流量能够到达ExternalIPs,都可以通过externalIP:port 访问服务
    • externalIp 不属于kubernetes-system管理,使用该选项时,用户必须要确保能够保证请求能够到达externalIp, 还必须保证没有port 冲突(访问服务:externalIp:port)

    相关文章

      网友评论

          本文标题:Service

          本文链接:https://www.haomeiwen.com/subject/lszrchtx.html