Cloud/Kubernetes

Kubernetes Service Option - 2

퐁스 2021. 3. 3. 10:28

 의욕도 안생기고 힘들지만 할 건 해야지... 

SessionAffinity (None, ClusterIP)

 SessionAffinity는 Kubernetes에서 제공하는 Sticky Session 기능이다.  Sticky Session은 한 클라이언트의 요청을 같은 인스턴스로 접속할 수 있도록 세션을 유지해주는 기능인데, 해당 기능을 사용하지 않으면 세션을 유지해야하는 옵션이 생겼을 때 접속시마다 다른 인스턴스로 요청하여 문제가 될 수 있다.

 그럴 때 서비스 SessionAffinity 옵션을 ClusterIP로 바꾸면 특정 클라이언트의 연결을 동일한 파드로 전달할 수 있다. 사용 예는 아래와 같이 SessionAffinity 옵션을 걸어주고, 걸맞는 상세값을 제공하면 된다. 얘는 iptables을 활용하여 기능을 구현한다. IP 주소와 Enpoints를 캐시에 집어넣고, 접속마다 캐시를 살펴보는 식으로 동작한다. 

apiVersion: v1
kind: Service
metadata:
  labels:
    alertmanager: main
  name: alertmanager-main
  namespace: monitoring
spec:
  clusterIP: 10.96.147.20
  externalTrafficPolicy: Cluster
  ports:
  - name: web
    nodePort: 31150
    port: 9093
    protocol: TCP
    targetPort: web
  selector:
    alertmanager: main
    app: alertmanager
  sessionAffinity: ClientIP
  sessionAffinityConfig:
    clientIP:
      timeoutSeconds: 10800
  type: NodePort

https://www.hwchiu.com/kubernetes-service-iiii.html