• 카테고리

    질문 & 답변
  • 세부 분야

    데브옵스 · 인프라

  • 해결 여부

    미해결

sessionAffinity 질문이요

22.08.26 15:21 작성 조회수 234

0

강의 수강 후 sessionAffinity 관련 복습을 하는데 정상 작동하지 않아 문의드려요..

webserver라는 이미지에 톰캣서버를 3개 돌려서 한곳에 가는지 ip와 sessionid를 찍어봤는데

1번 pod에 붙어서 동작하다가 1~2분쯤지나면 2번pod에 붙어요..

테스트는 한 pc에서 메인페이지를 호출하면 log로 ip와 sessionid를 찍게 해놨고, 이 페이지를 계속 호출하다보면 pod가 변경되면서 remoteip와 sessionid가 변경되요.

즉, remoteip가 변경되서 lb에서 sessionAffinity가 적용되지 않는 것 같아요..

(remoteip도 docker 쪽 ip로 떴다가 관련 subent 대역에 포함되는 ip가 떴다가 하네요.. )

제가 생성한 deploy와 service 입니다 아래 내용말고 다른 것을 추가, 변경한 내용은 없어요..

도움 부탁드려요 ㅠㅠㅠ

apiVersion: apps/v1

kind: Deployment

metadata:

name: webserver

spec:

selector:

matchLabels:

app: webserver

replicas: 3

template:

metadata:

labels:

app: webserver

spec:

containers:

- name: webserver

image: somin/webserver

---

apiVersion: v1

kind: Service

metadata:

name: webserver

spec:

selector:

app: webserver

type: LoadBalancer

ports:

- port: 80

targetPort: 8080

sessionAffinity: ClientIP

답변 1

답변을 작성해보세요.

0

gasbugs님의 프로필

gasbugs

2022.09.03

안녕하세요 강사 최일선입니다.

세션 어피니티는 CNI에 따라서 동작할수도 있고 그렇지 않을 수도 있습니다.

강의 내용을 따라서 Weavenet으로 실습하시면 문제 없이 동작하며 다른 CNI를 사용하시는 경우에는 기능을 활성화해주시는 작업을 해야 할 수도 있습니다.

우선 강의 내용을 따라하셔서 현재 Weavenet으로 진행하고 계신지 먼저 여쭈어야 할 것 같습니다.

클라이언트IP로 세션어피니티를 구성하시면 기본 타임아웃 시간은 3시간으로 구성되어 있습니다.

 

다음은 https://kubernetes.io/ko/docs/concepts/services-networking/service/ 의 내용입니다.

특정 클라이언트의 연결이 매번 동일한 파드로 전달되도록 하려면, service.spec.sessionAffinity를 "ClientIP"로 설정하여 클라이언트의 IP 주소를 기반으로 세션 어피니티(Affinity)를 선택할 수 있다. (기본값은 "None") service.spec.sessionAffinityConfig.clientIP.timeoutSeconds를 적절히 설정하여 최대 세션 고정 시간을 설정할 수도 있다. (기본값은 10800으로, 3시간)

 

정확한 확인을 위해 ClusterIP로도 요청 부탁드립니다.

감사합니다.