[k8s] k8s

k8s

쿠버네티스는 도커스웜과 같이 도커의 클러스터링을 지원한다. 쿠버네티스는 대부분의 리소스를 오브젝트라고 불리는 형태로 관리한다. 쿠버네티스 노드의 역할은 마스터와 워커로 나뉘며 마스터는 클러스터를 관리하며 워커에는 어플리케이션 컨테이너가 생성된다. 마스터노드에서는 API 서버, 컨트롤러 매니저, 스케줄러, DNS서버 등이 실행되며 모든 노드에서는 오버레이 네트워크를 위한 프록시와 네트워크 플러그인이 실행된다. 쿠버네티스는 도커에 종속된 오케스트레이션이 아니기 때문에 OCI(Open Container Initiative)의 컨테이너 런타임 표준을 구현한 인터페이스를 갖추고 있다면 어떤 컨테이너를 사용해도 무방하다.

Pod

포드는 쿠버네티스에서 컨테이너 어플리케이션의 기본 단위이다. 포드를 사용한다면 어러 리눅스 네임스페이스를 공유하는 여러 컨테이너들을 추상화된 집합으로 사용할 수 있다.

Replica Set

레플리카 셋은 포드의 라이프 사이클을 관리한다. 레플리카 셋은 정해진 수의 동일한 포드가 항상 실행되도록 관리하며 노드 장애 등의 이유로 포드를 사용할 수 없다면 다른 노드에서 포드를 다시 생성한다. 레플리카 셋은 라벨 셀렉터를 통해 포드와 느슨하게 연결되게 된다. metadata내의 라벨은 쿠버네티스의 리소스를 분류할 때 사용되는데 다양한 부가정보 외에 서로 다른 오브젝트가 서로를 찾을 때 사용되기도 한다. 레플리카 셋은 해당하는 라벨이 있는 포드만 관리 대상으로 인식한다. 즉 레플리카 셋은 일정 개수의 포드를 유지하게 관리하며 도와준다.

Deployment

디플로이먼트는 레플리카 셋의 상위 오브젝트이다. 디플로이먼트가 생성되면 레플리카 셋이 생성되고 레플리카 셋이 포드를 생성하는 구조로 동작한다. 디플로이먼트를 사용하게 되면 편하게 어플리케이션의 업데이트와 배포를 수행할 수 있다. 어플리케이션을 업데이트 할 때 변경사항을 저장하는 리비전을 통해 롤백이 가능하며 무중단 서비스를 위한 롤링 업데이트를 지원한다. 디플로이먼트를 통해 포드를 구성하게 되면 포드 템플릿으로부터 해시값을 계산한다. 각 레플리카 셋의 라벨 셀렉터에서 pod-template-hash라는 이름의 라벨값으로 자동 설정된다. 따라서 여러 개의 레플리카 셋은 겹치지 않는 라벨을 통해 포드를 생성하게 된다.

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/24/Docker/k8s/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.