• service


    service作用: 可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上,实现分布式应用统一入口和负载均衡机制;
    注意: pod和service都是kubernetes集群范围内的虚拟概念, 集群外的客户端无法通过podip或service的虚拟ip和虚拟端口访问它们,
    为什么需要service:

    1.pod的ip地址不可靠 
    2.容器进行分布式部署, 通过多个实例提供共同服务, 需要在这些实例前面设置一个负载均衡器来实现请求的分发
    

    kubernetes支持两种分发策略:

    1.RoundRobin : 默认模式, 轮询模式, 既轮询将请求转发到后端的各个pod上
    2.SessionAffinity: 基于客户端ip地址进行会话保持的模式, 可以使用service.spec.sessionAffinity=ClientIP基于客户端会话保持
    

    1)service基本用法

    apiVersion: v1 
    kind: Service
    metadata:
      name: nginx-service
      namespace: default 
      labels:
        app: nginx
    spec:
      sessionAffinity: None
      selector: 
        app: nginx
      ports:
      - name: http
        port: 80 
        protocol: TCP 
        targetPort: 80 
    #说明: port: 80  name为service name,  port 为service port, targetPort为pod容器port, selector是后端pod拥有的label, sessionAffinity: None表示分发策略为RoundRobin
    

    2)service用法: 多端口

    apiVersion: v1 
    kind: Service
    metadata:
      name: nginx-service
      namespace: default 
      labels:
        app: nginx
    spec:
      sessionAffinity: None
      selector: 
        app: nginx
      ports:
      - name: http
        port: 80 
        protocol: TCP 
        targetPort: 80 
      - name: https
        port: 443
        protocol: TCP 
        targetPort: 443
    

    3)service用法: headless service(无头service)
    无头service特点:

    1. 解析service name返回pod的ip列表, 客户端可以自己觉得那个real server
    2. 在statefulset中会为每个pod分配一个dns记录, {pod name}.{service name}
    
    apiVersion: v1 
    kind: Service
    metadata:
      name: nginx-service
      namespace: default 
      labels:
        app: nginx
    spec:
      sessionAffinity: None
      selector: 
        app: nginx
      clusterIP: None
      ports:
      - name: http
        port: 80 
        protocol: TCP 
        targetPort: 80 
    

    4)service用法: node port 集群外访问pod

    apiVersion: v1 
    kind: Service
    metadata:
      name: nginx-service
      namespace: default 
      labels:
        app: nginx
    spec:
      type: NodePort
      selector: 
        app: nginx
      ports:
      - name: http
        port: 80 
        protocol: TCP 
        targetPort: 80 
        NodePort:  8888
    
    #注意: NodePort: 8888 可以指定, 也可以不指定
    
  • 相关阅读:
    day5_python之hashlib模块
    day6_python之pickle、shelve序列化和反序列化
    day6_python之json序列化和反序列化
    day6_python之configparser_模块
    day1_python之字符串的常用操作
    day6_python序列化之 json & pickle & shelve 模块
    python如何自动发送邮件
    python selenium 获取对象输入的属性值
    python selenium 处理悬浮窗口(baidu tj_more)
    python selenium处理JS只读(12306)
  • 原文地址:https://www.cnblogs.com/lovelinux199075/p/11251668.html
Copyright © 2020-2023  润新知