zoukankan      html  css  js  c++  java
  • k8s~service负载到pod的状态保持

    nginx或者其它负载均衡软件都有一个能力,就是当客户请求一个网页时,第一次访问的是A服务器,第二次也就会让你访问A服务器,而在k8s里,也有这种机制和能力。

    k8s的Session affinity

    1. Service同样也支持Session affinity(粘性会话)机制,可以将来自同一个客户端的请求始终转发至同一个后端的Pod对象,这意味着它会影响调度算法的流量分发功用,进而降低其负载均衡的效果。因此,当客户端访问Pod中的应用程序时,如果有基于客户端身份保存某些私有信息,并基于这些私有信息追踪用户的活动等一类的需求时,那么应该启用session affinity机制。

    2. Service affinity的效果仅仅在一段时间内生效,默认值为10800秒,超出时长,客户端再次访问会重新调度。该机制仅能基于客户端IP地址识别客户端身份,它会将经由同一个NAT服务器进行原地址转换的所有客户端识别为同一个客户端,由此可知,其调度的效果并不理想。Service 资源 通过. spec. sessionAffinity 和. spec. sessionAffinityConfig 两个字段配置粘性会话。 spec. sessionAffinity 字段用于定义要使用的粘性会话的类型,它仅支持使用“ None” 和“ ClientIP” 两种属性值。如下:

    查看相关配置

    [root@k8s-master mainfests]# kubectl explain svc.spec.sessionAffinity
    KIND:     Service
    VERSION:  v1
    
    FIELD:    sessionAffinity <string>
    
    DESCRIPTION:
         Supports "ClientIP" and "None". Used to maintain session affinity. Enable
         client IP based session affinity. Must be ClientIP or None. Defaults to
         None. More info:
         https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
    

    通过sessionAffinity实现客户端与Pod的会话保持

    apiVersion: v1
    kind: Service
    metadata:
      name: myapp
      namespace: default
    spec:
      selector:
        app: myapp
        release: canary
      sessionAffinity: ClientIP
      sessionAffinityConfig:
        clientIP:
          timeoutSeconds: 10800 #默认的过期时间是10800秒,到期后POD从新路由
      type: NodePort
      ports: 
      - port: 80
        targetPort: 80
        nodePort: 30080
    

    测试,同一个客户端IP走一个POD

    [root@k8s-master mainfests]# while true;do curl http://192.168.56.11:30080/hostname.html;sleep 1;done
    myapp-deploy-69b47bc96d-hwbzt
    myapp-deploy-69b47bc96d-hwbzt
    myapp-deploy-69b47bc96d-hwbzt
    myapp-deploy-69b47bc96d-hwbzt
    myapp-deploy-69b47bc96d-hwbzt
    myapp-deploy-69b47bc96d-hwbzt
    myapp-deploy-69b47bc96d-hwbzt
    myapp-deploy-69b47bc96d-hwbzt
    

    参考:https://www.cnblogs.com/linuxk/p/9605901.html

  • 相关阅读:
    Cmder安装和设置
    php7.x版本的新特性
    【Luogu】P4916 [MtOI2018]魔力环 题解
    Codeforces 1530E Minimax 题解
    昭阳E42-80 屏幕不亮,风扇狂转
    iPad宽高像素值
    关于UIView的autoresizingMask属性的研究
    判断单链表中是否存在环及查找环的入口点
    网络编程
    事件响应者链的工作原理
  • 原文地址:https://www.cnblogs.com/lori/p/15669513.html
Copyright © 2011-2022 走看看