k8s 42

Cluster Networking

시작하며... Kubernetes 클러스터를 직접 구축하는 경우, CNI 플러그인 설치를 요구받게 된다. 현재 시장에는 수십개 이상의 CNI 플러그인이 존재하며, 한번 설치하고나면 운영 중 다른 플러그인으로 교체는 결코 쉽지 않은 작업이 되므로 신중하게 선택해야 한다. 각 플러그인마다 수행방식이나 네트워크 모델이 제각각이며 장단점 또한 다르기 때문에 우리의 선택엔 확실한 근거와 기준이 필요하다. 이를 위해 Container와 Container, Container와 Host 사이에 어떻게 네트워크가 구성되는지 알아보도록 하자. 우선 Kubernetes의 Network Model은 아래와 같이 단순하지만 확고한 요구사항 3개를 명시해 놓았다. K8s Network Requirements Pod은 NAT을 사..

Scheduler

Scheduler는 K8s의 Control Plane Component 중 하나로, Pod을 어떤 Node에 생성할지 결정하는 역할을 맡고 있다. 기본적인 동작 원리는 다음과 같다. API Server는 Client(ex: Admin)로부터 Pod 생성을 요청받으면, 우선 이를 etcd에 저장한다. Scheduler는 API Server를 계속 확인하며 만약 새로운 Pod 또는 Node를 배정받지 못한(unscheduled) Pod이 있는 경우, 해당 Pod이 생성될 수 있는 최적의 Node를 찾아 API Server에 전달한다. 마지막으로, 선택된 Node에서 수행중인 kubelet은 API Server로부터 PodSpec을 전달받아 이를 생성한 뒤, Pod의 상태를 API Server에 보고하는 것으..