24.09.10 20:32 작성
·
37
·
수정됨
1
안녕하세요!
먼저 좋은 강의 만들어주신 것에 감사드립니다.
궁금한 게 51강 각 리소스별 동작 에서 서비스 생성 원리에 관한 부분인데요, 제가 이해한 바로는 서비스는 노드에 종속되지 않고 자신에게 연결된 파드에 트래픽을 분산해주는 객체라고 이해했습니다.
또한 kubelet은 자신의 노드에 떠 있는 컨테이너를 관리하고 모니터링 하는게 주요 역할인 것으로 생각했습니다.
강의에서는 kubelet이 kube proxy에 네트워크 생성을 요청한다고 설명해주셨는데, 서비스는 노드에 종속되는 개념은 아닌 것으로 이해했어서, 의아해서 질문 드립니다.
혹시 강의 예시에서는 서비스 타입이 NodePort라서 위와 같이 동작하는 것일까요?
ClusterIP 타입인 경우에는 다른 절차를 거쳐서 iptables가 설정되는 걸까요?
답변 1
0
2024. 09. 11. 09:10
안녕하세요. Service는 쿠버네티스에서 흔하게 쓰지만 사실 가장 어려운 개념입니다.
그리고 개념적으로만 쉽게 생각하면 쿠버네티스 클러스터 내에서 Pod에게 트래픽을 분산해 주기 위한 객체가 맞아요. 근데 실제 구현 관점에서 Service를 알려고 하면 좀 복잡해 집니다.
Sprint1에서는 Service의 개념과 역할적인 부분만 다루는 게 목적이나, 전체적인 구성을 설명하다보니, Service의 몇몇 실체들도 설명하게 되는데요. 그러다 보면 질문하신 것 처럼 좀 혼동이 올 수도 있습니다.
Service의 실체와 모든 기능들에 대해서는 Sprint3에서 다루고 있고,
잠깐 아래 그림을 설명 드리면, Service는 Iptable과 kube-proxy를 이용해서 Network를 만들어요.
그리고 새 Serivce 가 생겼을 때 kubelet이 kube-proxy한테 명령을 내리는 거고요. 이때 Service의 type이 NodePort는 kube-Proxy는 IPtable에 워커노드이 Port 설정을 추가하는 거죠.
기본적인 ClusterIP 타입일 경우에는 그냥 Iptable에만 Service IP를 기록하는 거고요.
이 Service IP로 트래픽이 Iptable로 들어오면 그에 매칭되는 Pod Ip를 연결 줍니다.
2024. 09. 11. 09:18
아하 sprint3 쪽에 좀 더 자세한 내용이 나오는 군요..!
해당 강의에서 좀 더 깊게 학습해보겠습니다.
감사합니다!