[Cloud] k8s 용어정리

Symptoms
  • 쿠버네티스 용어정리(Object, 구성요소)
Environment
  • Linux / Unix
Related Versions
Cause
  • 쿠버네티스(k8s) 사용되는 기본 용어 정리
Solution

※ K8s 오브젝트란?

  • k8s를 관리하기 위한 대상 / 클러스터의 상태를 나타냄
  • 오브젝트는 같은 네임 스페이스에서 같은 종류 오브젝트가 다수 존재할 경우 각각 다른 이름 가져야 함
No용어설명
1파드(Pod)k8s에서 배포할 수 있는 가장 작은 단위이자 기본 단위하나의 일을 하기 위한 컨테이너의 집합 (대부분 1개로구성)
2디플로이먼트(Deployment)컨트롤러 개념이지만 파드와 비교하여 구성하기 위하여 설명상태가 없는 앱(stateless app)을 배포할 때 사용하는 가장 기본적인 컨트롤러임단순히 여러개의 파드 구성
3볼륨(Volume)컨테이너는 기본적으로 상태가 없는 (Stateless) 앱을 사용Stateless : 컨테이너가 죽었을때 현재까지의 데이터가 사라진다는것컨테이너의 외장 디스크 역할을 수행(데이터가 사라지지 않고 유지됨)
4서비스(Service)네트워크와 관련된 오브젝트Pode 를 외부 네트워크와 연결해주는 통로 역활ClusterIP, NodePort, Loadbalancer, ExternalName 4가지 종류있음
5Namespacek8s 클러스터 내의 논리적인 분리 단위pod, Service 등은 별도 생성 및 관리 대상Namespace 는 물리적으로 환경을 분리한 것이 아니라 다른 Namespace 간의 pod 라도 Service Object 를 통해 통신 가능

※ 클러스터 구성

No용어설명
1Clusterk8s 에서 관리하는 컨테어너화 된 애플리케이션을 실행하는 노드의 집합일반적인 구성 MasterNode 1개 + WorkerNode 3개로 구성
2Master Node클러스터에 관한 전반적인 결정을 수행하며 클러스터의 이벤트를 감지
3WorkerNode동작중인 파드를 유지시키고 MasterNode가 전달해주는 작업을 pod에 반영

※ Master Node 구성

No용어설명
1API Server모든 요청을 처리하는 Master Node의 핵심 모듈kubectl의 요청 뿐만 아니라 내부 모듈의 요청도 처리Worker node에서 실행중인 컨테이너의 디버거 역할도 수행API 서버는 요청을 받으면 etcd 저장소와 통신할뿐 실제 상태를 변경하는건 scheduler 와 controller 임
2etcd분산데이터 Key-value 저장소여러개로 분산하여 복제할수 있어서 안정성이 높고 빠름클러스터의 모든 설정, 상태 데이터 저장나머지 모듈은 stateless 하게 동작하기 때문에, etcd 만 잘 백업 해놓으면 언제든지 복구가능etcd 는 오직 API Server와만 통신하고 다른 모듈은 API Server 를 거쳐서 etcd 데이터에 접근하는구조
3SchedulerPod,Service 등 각 리소스 들을 적절한 Worker node에 할당하는 역할 수행
4Kube ControllerManagerk8s 에있는 모든 오브젝트의 상태를 관리k8s controller 에 해당하는 모듈Replica,Service,Volume,Deployment 등을 생성하고 각 Worker Node에 배포하며 관리하는 역할 수행
5Clude Controller ManagerAWS, GCE, Azure 등 Cloud 에 특화된 모듈Worker Node 를 추가 삭제하고 LoadBalancer를 연결하거나 볼륨을 붙임각 Cloud 업체에서 인터페이스에 맞춰 구현하면 되기 때문에 확장성이 좋음

※ Worker Node 구성

No용어설명
1큐블릿(kubelet)kubelet 을 통해 Container 를 관리Worker Node에 할당된 pod의 생명주기를 관리pod를 생성하고 pod 안의 컨테이너의 이상 유무 확인주기적으로 master node 에 pod의 상태를 전달함API 서버의 요청을 받아 컨테이너의 로그를 전달하거나 특정 명령을 대신 수행
2kube Proxykubelet 이 pod를 관리한다면 kube Proxy는 pod 로 연결되는 네트워크 관리Worker node로 들어오는 네트워크 트래픽을 적절한 컨테이너로 라우팅TCP,UDP,SCTP 스트림을 포워딩하고 여러개의 pod 를 묶어서 서비스 제공
3podpod를 통해서 배포된 컨테이너를 실행함컨테이너런타임 (docker,rkt,CRI-O 등)
Workaround
  • N/A