K8s

[ K8s ] 쿠버네티스의 구성 요소 간 통신과 개념

미스터 한뺑 2023. 6. 8. 10:45
반응형

쿠버네티스의 구성 요소의 유기적인 연결 관계를 표현하면 다음과 같다 .

 

 

통신 순서가 있어서 흐름을 이해할 수 있지만, 각각의 기능을 파악하기는 어렵다. 파드를 배포하는 순서에 따라 요소들의 역활을 정리를 해보았다. 

 

1. 마스터 노드 

- kubectl : 쿠베네티스 클러스터에 명령을 내리는 역활 . 다른 구성 요소들과 다르게 바로 실행되는 며영 형태인 바이너리로 배포하기 때문에 마스터 노드에 있을 필요는 없다. 그러나 통상적으로 API 서버와 주로 통신을 한다 

 

- API 서버 : 쿠버네티스 클러스터의 중심 역활을 하는 통로이다. 주로 상태 값을 저장하는 etcd와 통신하지만 , 그밖의 요소들 또한 API 서버를 중심에 두고 통신하므로 역활이 가장 중요하다.

 

- etcd : 구성 요소들의 상태 값이 모두 저장되는 곳. 관리가가 모든 보고 내용을 기록하는 노트라 생각하면된다. etcd는 분산 저장이 가능한 key - value 저장소이므로, 복제해 여러 곳에 저장해 두며 하나의 etcd에서 장애가 나더라도 시스템의 가용성을 확보할 수 있다. 

 

- 컨트롤러 매니저 : 쿠버네티스 클러스터의 오브젝트 상태를 관리한다. 예를들면 워커 노드에서 통신이 되지 않는 경우, 상태 체크와 복구는 컨트롤러 매니저에 속한 노드 컨트롤러에서 이루어진다. 이와같이 다양한 상태 값을 관리하는 주체들이컨트롤러 매니저에 소속돼 각자의 역활을 수행한다. 

 

-스케쥴러 : 노트의 상태와 지원, 레이블, 요구 조건 등을 고려해 파드를 어떤 워커 노드에 생성 할 거인지를 결정한다. 파드를 조건에 맞는 워커 노드에 저장하고 , 파드가 워커노드에 할당되는 일정을 관리하는 역활을 담당한다. 

 

2. 워커 노드

- kubelet : 파드의 구성 내용을 받아서 컨테이너 런타임으로 전달하고, 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링한다.

 

- 컨테이너 런타임 : 파드를 이루는 컨테이너의 실행을 담당한다. 파드 안에서 다야안 종류의 컨테이너가 문제 없이 작동하게 만드는 표준 인터페이스입니다. 주로 도커가 사용된다.

 

- 파드(pod) : 한 개이상의 컨테이너로 단일 목적의 일을 하기 위해서 모인 단위. 웹 서버 역활을 할수 있고 로그나 데이터를 분석할 수도 있습니다 . 여기서 중요한건 언제라도 죽을 수 있는 존재이다.

 

 

지금까지 기 본 설정으로 배포된 쿠버네티스에서 이루어지는 통신 단계를 구분을 해놨다. 이 외 몇가지 선택적으로 배포하는 것들은 순서와 상관없다. 

 

  1. 네트워크 플러그인
    쿠버네티스 클러스터의 통신을 위해서 네트워크 플러그인을 선택하고 구성해야한다.
    컨테이너의 네트워크 안정성과 확장성을 보장하기 위해 개발되었다.

  2. CoreDNS
    클라우드 네이티브 컴퓨팅 재단에서 보증하는 프로젝트이다.
    클러스터에서 도메인 이름을 이용해 통신하는데 사용한다.

*사용자가 배포된 파드에 접속할때

  1. kube-proxy
    쿠버네티스 클러스터는 파드가 위치한 서버(노드)에 kube-proxy를 통해 파드가 통신할 수 있는 네트워크를 설정해준다. kube-proxy에 설정된 통신 관리 방법(ex. br_netfilter, iptables)을 사용해 네트워크를 설정해준다.
    설정된 네트워크를 통해서 파드에 접속할 수 있다.

  2. 파드
    이미 배포된 파드에 접속하고 필요한 내용을 전달받는다.
    대부분 개발자는 파드가 어느 서버에 위치하는지 신경 쓰지 않아도 된다.
반응형