Cloud/Kubernetes

[따배쿠] 7-3. 쿠버네티스 Headless Service와 Kube Proxy

Tony Lim 2022. 2. 13. 14:35
728x90

dns 레코드 가 core dns 에 등록된다. == pod에 대한 endpoint 를 dns resolving service로 요청이 가능해진다.

pop~.local 의 DNS주소를 부여해준다.

 

type이 따로 존재하는것이 아니라 clusterip: None 을 해줘야한다. 아니면 random으로 ip하나 생성해준다.

 

cluster ip가 none이지만 endpoint 는 위의 pod 3개를 포함하고 있다.

curl 10-36-0-1.default.pod.cluster.local 을 하게 되면 3번 째 pod에 요청을 날리게 된다.

 

https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#stable-network-id

 

StatefulSets

StatefulSet is the workload API object used to manage stateful applications. Manages the deployment and scaling of a set of Pods, and provides guarantees about the ordering and uniqueness of these Pods. Like a Deployment, a StatefulSet manages Pods that ar

kubernetes.io

statefulset 과 함께 유용하게 쓰인다. statefulset yaml 의 servicename을 통해 headless service는 $(servicename).$(namespace).svc.cluster.local 을 dns주소로 부여한다. 여기로 들어가면 3개의 pod중 하나 랜덤하게 가고, 즉 cluster domain 에 접속을하는것이다.

$(podname).$(governing service domain) , 여기로 가면 각 pod로 간다.

governing service domain == 저 위의 cluster domain 에 접속하는 url 을 의미하는것 같다.보통은?

serviceName이 여기서 headless service 를 가르키는킨다. headless service를 먼저 만들고 (이떄는 endpoint가 없다.)

그 후 stateful set을 해당 service이름으로 생성을 하면 endpoint에 pod들이 추가된다.

 

 

kube proxy

뒷단에서 iptables rule을 만들어준다.

 

ipvs 는 기본으로 못쓰고 별도의 지원 모듈을 설정을 해준후 사용이 가능하다.

kube proxy 는 service api 요청시 iptables rule 생성 + 클라이언트 연결 받는것 이 가장 중요한 역할이다.

 

728x90