• 7、kubernetes资源清单之Service资源190714


    一、Service简介

    • Service为Pod提供固定服务端点
    • Service的本质是一条iptables或者ipvs的转发规则
    • userspace:1.1-
    • iptables:1.1+
    • ipvs:1.11+

    二、Service类型

    • ExternalName
    • ClusterIP:使用集群网络提供服务
    • NodePort:直接使用节点网络提供服务
    • LoadBalancer:例如k8s构建在阿里云上,可以直接使用阿里云提供的SLB服务

    三、使用清单创建service

    • ClusterIP类型:通过svc的IP访问
    # cat redis-svc.yaml 
    apiVersion: v1
    kind: Service
    metadata:
      name: redis-svc
      namespace: default
    spec:
      selector:  #支持等值选择器
        app: redis
        role: logstor
      clusterIP: 10.99.99.99  #客户不指定,会自动分配
      type: ClusterIP
      ports:
      - port: 6379  #Service端端口
        targetPort: 6379  #Pod端端口
    
    • NodePort类型:通过访问node的IP访问
    # cat myapp-svc.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: myapp-svc
      namespace: default
    spec:
      selector:  #支持等值选择器
        app: myapp
        release: canary
      clusterIP: 10.99.99.100
      type: NodePort
      ports:
      - port: 80  #Service端端口
        targetPort: 80  #Pod端端口
        nodePort: 10080  #节点端端口,端口范围:30000-32767
    

    四、资源记录

    • SVC_NAME.NS_NAME.DOMAIN.LTD. :资源记录格式
    • svc.cluster.local. :默认域名后缀
    • redis-svc.default.svc.cluster.local. :以上redis-svc的资源记录endpoint

    五、回话粘性

    # kubectl patch svc myapp-svc -p '{"spec":{"sessionAffinity":"ClientIP"}}'  #来自同一个IP的客户端调度到同一个pod,默认none
    

    六、无头Service(Headless)

    • 正常的service:service_name --> cluster_ip
    • 无头的service:service_name --> pod_ip
    # cat myapp-svc-headless.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: myapp-svc-headless
      namespace: default
    spec:
      selector:
        app: myapp
        release: canary
      clusterIP: "None"
      ports:
      - port: 80
        targetPort: 80
    # dig -t A myapp-svc-headless.default.svc.cluster.local. @10.244.0.2  #10.244.0.2为coreDNS的地址,可以解析到myAPP的pod的所以ip
    

    七、开启kubernetes支持ipvs

    # vim /etc/sysconfig/kubelet
    KUBE_PROXY_MODE=ipvs
    
    开机装载ip_vs ip_vs_rr ip_vs_wrr ip_vs_sh nf_conntrack_ipv4模块
    
  • 相关阅读:
    九.Spring Boot JPAHibernateSpring Data
    JIRA安装过程中链接mysql的问题!
    五、案例-指令参考-freemarker指令、表达式
    四、模版指令操作
    三、freemarker数据、模版指令
    二、freemarker.controller半自动静态化+Tomcat虚拟资源映射
    一、springMVC、freemarker页面半自动静态化
    window窗口-button(按钮)-dialog(对话框,带按钮)
    panel面板
    python 给定年份、月份,返回当月对应天数
  • 原文地址:https://www.cnblogs.com/L-dongf/p/11185843.html
Copyright © 2020-2023  润新知