탕구리's 블로그

[Kubernetes] #1 쿠버네티스란 무엇일까? 본문

devOps

[Kubernetes] #1 쿠버네티스란 무엇일까?

탕구리당 2020. 1. 12. 15:26
반응형

쿠버네티스란? 

Kubernetes.io에 들어가보면 아래와 같이 설명이 나와있습니다.

 

쿠버네티스?!

 

즉, 컨테이너 환경에 대한 운용 및 관리를 위하여 애플리케이션의 확장과 장애 조치를 처리하고, 획일화된 배포 환경을 구축할 수 있습니다.

쿠버네티스 오케스트레이션을 사용하면 여러 컨테이너에 걸쳐 애플리케이션 서비스를 구축하고, 클러스터 전체에서 컨테이너의 일정을 계획하고,

이러한 컨테이너를 확장하여 컨테이너의 상태를 지속적으로 관리 할 수 있습니다.

 

 

여기서 말하는 컨테이너란 도커(Docker) 컨테이너를 말하고,

도커에 대한 추가적인 설명은 여기를 확인해주시면 좋을 것 같아요.

 

 

컨테이너에 대한 핵심 기술은 cgroup와 namespace이다.

cgroup란 리눅스 커널의 한 기능이다. 프로세스들의 자원의 사용을 제한하고 격리시키는 기능을 한다.

이것을 통해 컨테이너가 소비할 수 있는 호스트의 리소스를 공유하고 제한할 수 있다. 이것은 호스트의 하드웨어 리소스의 서비스 거부 공격(denial-of-service)을 방지하므로 리소스 활용과 보안 모두에서 중요하다. 

 

namespace는 운영체제 내에서 프로세스 상호작용을 따로 구분하는 방식이다. namespace는 프로세스가 가지는 다른 프로세스, 네트워킹, 파일 시스템, 사용자 ID 구성 요소의 가시성을 제한한다. 즉, 각각의 네임스페이스가 서로의 공간에 대해 독립성을 갖는다.

 

쿠버네티스를 통해 컨테이너의 어떤 부분을 관리하고 제어할 수 있을까?

 

서비스 디스커버리와 롤백

쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출한다.

컨테이너에 대한 트래픽이 많으면 쿠버네티스를 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있다.

 

스토리지 오케스트레이션

쿠버네티스를 사용하면 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재할 수 있다.

 

자동화된 롤아웃과 롤백

배포된 컨테이너에 대해 원하는 상태로의 조작이 가능하다.
예를 들어 새로운 컨테이너를 배포할 경우 기존에 사용하던 컨테이너의 리소스를 새로운 컨테이너로 이전이 가능하다.

 

자동화된 빈 패킹(bin packing)

컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공한다.

컨테이너가 필요로 하는 CPU와 메모리(RAM)을 쿠버네티에게 지시하며, 쿠버네티스는 컨테이너에 대한 리소스를 효과적으로 사용할 수 있도록 조작한다.

 

자동화된 복구(self-healing)

쿠버네티스는 실패한 컨테이너르 ㄹ다시 시작하고, 새로운 컨테이너를 구동시킨다.

Health Check(상태 검사)에 응답하지 않는 컨테이너에 대해 복구작업을 진행한다.

 

시크릿 구성 관리

쿠버네티스를 사용하여, 시크립 파일에 대한 정보를 저장하고 관리할 수 있다.

컨테이너 이미지를 재구성하지 않고, 스택 구성에 비밀을 노출하지 않고도 비밀 및 애플리케이션 구성을 배포 하고 업데이트 할 수있다.

 

 

참고

https://www.redhat.com/ko/topics/containers/what-is-kubernetes

https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

반응형
Comments