Kubernetess Network

- 모든 pod들에는 임시 private IP 주소를 부여한다 -> 자신만의 virtual network
- 하나의 Node속 pod들 사이의 통신은 하드웨어 없이 소프트웨어로만 통신 가능하다
Pause 컨테이너: pod를 노드의 네트워크에 연결하는 Gateway
CNI addon: 클러스터에서 pod간의 네트워킹을 관리하고 설정
netfilter: 라우팅 테이블을 참조하여 트래픽을 변환하고 전달
Worker Node: Private IP & Public IP
Pod: Private IP
Cluster: Private IP
-> Service를 Expose하기 위해서는 Public IP가 필요
동작 방식
- kubectl를 통해서 사용자가 명령어를 보낸다
- master node에서 api server는 명령어를 받는다
- 해당 정보를 controller manager와 scheduler를 이용해 worker node로 보낸다
- 각 worker node에서 kubelet이 명령을 받아 pod와 컨테이너를 관리
Service & Ingress in k8s

- Pod는 private IP를 사용하기 때문에 외부에서 접근할 수 없고, 내부에서도 생성, 소멸하는 IP주소를 알 수 없으면 접근 X
cf. pod에 Static IP를 부여하지 않는 이유는 생성과 소멸이 반복되기 때문
- Service가 pod들에게 stable IP와 DNS이름을 제공
- NodePort type의 Service: 외부에 서비스를 제공하는 노드의 public IP를 공개(TC
p/UDP)
- Ingress: 여러 서비스에 대한 외부 접근을 하나의 EndPoint로 관리할 수 있도록 한다(HTTPS,HTTP)
Service Type
- Cluster IP: Default 값으로 사용되며 cluster 내부에서만 통신 가능
- NodePort: static port 번호를 cluster에게 지정하여 외부에서 접근하도록 함(30000~32767)
- LoadBalancer: 자동으로 NodePort와 ClusterIP Service들을 생성
동작 방식
- 클라이언트가 도메인으로 HTTP 요청을 보낸다
- Ingress가 라우팅 규칙에 따라 service에 전달
- Service는 지정된 pod로 전달 (pod -> targetPort로 매핑)
- Deployment는 파드를 생성하고 각 파드는 Targetpod에서 애플리케이션을 실행
마치며
해당 정리 내용은 인터넷 및 강의록을 기반으로 작성하였음을 밝히며, 오류가 존재할 수 있음을 밝힙니다. 감사합니다.