본문 바로가기

K8S

쿠버네티스(Kubernetes) 컨테이너 구동 방법

728x90

■  쿠버네티스 설계 원칙 

보안성 최신의 보안 모범 사례를 따라야 합니다. 
 ○ RBAC 사용 강제 
 ○ 노드 인증 사용
 ○ Control Plane 구성요소와 통신 수행 시 암호화된 방법 사용
 ○ API 서버와 kubelets 사이 통신 수행 시 암호화된 방법 사용  
 ○ kubelet API 사용 통제 
 ○ API 가 시스템 구성요소 (kube-proxy / CoreDNS) 접근에 대한 통제 
 ○ 부트스트랩 토큰 접근 통제 
사용 편의성 쿠버네티스는 몇 가지 간단한 명령으로 작동할 수 있어야 합니다. 사용자 친화적인 CLI 와 API를 제공하여 개발자 및 운영자가 쉽게 컨테이너 워크로드를 관리 할 수 있도록 합니다. 또한 파일이 위치하는 경로 및 파일명도 직관적으로 이해할 수 있도록 구성 되어 있습니다.
 ○ kubeadm init
 ○ export KUBECONFIG=/etc/kubernetes/admin.conf
 ○ kubectl apply -f <네트워크 CNI yaml 파일>
 ○ kubeadm join --token <토큰> <endpoint>:<port>
확장 가능성 쿠버네티스는 하나의 제공업체만을 선호 하지 않고, 구성 파일을 통해 사용자 정의할 수 있어야 합니다. 
또한 네트워크 제공자 중립성의 특징을 가지고 있어 특정 솔루션에 종속되지 않습니다. 그래서 클러스터 네트워크 구성은 관리자의 몫 입니다. 

 

 

▪ 쿠버네티스 컨테이너 구동 방법

  • OCI (Open Container Initiative)
    • 이미지 형식, 런타임 및 배포에 대한 컨테이너에 대한 표준 정의
    • 컨테이너를 실행 시킬 수 있는 런타임에는 서로 다른 하위 수준의 (Low-Level) 구현이 있을 수 있으나 컨테이너에 대한 정의 및 수행 역할을 표준화 시켜 컨테이너에 대한 종속성을 탈피함
  • runC
    • 대표적인 Low-Level Container Runtime
    • cgroup (CPU/MEM/DISK 리소스 할당) 및 namespace(네트워크, 파일시스템 리소스 할당)를 통해 컨테이너에 할당 될 리소스 제한 구현
    • 기존에는 LXC(Linux Container)를 통해 리소스를 할당 했으나 의존성 문제가 발생함.
    • 종속성 문제를 해결하기 위해 Docker社가 libcontainer를 개발하고 이것을 OCI에 기부. 이것을 발전 시켜 runC가 되었으며 결과적으로 OCI를 준수하는 저수준 런타임으로 가장 널리 알려지게 되었음ㅁ.
  • CRI (Container Runtime Interface)
    • 쿠버네티스에서 다양한 컨테이너 런타임을 사용할 수 있게 해주는 API 
    • 쿠버네티스가 컨테이너를 생성하고 관리하는 다양한 런타임을 제어하기 위해 사용하는 인터페이스 
    • Worker Node의 kubelet이 명령을 받으면 CRI을 통해 런타임과 통신하여 컨테이너 생성/삭제와 같은 생명주기를 관리 합니다. 
  • containerd & CRI-O
    • 대표적인 High-Level Container Runtime
    • 컨테이너를 논리적으로 실행하고 모니터링 하는데 사용할 수 있는 데몬 및 API 제공하며, 컨테이너 실행을 위해 저수준 런타임 위에 배치 됩니다.
    • containerd는 Docker社에서 개발되었고, CRI 플러그인을 통해 CRI를 구현 하기 때문에 쿠버네티스 컨테이너  런타임으로 사용이 가능함
    • CRI-O는 IBM 및 Red Hat에서 개발되었고, CRI API를 구현하므로 쿠버네티스에서 컨테이너 런타임으로 사용 할 수 있습니다. 
  • Low-Level Container Runtime & High-Level Container Runtime
    • 컨테이너를 실행하려면 "1. 이미지 다운로드" , "2. 이미지를 번들로 압축해재", "3. 번들에서 컨테이너 실행" 이라는 일련의 과정이 필요함. 
    • 컨테이너라는 서비스가 시장에 나왔을 때 Docker가 사실상 컨테이너의 표준 이였고, Docker는 컨테이너 실행 3단계 중 3번째 단계인 "번들에서 컨테이너 실행" 만 표준화를 수행함. 
    • 이로 인해 컨테이너 런타임은 실제 컨테이너를 수행하는 저수준 컨테이너 런타임(Low-Level)인 OCI 런타임과 컨테이너 이미지 전송, 관리 및 이미지 압축 풀기를 실행하는 고수준 컨테이너(High-Level) 런타임으로 분할 됨

 

 

 


참고자료

흔들리는 도커(Docker)의 위상 - OCI와 CRI 중심으로 재편되는 컨테이너 생태계 | 인사이트리포트 | 삼성SDS (samsungsds.com)

Docker, containerd, CRI-O 및 runc의 차이점 - 튜토리얼 웍스 (tutorialworks.com)

728x90