Kubernetes에 cRPD 설치
운영 환경에서 애플리케이션을 실행하는 컨테이너를 관리합니다. 다운타임이 발생하지 않도록 합니다. 예를 들어 컨테이너가 다운되면 다른 컨테이너를 시작해야 합니다. Kubernetes는 분산 시스템을 탄력적으로 실행할 수 있는 프레임워크를 제공합니다. Kubernetes는 호스트 컨테이너의 클러스터 전반에서 애플리케이션 컨테이너의 배포, 자동화, 확장 및 운영을 위한 플랫폼을 제공합니다.
전제 조건
Linux 시스템에 Kubernetes를 설치하고 2노드 Linux 클러스터에 Kubernetes를 배포하려면 Kubernetes 설치를 참조하세요.
Kubernetes를 배포하면 클러스터가 생성됩니다. Kubernetes 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 작업자 머신 집합으로 구성됩니다. 모든 클러스터에는 하나 이상의 작업자 노드가 있습니다. 작업자 노드는 애플리케이션의 구성 요소인 Pod를 호스팅합니다.
이 섹션에서는 Kubernetes에서 cRPD Docker 이미지를 생성하는 단계를 간략하게 설명합니다.
쿠버네티스 설치
쿠버네티스를 설치하려면 다음을 수행합니다.
Kubernetes 클러스터
Kubernetes는 단일 단위로 작동하도록 연결된 컴퓨터 클러스터를 조정합니다. Kubernetes는 클러스터 전반에 걸쳐 효율적인 방식으로 cRPD의 배포 및 스케줄링을 자동화합니다.
Kubernetes 클러스터는 두 가지 유형의 리소스로 구성됩니다.
-
기본은 클러스터를 조정합니다
-
노드는 응용 프로그램을 실행하는 작업자입니다
기본은 클러스터 관리를 담당합니다. 기본은 클러스터의 모든 활동(예: 애플리케이션 스케줄링, 애플리케이션의 원하는 상태 유지 관리, 애플리케이션 확장, 새 업데이트 롤아웃)을 조정합니다.
노드는 Kubernetes 클러스터에서 작업자 컴퓨터 역할을 하는 VM 또는 물리적 컴퓨터입니다. 각 노드에는 노드를 관리하고 Kubernetes 마스터와 통신하기 위한 에이전트인 Kubelet이 있습니다. 노드에는 Docker 또는 rkt와 같은 컨테이너 작업을 처리하기 위한 도구도 있어야 합니다. 프로덕션 트래픽을 처리하는 Kubernetes 클러스터에는 최소 3개의 노드가 있어야 합니다.
Kubernetes에 cRPD를 배포하면 기본 컨테이너가 애플리케이션 컨테이너를 시작합니다. 기본은 컨테이너가 클러스터의 노드에서 실행되도록 예약합니다. 노드는 기본이 노출하는 Kubernetes API를 사용하여 기본과 통신합니다. 최종 사용자는 Kubernetes API를 직접 사용하여 클러스터와 상호 작용할 수도 있습니다.
파드는 항상 노드에서 실행된다. 노드는 Kubernetes의 작업자 컴퓨터이며 클러스터에 따라 가상 또는 물리적 컴퓨터일 수 있습니다. 각 노드는 기본 노드에 의해 관리됩니다. 노드에는 여러 개의 Pod가 있을 수 있으며, Kubernetes 기본 노드는 클러스터의 노드에서 Pod 예약을 자동으로 처리합니다.
모든 Kubernetes 노드는 최소한 다음을 실행합니다.
-
쿠버네티스 프라이머리와 노드 간의 통신을 담당하는 프로세스인 Kubelet; 머신에서 실행되는 파드와 컨테이너를 관리한다.
-
레지스트리에서 컨테이너 이미지를 끌어오고, 컨테이너의 압축을 풀고, 애플리케이션을 실행하는 컨테이너 런타임(예: Docker, rkt)입니다.
minikube 클러스터를 생성하려면 다음을 수행합니다.
cRPD Docker 이미지 다운로드
-
cRPD 소프트웨어를 가져오기 전에 Linux 호스트에 Docker가 설치되어 있고 Docker 엔진이 실행 중인지 확인합니다.
-
cRPD 소프트웨어를 다운로드하기 전에 주니퍼 지원 에 등록해야 합니다.
Docker 이미지를 다운로드하려면 다음을 수행합니다.
디플로이먼트를 사용하여 cRPD 파드 생성
쿠버네티스 파드는 하나 이상의 컨테이너 그룹으로, 관리 및 네트워킹을 위해 함께 묶여 있다. 쿠버네티스 디플로이먼트는 파드의 상태를 확인하고, 파드가 종료되면 파드의 컨테이너를 재시작한다. 디플로이는 파드의 생성 및 확장을 관리하는 데 권장되는 방법이다.
디플로이먼트에서 원하는 상태를 설명하면 디플로이먼트 컨트롤러가 실제 상태를 원하는 상태로 변경하는 경우. 디플로이먼트를 사용하여 새 레플리카셋을 생성할 수 있습니다. 또는 기존 디플로이먼트를 제거하고 새 디플로이먼트로 리소스를 채택할 수 있습니다.
YAML을 사용하여 cRPD Pod 생성
파드는 쿠버네티스 애플리케이션의 기본 실행 단위로, 사용자가 생성하거나 배포하는 쿠버네티스 오브젝트 모델에서 가장 작고 단순한 단위이다. 파드는 배포 단위, 즉 쿠버네티스에 있는 애플리케이션의 단일 인스턴스를 나타내며, 단일 컨테이너 또는 긴밀하게 결합되어 리소스를 공유하는 소수의 컨테이너로 구성될 수 있다. 도커는 쿠버네티스 파드에서 사용되는 가장 일반적인 컨테이너 런타임이다.
파드를 직접 생성하거나 쿠버네티스에서 컨트롤러를 간접적으로 사용할 수 있다. 컨트롤러는 여러 파드를 생성하고 관리할 수 있다. 컨트롤러는 사용자가 제공하는 Pod 템플릿을 사용하여 Pod를 생성합니다. Pod 템플릿은 Replication Controller, Jobs 및 DaemonSets와 같은 다른 개체에 포함된 Pod 사양입니다.
YAML 파일을 사용하여 cRPD Pod를 생성하려면 다음을 수행합니다
각 파드는 주어진 애플리케이션의 단일 인스턴스를 실행하기 위한 것이다. 애플리케이션을 수평으로 확장하려면(예: 여러 인스턴스 실행), 각 인스턴스에 대해 하나씩 여러 파드를 사용해야 한다. 쿠버네티스에서는 이를 일반적으로 복제라고 한다.
참조
작업 리소스를 사용하여 cRPD Pod 생성
잡은 하나 이상의 파드를 생성하고, 지정된 개수가 성공적으로 종료될 때까지 파드의 실행을 계속 재시도한다. 지정된 성공 완료 횟수에 도달하면 작업이 완료됩니다. 잡을 사용하여 여러 파드를 병렬로 실행할 수도 있다. 잡을 삭제하면 잡은 파드가 정리된다. 잡을 일시 중단하면 잡이 재개될 때까지 활성 파드가 삭제된다. crpd_job.yaml 파일을 사용하여 cRPD 파드를 생성하려면,
DaemonSet을 사용하여 cRPD Pod 생성
데몬셋은 모든(또는 일부) 노드가 파드의 복사본을 실행하도록 보장한다. 노드가 클러스터에 추가되면, 파드가 추가된다. 노드가 클러스터에서 제거되면 해당 파드는 가비지 수집된다. 데몬셋이 삭제되면, 생성된 파드는 삭제된다.
crpd_daemonset.yaml 파일을 사용하여 cRPD Pod 생성
각 파드는 주어진 애플리케이션의 단일 인스턴스를 실행하기 위한 것이다. 애플리케이션을 수평으로 확장하려면(예: 여러 인스턴스 실행), 각 인스턴스에 대해 하나씩 여러 파드를 사용해야 한다. 쿠버네티스에서는 이를 일반적으로 복제라고 한다.
참조
cRPD 확장
명령에 대한 매개 변수를 사용하여 –replicas 수요에 따라 여러 cRPD 인스턴스를 생성할 수 있습니다 kubectl run . 디플로이먼트는 레플리카셋을 소유하고 관리할 수 있는 객체이다.
확장하기 전에 하나의 포드가 있어야 합니다.
스케일 업하려면 다음을 수행합니다.
축소 방법:
-
다음 명령을 실행하여 서비스를 두 개의 복제본으로 축소합니다.
root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2deployment.apps/crpdref scaled
-
다음 명령을 실행하여 배포를 나열합니다.
root@kubernetes-master:~# kubectl get deployments -
다음 명령을 실행하여 Pod 수를 나열합니다. 두 개의 파드가 종료된 것을 볼 수 있다.
root@kubernetes-master:~# kubectl get pods -o wide
cRPD 구축의 롤 업데이트
파드 인스턴스를 새 버전으로 업데이트할 수 있다. 롤링 업데이트를 사용하면 파드 인스턴스를 새 인스턴스로 점진적으로 업데이트하여 다운타임 없이 디플로이먼트 업데이트를 수행할 수 있다. 새 파드는 사용 가능한 리소스가 있는 노드에서 스케줄링된다. 롤백 업데이트는 다운타임 없이 지속적인 통합 및 지속적인 애플리케이션 제공을 통해 애플리케이션을 한 환경에서 다른 환경으로 승격합니다. 쿠버네티스에서 업데이트는 버전이 지정되며, 모든 디플로이먼트 업데이트는 이전의 안정적인 버전으로 되돌릴 수 있다.
cRPD 구축을 새 이미지로 업데이트하고 업데이트 후 구성을 유지하려면:
할당된 리소스가 있는 cRPD 포드 배포
Pod는 두 가지 종류의 공유 리소스, 즉 컨테이너에 대한 네트워킹과 스토리지를 제공합니다. 파드의 컨테이너가 파드 외부의 엔티티와 통신할 때, 공유 네트워크 리소스(예: 포트)를 사용하는 방법을 조정해야 한다. 파드 내에서 컨테이너는 IP 주소와 포트를 사용하여 통신 localhost 한다.
파드 내의 컨테이너는 파드에 대해 구성된 name 것과 동일한 시스템 호스트 이름을 본다.
파드의 모든 컨테이너는 컨테이너 스펙의 플래그를 privileged 사용하여 특권 모드를 활성화할 수 있다. 이는 네트워크 스택 조작 또는 하드웨어 디바이스 액세스와 같은 운영 체제 관리 기능이 필요한 컨테이너에 유용합니다. 권한 있는 컨테이너 내의 프로세스는 컨테이너 외부의 프로세스에서 사용할 수 있는 것과 거의 동일한 권한을 갖습니다.
리소스가 있는 포드 배포를 보려면:
마운트된 볼륨을 사용한 cRPD Pod 배포
An emptyDir 은 Kubernetes에서 지원되는 볼륨 유형입니다. 파드가 노드에 할당될 때 생성되며, 파드가 해당 노드에서 실행되는 한 존재한다. 이름에서 알 수 있듯이 볼륨은 emptyDir 처음에 비어 있습니다. 파드의 모든 컨테이너는 볼륨에서 emptyDir 동일한 파일을 읽고 쓸 수 있지만, 해당 볼륨은 각 컨테이너의 동일하거나 다른 경로에 마운트될 수 있다. 어떤 이유로든 파드가 노드에서 제거되면, 의 emptyDir 데이터는 영구적으로 삭제된다.
Kubernetes에 스토리지 경로를 마운트하여 cRPD Pod 배포를 보려면 다음을 수행합니다.