Kubernetes란?
“K8s”로 줄여서 부르기도 하는 Kubernetes는 호스트 클러스터에서 실행되도록 컨테이너화된 애플리케이션을 오케스트레이션합니다. K8s 시스템은 온프레미스 인프라 또는 퍼블릭 클라우드 플랫폼을 사용하여 클라우드 네이티브 애플리케이션의 배포 및 관리를 자동화합니다. 애플리케이션 워크로드를 Kubernetes 클러스터에 분산하고 동적 컨테이너 네트워킹 요구 사항을 자동화합니다. Kubernetes는 또한 실행 중인 컨테이너에 스토리지 및 영구 볼륨을 할당하고, 자동 확장을 제공하며, 원하는 애플리케이션 상태를 유지하기 위해 지속적으로 작동하여 복원력을 제공합니다.
Kubernetes를 사용하여 기업이 대규모 최신 애플리케이션을 구축, 배포 및 실행하는 방법을 알아보십시오.

Kubernetes 5분 소개

2021년 Kubernetes 현황
Kubernetes 기능
Kubernetes에는 여러 호스트 전반에서 컨테이너를 조정하고, K8s 클러스터의 관리를 자동화하며, 인프라 활용도 향상을 통해 리소스 사용을 극대화하는 데 도움이 되는 다양한 기능이 있습니다. 중요한 기능은 다음과 같습니다.
- 자동 확장. 사용량에 따라 컨테이너화된 애플리케이션과 해당 리소스를 자동으로 확장 또는 축소합니다.
- 수명주기 관리. 다음 기능을 통해 배포 및 업데이트를 자동화합니다.
- 이전 버전으로 롤백
- 배포 일시 중지 및 계속
- 선언적 모델. 원하는 상태를 선언하면 K8s가 백그라운드에서 작동하여 해당 상태를 유지하고 장애에서 복구합니다.
- 복원력 및 자가 복구. 자동 배치, 자동 재시작, 자동 복제 및 자동 확장으로 애플리케이션에 자가 복구 기능을 제공합니다.
- 영구 스토리지. 스토리지를 동적으로 마운트하고 추가할 수 있습니다.
- 로드 밸런싱. Kubernetes는 다양한 요구 사항을 해결하기 위해 다양한 내부 및 외부 로드 밸런싱 옵션을 지원합니다.
- DevSecOps 지원. DevSecOps는 클라우드 전반에서 컨테이너 운영을 간소화 및 자동화하고, 컨테이너 수명주기 전반에서 보안을 통합하며, 팀이 안전한 고품질 소프트웨어를 보다 신속하게 제공할 수 있도록 지원하는 고급 보안 접근 방식입니다. DevSecOps 작업과 Kubernetes를 결합하면 개발자 생산성이 향상됩니다.
Kubernetes 아키텍처란 무엇이며 어떤 방식으로 작동합니까?
컨테이너는 애플리케이션을 이식 가능하고 간편하게 배포할 수 있는 형태로 캡슐화합니다. Kubernetes 아키텍처는 컨테이너화된 애플리케이션을 실행하도록 설계되었습니다. Kubernetes 클러스터는 하나 이상의 컨트롤 플레인과 하나 이상의 작업자 노드(일반적으로 물리적 또는 가상 서버)로 구성됩니다. 컨트롤 플레인에는 두 가지 주요 역할이 있습니다. API 서버를 통해 Kubernetes API를 노출하고 클러스터를 구성하는 노드를 관리합니다. 컨트롤 플레인은 클러스터 관리에 대한 결정을 내리고 클러스터 이벤트를 감지하고 이에 대응합니다.
Kubernetes에서 실행되는 애플리케이션의 최소 실행 단위는 하나 이상의 컨테이너로 구성된 Kubernetes 포드입니다. Kubernetes 포드는 작업자 노드에서 실행됩니다.
Kubernetes 관련 추가 용어
컨트롤 플레인의 일부이거나 Kubernetes 노드에서 실행되는 주요 K8s 구성 요소의 이름과 기능을 아는 것이 중요합니다.
컨트롤 플레인에는 통신을 제어하고 노드를 관리하며 Kubernetes 클러스터의 상태를 추적하는 데 사용되는 4가지 기본 구성 요소가 있습니다.
- Kube-apiserver. kube-apiserver는 이름에서 알 수 있듯이 Kubernetes API를 노출합니다.
- etcd. Kubernetes 클러스터와 관련된 모든 데이터가 저장되는 키-값 저장소입니다.
- Kube-scheduler. 할당된 노드가 없는 새로운 Kubernetes 포드를 감시하고 리소스, 정책 및 '선호도' 규격에 따라 실행할 노드에 할당합니다.
- Kube-controller-manager. 컨트롤 플레인의 모든 컨트롤러 기능은 단일 바이너리인 kube-controller-manager로 컴파일됩니다.
K8s 노드에는 세 가지 주요 구성 요소가 있습니다.
- Kubelet. 필요한 컨테이너가 Kubernetes 포드에서 실행되고 있는지 확인하는 에이전트입니다.
- Kube-proxy. 네트워크 규칙을 유지하고 통신을 허용하기 위해 클러스터의 각 노드에서 실행되는 네트워크 프록시입니다.
- 컨테이너 런타임. 컨테이너 실행을 담당하는 소프트웨어입니다. Kubernetes는 Kubernetes CRI(컨테이너 런타임 인터페이스)를 준수하는 모든 런타임을 지원합니다.
추가로 알아야 할 용어는 다음과 같습니다.
- Kubernetes 서비스. Kubernetes 서비스는 모두 동일한 기능을 수행하는 Kubernetes 포드 그룹에 대한 논리적 추상화입니다. Kubernetes 서비스에는 포드 인스턴스가 들어오고 나가는 경우에도 동일하게 유지되는 고유한 주소가 할당됩니다.
- 컨트롤러. 컨트롤러는 Kubernetes 클러스터의 실제 실행 상태가 원하는 상태와 최대한 근사하도록 합니다.
- 운영자. Kubernetes 운영자를 사용하면 런북과 유사하게 애플리케이션에 대한 도메인별 지식을 캡슐화할 수 있습니다. 운영자는 애플리케이션별 작업을 자동화하여 K8s에서 애플리케이션을 보다 쉽게 배포하고 관리할 수 있습니다.
Kubernetes의 장점
Kubernetes 플랫폼은 다음과 같은 여러 가지 중요한 이점을 제공하여 인기를 얻고 있습니다.
- 이동성. 컨테이너는 가상 환경에서 베어메탈에 이르기까지 다양한 환경 간에 이동이 가능합니다. Kubernetes는 모든 주요 퍼블릭 클라우드에서 지원되므로 다양한 환경의 K8에서 컨테이너화된 애플리케이션을 실행할 수 있습니다.
- 통합 및 확장성. Kubernetes는 로깅, 모니터링 및 알림 서비스를 포함하여 이미 사용 중인 솔루션과 함께 작동하도록 확장이 가능합니다. Kubernetes 커뮤니티는 Kubernetes를 보완하는 다양한 오픈 소스 솔루션에 대한 작업을 진행하며 풍부하고 빠르게 성장하는 에코시스템을 형성하고 있습니다.
- 비용 효율성. Kubernetes의 내재된 리소스 최적화, 자동화된 확장, 그리고 가장 많은 가치를 제공하는 워크로드를 실행할 수 있는 유연성을 통해 IT 지출을 제어할 수 있습니다.
- 확장성. 클라우드 네이티브 애플리케이션을 수평으로 확장됩니다. Kubernetes는 “자동 확장 기능”을 사용하여 수요에 따라 자동으로 추가 컨테이너 인스턴스를 시작하여 수평 확장합니다.
- API 기반. Kubernetes의 기본 패브릭은 REST API입니다. Kubernetes 환경의 모든 것은 프로그래밍을 통해 제어할 수 있습니다.
- 간소화된 CI/CD. CI/CD는 애플리케이션을 구축, 테스트하여 운영 환경에 배포하는 작업을 자동화하는 DevOps 작업입니다. 기업은 Kubernetes와 CI/CD를 통합하여 로드에 따라 동적으로 조정되는 확장 가능한 CI/CD 파이프라인을 생성합니다.
컨테이너 조정이란?
컨테이너 조정은 Kubernetes 컨테이너 수명주기에 필수적인 작업인 프로비저닝, 배포, 확장, 네트워킹 및 로드 밸런싱을 포함하여 컨테이너화된 워크로드 및 서비스를 실행하는 데 필요한 대부분의 작업을 자동화합니다.
Kubernetes와 Docker 비교
Docker는 컨테이너화된 애플리케이션을 만드는 데 사용되는 소프트웨어 플랫폼입니다. K8s는 Docker 또는 기타 툴로 생성된 컨테이너화된 클라우드 네이티브 애플리케이션을 실행하는 프로세스를 자동화합니다. 기업은 주로 Docker와 Kubernetes를 함께 사용합니다.
관련 솔루션 및 제품
Tanzu Kubernetes Grid
엔터프라이즈급 Kubernetes 관리
Tanzu Community Edition
VMware Tanzu를 로컬 워크스테이션 또는 클라우드에서 몇 분 만에 무료로 실행
Tanzu Application Platform
Kubernetes 플랫폼에서 애플리케이션 구축, 배포 및 관리