작성
·
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로도 요청 부탁드립니다.
감사합니다.