[k8s] SessionAffinity

이정훈·2023년 5월 16일
0

k8s

목록 보기
17/17
post-thumbnail
post-custom-banner

SessionAffinity

  • Kubernetes 서비스에 대한 요청이 동일한 백엔드 Pod로 라우팅되도록 하는 기능
  • 클라이언트가 처음에 서비스를 호출할 때 해당 클라이언트의 후속 요청은 동일한 Pod로 라우팅되도록 설정

SessionAffinity사용

  • 세션 유지: 이 기능은 세션을 유지해야 하는 애플리케이션에 유용합니다. 예를 들어, 로그인한 사용자는 로그인한 후에도 동일한 Pod로 요청을 보내야 합니다.
  • 성능 향상: 이 기능은 여러 Pod가 있는 애플리케이션의 성능을 향상시키는 데 사용할 수도 있습니다. 특정 Pod에 대한 요청이 모두 동일한 Pod로 라우팅되면 해당 Pod는 해당 요청을 더 효율적으로 처리할 수 있습니다.

SessionAffinity옵션

  • ClientIP: 이 값은 클라이언트의 IP 주소를 기반으로 세션을 유지합니다.
  • None: 이 값은 세션 애피니티를 사용하지 않습니다.

SessionAffinity를 사용하면 애플리케이션이 더 효율적으로 실행되고 사용자 경험이 향상될 수 있습니다.

apiVersion: v1
kind: Service
metadata:
  name: http-go-svc
spec:
  selector:
    run: http-go
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
---

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    run: http-go
  name: http-go
spec:
  replicas: 1
  selector:
    matchLabels:
      run: http-go
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: http-go
    spec:
      containers:
      - image: gasbugs/http-go
        name: http-go
        ports:
        - containerPort: 8080
        resources: {}
status: {}

  • sessionAffinity: None
  • 확인
    kubectl run -it --rm --image=busybox bash
    wget -O- -q [10.105.210.147]
  • 로드밸런싱 되는것을 볼 수 있다.

  • sessionAffinity: ClientIP
  • 확인
    kubectl run -it --rm --image=busybox bash
    wget -O- -q [10.105.210.147]

  • 한곳에만 접속하는것을 확인할 수 있다.
profile
싱숭생숭늉
post-custom-banner

0개의 댓글