인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김소민님의 프로필 이미지
김소민

작성한 질문수

데브옵스(DevOps)를 위한 쿠버네티스 마스터

sessionAffinity 질문이요

작성

·

339

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

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

세션 어피니티는 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로도 요청 부탁드립니다.

감사합니다.

 

김소민님의 프로필 이미지
김소민

작성한 질문수

질문하기