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