Kubernetes: 시작하기
컨테이너화된 애플리케이션을 배포하고 관리하는 방법을 알아보세요.
컨테이너에 대한 입문서
Kubernetes를 시작하려면 먼저 컨테이너화의 작동 방식을 이해해야 합니다.
해운 업계에서 실제 컨테이너를 사용하여 선박, 기차, 트럭 및 비행기에서 운송할 다양한 화물을 분리하는 것과 마찬가지로 소프트웨어 개발 기술에서도 컨테이너화라는 개념을 점점 더 많이 사용합니다.
컨테이너라고 하는 소프트웨어의 단일 패키지는 애플리케이션의 코드를 관련 구성 파일, 라이브러리 및 앱 실행에 필요한 종속성과 함께 번들로 제공합니다. 따라서 개발자 및 IT 전문가는 애플리케이션을 더욱 빠르고 안전하게 만들고 배포할 수 있습니다.
컨테이너화는 애플리케이션의 전체 수명 주기 워크플로에서 격리, 이식성, 민첩성, 확장성 및 제어라는 장점을 제공합니다. 호스트 운영 체제로부터 분리된 컨테이너는 독립 실행형이며 이식성이 향상되어 모든 인프라의 모든 플랫폼이나 클라우드에서 일관되게 실행할 수 있습니다.
Kubernetes 구성 요소 및 개념
클러스터
가장 높은 수준에서 Kubernetes는 가상 머신이나 온-프레미스 머신의 클러스터로 구성됩니다. 노드라고 하는 이러한 머신은 컴퓨팅, 네트워크 및 스토리지 리소스를 공유합니다. 각 클러스터에는 하나 이상의 작업자 노드에 연결된 한 개의 마스터 노드가 있습니다. 작업자 노드는 Pod라고 하는 컨테이너화된 애플리케이션 및 워크로드 그룹의 실행을 담당하고 마스터 노드는 어떤 Pod가 어떤 작업자 노드에서 실행되는지를 관리합니다.
제어 영역
마스터 노드가 작업자 노드와 통신하고 사람이 마스터 노드와 통신할 수 있도록 Kubernetes에는 모두 합쳐서 제어 영역을 구성하는 많은 개체가 있습니다.
개발자와 운영자는 로컬 OS에 설치되는 명령줄 인터페이스인 kubectl을 사용하여 마스터 노드를 통해 기본적으로 클러스터와 상호 작용합니다. kubectl을 통해 클러스터로 전송된 명령은 마스터 노드에 상주하는 Kubernetes API인 kube-apiserver에서 수신합니다. 그런 다음, kube-apiserver가 마스터 노드의 kube-controller-manager로 요청을 전달하면 여기에서 작업자 노드 작업을 처리합니다. 마스터 노드의 명령은 작업자 노드의 kubelet에서 수신합니다.
앱 및 워크로드 배포
Kubernetes를 시작하는 다음 단계는 앱 및 워크로드 배포입니다. 마스터 노드는 Kubernetes 클러스터 및 구성의 현재 상태를 키 값 저장소 데이터베이스인 etcd에서 항상 유지 관리합니다. 컨테이너화된 앱 및 워크로드에서 pod를 실행하려면 원하는 새 상태를 YAML 파일 형식으로 클러스터에 설명합니다. kube-controller-manager는 YAML 파일을 사용하며, kube-scheduler가 미리 결정된 제약 조건에 따라 앱 또는 워크로드가 실행되어야 하는 작업자 노드를 결정하도록 합니다. 각 작업자 노드의 kubelet을 이용하여 kube-scheduler는 pod를 시작하고, 머신의 상태를 감시하고, 전체적으로 리소스 관리를 담당합니다.
Kubernetes 배포에서는 설명된 원하는 상태가 etcd에서 현재 상태가 되지만 이전 상태가 손실되지 않습니다. Kubernetes는 롤백, 롤링 업데이트 및 롤아웃 일시 중지를 지원합니다. 또한 배포에서는 ReplicaSet를 백그라운드에서 사용하여 지정된 개수의 동일하게 구성된 pod가 실행되고 있는지 확인합니다. 하나 이상의 pod가 실패하게 되면 ReplicaSet가 pod를 바꿉니다. 이런 방식으로 Kubernetes는 자동 복구됩니다.
Kubernetes 환경 구성 및 보안
앱 또는 워크로드가 배포된 상태에서 Kubernetes를 시작하는 마지막 단계는 앱 또는 워크로드를 구성하고 액세스할 수 있는 사람 또는 대상을 결정하는 것입니다. Kubernetes 내에서 그룹화 메서드인 네임스페이스를 만들면 서비스, pod, 컨트롤러 및 볼륨이 쉽게 공동 작업하면서 클러스터의 다른 부분에서 격리될 수 있습니다. 또한 네임스페이스의 Kubernetes 개념을 사용하여 일관된 구성을 리소스에 적용합니다.
또한 각 작업자 노드에는 kube-proxy가 포함되어 외부에서 클러스터의 다양한 측면에 액세스하는 방법을 결정합니다. 토큰, 인증서 및 암호와 같은 민감한 비공개 정보는 런타임까지 인코딩되는 비밀(또 다른 Kubernetes 개체)에 저장합니다.
마지막으로 RBAC(역할 기반 액세스 제어)를 사용하여 누가 클러스터의 어떤 부분을 보고 상호 작용할 수 있는지와 상호 작용을 허용하는 방법을 지정합니다.
완전 관리형 Kubernetes 솔루션 구현
AKS(Azure Kubernetes Service)로 호스트된 Kubernetes 환경을 관리합니다. 컨테이너 오케스트레이션 경험 없이 컨테이너화된 앱을 배포하고 관리합니다. 앱을 오프라인 상태로 전환하지 않고 필요할 때 리소스를 프로비전, 업그레이드 및 크기 조정합니다.
Kubernetes 빠른 시작: 50일 이내에 시작 및 실행
단계별 가이드를 사용하여 Kubernetes를 시작하고 Kubernetes 구성 요소, 기능 및 솔루션에 대한 실습 환경을 확보하세요.