Kubernetes

박상훈·2022년 5월 4일
0
post-thumbnail

컨테이너 인프라 환경을 구축하면 눈송이 서버를 방지할 수 있다
컨테이너 인프라 환경 : 리눅스 운영 체제의 커널 하나에서 여러 개의 컨테이너가 격리된 상태로 실행되는 환경
눈송이 서버 : 여러 사람이 만져서 설정의 일관성이 떨어진 서버

가상화 환경 : 하이퍼바이저 - 가상 머신(운영 체제 커널) - 어플리케이션
컨테이너 환경 : 운영 체제 커널 - 컨테이너(어플리케이션)

Kubernetes(k8s) : 컨테이너 오케스트레이션을 위한 솔루션


오케스트레이션 : 복잡한 단계 관리, 요소들의 유기적인 관계 정의를 제공하는 서비스

  • 오케스트레이션 제공 솔루션
    • Docker swarm : 소규모에 적합, 기능 적음
    • Mesos : 분산 관리 시스템 연동 필요, 여러가지 솔루션을 유기적으로 설정
    • Nomad : 기능 적음
    • Kubernetes : 설치, 설정, 안전성 ... 모든 면에서 좋음

쿠버네티스 구성 방법


  • 관리형 쿠버네티스 : 구성이 이미 갖춰져 있음, 마스터 노드를 업체에서 관리
    • EKS(Amazon Elastic Kubernetes Service)
    • AKS(Azure Kubernetes Services)
    • GKE(Google Kubernetes Engine)
  • 설치형 쿠버네티스 : 유료
    • Rancher
    • 레드헷 OpenShift
  • 쿠버네티스 클러스터 자동 구성 솔루션
    • kubeadm
    • kops(Kubernetes Operations)
    • KRIB(Kubernetes Rebar Integrated Bootstrap)
    • kubespray

구성에 대한 참조

마스터 노드 구성


노드

워커 머신, 클러스터에 따라 가상 or 물리 머신
노드는 컨트롤 플레인에 의해 관리
노드는 여러개의 파드를 가질 수 있음

kubectl

쿠버네티스 클러스터에 명령을 내림
바로 실행되는 명령 형태의 바이너리로 배포
구성에 따라 마스터 노드, 워커 노드에 배치할 수 있다

API 서버

쿠버네티스 클러스터의 중심 역할(통로)
주로 상태 값을 저장하는 etcd 와 통신, 그 밖의 요소들도 API 서버를 통해 통신

etcd

모든 구성 요소들의 상태 값을 저장하는 곳
분산 저장이 가능한 key-value 저장소

컨트롤러 매니저

컨트롤러 매니저에 속한 노드들에 의해 쿠버네티스 클러스터의 오브젝트 상태 관리

스케줄러

노드의 상태, 자원, 레이블, 요구 조건을 고려해 파드를 어떤 노드에 생성할 것인지 결정 및 할당
파드를 조건에 맞는 워커 노드에 지정, 파드가 워커 노드에 할당되는 일정을 관리하는 역할

워커 노드 구성


kubelet

파드의 구성 내용(PodSpec) 을 받아서 컨테이너 런타임으로 전달
파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링

컨테이너 런타임

파드를 이루는 컨테이너의 실행을 담당

파드

하나 또는 그 이상의 애플리케이션 컨테이너 (도커와 같은)들의 그룹을 나타내는 쿠버네티스의 추상적 개념
일부는 컨테이너에 대한 자원을 공유
자원 : 공유 스토리지(볼륨), 네트워킹(클러스터 IP 주소), 컨테이너 동작 방식 정보
쿠버네티스 플랫폼 에서 최소 단위
각 파드는 스케쥴 되어진 노드에게 묶여지고 소멸, 삭제되기 전까지 해당 노드에 유지
노드에 실패 발생 시 다른 노드들을 대상으로 스케쥴링
파드는 언제든지 죽을 수 있는 존재

선택적 구성


네트워크 플러그인

쿠버네티스 클러스터의 통신을 위한 플러그인(일반적으로 CNI 구성 : Container Network Interface)
네트워크 정책을 정의하여 Pod 의 트래픽을 통제할 수 있음
플러그인 종류 : Calico, Flannel, Cilium, Kube-Router, Romana, WeaveNet, Canal

CoreDNS

쿠버네티스 클러스터에서 도메인 이름을 이용해 통신하는데 사용하는 DNS 서버

profile
엔지니어

0개의 댓글