Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Kubernetes에 cRPD 설치

Kubernetes는 컨테이너화된 워크로드와 서비스를 관리하기 위한 오픈 소스 플랫폼입니다. 컨테이너는 애플리케이션을 번들화하고 실행할 수 있는 좋은 방법입니다. 프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너를 관리하고 다운타임이 없는지 확인해야 합니다. 예를 들어, 컨테이너가 다운되면 다른 컨테이너를 시작해야 합니다. Kubernetes는 분산 시스템을 탄력적으로 실행할 수 있는 프레임워크를 제공합니다. Kubernetes는 호스트 컨테이너 클러스터 전반에서 애플리케이션 컨테이너의 구축 자동화, 확장 및 운영을 위한 플랫폼을 제공합니다.

필수 구성 요소

Linux 시스템에 Kubernetes를 설치하고 2노드 Linux 클러스터에 Kubernetes를 구축하려면 Kubernetes 설치를 참조하십시오.

Kubernetes를 구축하면 클러스터가 됩니다. Kubernetes 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라는 작업자 머신 집합으로 구성됩니다. 모든 클러스터에는 하나 이상의 작업자 노드가 있습니다. 작업자 노드는 애플리케이션의 구성 요소인 포드를 호스팅합니다.

이 섹션에서는 Kubernetes에서 cRPD Docker 이미지를 만드는 단계에 대해 간략하게 설명합니다.

Kubernetes 설치

Kubernetes 설치:

  1. 루트 사용자로 로그인합니다.
  2. 소프트웨어를 다운로드하여 설치합니다.
  3. Kubernetes를 시작합니다.

Kubernetes 클러스터

Kubernetes는 단일 장치로 작동하도록 연결된 컴퓨터 클러스터를 조정합니다. Kubernetes는 효율적인 방식으로 클러스터 전체에서 cRPD 구축 및 스케줄링을 자동화합니다.

Kubernetes 클러스터는 두 가지 유형의 리소스로 구성됩니다.

  • 기본은 클러스터를 조정합니다.

  • 노드는 애플리케이션을 실행하는 작업자입니다.

기본은 클러스터 관리를 담당합니다. 기본은 애플리케이션 예약, 애플리케이션의 원하는 상태 유지, 애플리케이션 확장, 신규 업데이트 출시 등 클러스터의 모든 활동을 조정합니다.

노드는 VM 또는 Kubernetes 클러스터에서 작업자 머신 역할을 하는 물리적 컴퓨터입니다. 각 노드에는 노드를 관리하고 Kubernetes 마스터와 통신하는 에이전트인 Kubelet이 있습니다. 또한 노드에는 Docker 또는 rkt와 같은 컨테이너 작업을 처리하는 도구가 있어야 합니다. 프로덕션 트래픽을 처리하는 Kubernetes 클러스터에는 최소 3개의 노드가 있어야 합니다.

Kubernetes에 cRPD 구축하면 기본이 애플리케이션 컨테이너를 시작합니다. 기본 은(는) 클러스터의 노드에서 실행할 컨테이너를 예약합니다. 노드는 기본이 노출하는 Kubernetes API를 사용하여 기본과 통신합니다. 또한 최종 사용자는 Kubernetes API를 직접 사용하여 클러스터와 상호 작용할 수 있습니다.

포드는 항상 노드에서 실행됩니다. 노드는 Kubernetes의 작업자 머신이며 클러스터에 따라 가상 또는 물리적 머신일 수 있습니다. 각 노드는 기본에 의해 관리됩니다. 노드에는 여러 포드가 있을 수 있으며, Kubernetes master는 클러스터의 노드에서 포드 예약을 자동으로 처리합니다.

모든 Kubernetes 노드는 적어도 다음을 실행합니다.

  • Kubelet은 Kubernetes Master와 Node 간의 통신을 담당하는 프로세스입니다. Pod와 머신에서 실행되는 컨테이너를 관리합니다.

  • 컨테이너 런타임(예: Docker, rkt)은 레지스트리에서 컨테이너 이미지를 풀링하고, 컨테이너를 풀링하고, 애플리케이션을 실행할 책임이 있습니다.

minikube 클러스터를 생성하려면 다음을 수행합니다.

  1. 다음 명령을 실행하여 minikube 버전을 확인합니다.
  2. 클러스터를 시작하려면 다음 명령을 실행합니다.
  3. 다음 명령을 실행하여 kubectl이 설치되었는지 확인합니다.
  4. 클러스터 세부 정보를 보려면 다음 명령을 실행합니다.
  5. 클러스터의 노드를 보려면 다음 명령을 실행합니다.

cRPD Docker 이미지 다운로드

필수 구성 요소
  • cRPD 소프트웨어를 가져오기 전에 Docker가 Linux 호스트에 설치되고 Docker 엔진이 실행 중인지 확인합니다.

  • cRPD 소프트웨어를 다운로드하기 전에 Juniper 지원에 등록해야 합니다.

docker 이미지를 다운로드하려면 다음을 수행합니다.

  1. cRPD 주문할 때 판매 이행 프로세스의 일부로 수신한 로그인 이름과 암호를 사용하여 Juniper Internal Docker 레지스트리에 로그인합니다.
    1. 파일 -passwd.txt를 생성하고 Juniper 고객 관리 팀에서 제공하는 견적을 제외한 액세스 토큰을 복사합니다.
    2. 다음 명령을 사용하여 엔터프라이즈 허브에 로그인합니다.
      root@ubuntu-vm18$ cat passwd.txt | docker login -u"<registered-email-id>" --password-stdin enterprise-hub.juniper.net:443

      예를 들어 root@ubuntu-vm18$ cat passwd.txt | docker login -u user@domain.com --password-stdin enterprise-hub.juniper.net:443

  2. 다음 명령을 사용하여 다운로드 사이트에서 docker 이미지를 가져옵니다.

    root@dc-rpd-01# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:<release tag>

    예를 들어

    root@ubuntu-vm18:~# docker pull enterprise-hub.juniper.net:443/crpd-docker-prod/crpd:22.3R1

  3. docker 이미지 리포지토리에서 이미지를 확인합니다.

    root@dc-rpd-01# docker images

구축을 사용하여 cRPD 포드 생성

Kubernetes Pod는 관리 및 네트워킹의 목적을 위해 함께 연결된 하나 이상의 컨테이너 그룹입니다. Kubernetes 구축은 포드의 상태를 확인하고 Pod의 컨테이너가 종료되면 다시 시작합니다. 구축은 Pod의 생성 및 확장을 관리하는 권장 방법입니다.

구축에서 원하는 상태를 설명하면 구축 컨트롤러가 실제 상태를 원하는 상태로 변경합니다. 구축을 정의하여 새로운 복제 세트를 만들거나 기존 구축을 제거하고 새로운 구축을 통해 모든 리소스를 채택할 수 있습니다.

  1. Kubernetes-master에서 crpd.yaml 파일을 생성하고 다음 텍스트 컨텐츠를 추가합니다.
  2. crpd.yaml 파일을 저장하여 cRPD 포드를 만듭니다.

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. 기존 Pod 목록을 보려면 다음 명령을 실행합니다.

    root@kubernetes-master:~# kubectl get pods

  4. 다음 명령을 실행하여 해당 Pod 내부에 있는 컨테이너와 컨테이너를 구축하는 데 사용되는 이미지를 확인합니다.

    root@kubernetes-master:~# kubectl describe pod crpd

YAML을 사용하여 cRPD 포드 생성

Pod는 Kubernetes 애플리케이션의 기본 실행 유닛으로, 생성하거나 구축하는 Kubernetes 개체 모델에서 가장 작고 단순한 장치입니다. Pod는 구축 단위를 나타냅니다. Kubernetes에서 애플리케이션의 단일 인스턴스는 단일 컨테이너 또는 긴밀하게 결합되어 리소스를 공유하는 소수의 컨테이너로 구성될 수 있습니다. Docker는 Kubernetes Pod에서 사용되는 가장 일반적인 컨테이너 런타임입니다.

Kubernetes에서 컨트롤러를 사용하여 직접 포드를 만들거나 간접적으로 만들 수 있습니다. 컨트롤러는 여러 포드를 생성하고 관리할 수 있습니다. 컨트롤러는 사용자가 제공하는 Pod 템플릿을 사용하여 Pod를 생성합니다. 포드 템플릿은 복제 컨트롤러, 잡스 및 데몬셋과 같은 다른 개체에 포함된 포드 사양입니다.

YAML 파일을 사용하여 cRPD 포드를 생성하려면

  1. Kubernetes-master에서 crpd.yaml 파일을 생성하면 다음 텍스트 컨텐츠를 추가합니다.
  2. crpd.yaml 파일을 저장하여 crpd Pod를 만듭니다.

    root@kubernetes-master:~# kubectl create -f crpd.yaml

  3. 기존 Pod 목록을 보려면 다음 명령을 실행합니다.

    root@kubernetes-master:~# kubectl get pods

  4. 다음 명령을 실행하여 해당 Pod 내부에 있는 컨테이너와 컨테이너를 구축하는 데 사용되는 이미지를 확인합니다.

    root@kubernetes-master:~# kubectl describe pod crpd

  5. 실행 중인 컨테이너 내에서 대화형 CLI를 제공하려면 다음 명령을 실행합니다.

    root@kubernetes-master:~# kubectl exec -it crpd cli여기에서 이름 crpd가 있는 포드를 실행하고 명령줄 모드에 연결합니다.

  6. 다음 명령을 실행하여 경로를 확인합니다.

    root@crpd:/> show route

각 Pod는 지정된 애플리케이션의 단일 인스턴스를 실행하기 위한 것입니다. 애플리케이션을 수평으로 확장하려면(예: 여러 인스턴스를 실행), 각 인스턴스에 하나씩 여러 포드를 사용해야 합니다. Kubernetes에서 이것을 복제라고 합니다.

작업 리소스를 사용하여 cRPD 포드 만들기

작업은 하나 이상의 포드를 생성하고 지정된 수의 포드가 성공적으로 종료될 때까지 Pod의 실행을 계속합니다. 지정된 수의 성공적인 완료에 도달하면 작업이 완료됩니다. 작업을 사용하여 여러 포드를 병렬로 실행할 수도 있습니다. 작업을 삭제하면 생성한 Pod가 정리됩니다. 작업이 다시 재개될 때까지 작업을 일시 중단하면 활성 Pod가 삭제됩니다. crpd_job.yaml 파일을 사용하여 cRPD 포드를 생성하려면 다음을 수행합니다.

  1. 작업 노드에서 crpd_job.yaml 파일을 생성하고 다음 텍스트 컨텐츠를 추가합니다.
  2. crpd_job.yaml 파일을 저장하여 crpd Pod를 만듭니다.

    root@kubernetes-master:~# kubectl create -f crpd_job.yaml

  3. 기존 Pod 목록을 보려면 다음 명령을 실행합니다.

    root@kubernetes-master:~# kubectl get pods

  4. 다음 명령을 실행하여 해당 Pod 내부에 있는 컨테이너와 컨테이너를 구축하는 데 사용되는 이미지를 확인합니다.

    root@kubernetes-master:~# kubectl describe job/crpdjob

DaemonSet을 사용하여 cRPD 포드 만들기

DaemonSet은 모든(또는 일부) 노드가 Pod의 복사본을 실행하도록 보장합니다. 노드가 클러스터에 추가되면 포드가 추가됩니다. 노드가 클러스터에서 제거되면 이러한 Pod는 가비지 수집됩니다. 데몬셋을 삭제하면 생성한 Pod가 정리됩니다.

crpd_daemonset.yaml 파일을 사용하여 cRPD 포드 생성

  1. 작업 노드에서 crpd_daemonset.yaml 파일을 생성하고 다음 텍스트 컨텐츠를 추가합니다.
  2. da1.yaml 파일을 저장하여 crpd Pod를 만듭니다.

    root@kubernetes-master:~# kubectl create -f crpd_daemonset.yaml

  3. 기존 Pod 목록을 보려면 다음 명령을 실행합니다.

    root@kubernetes-master:~# kubectl get pods

  4. 다음 명령을 실행하여 해당 Pod 내부에 있는 컨테이너와 컨테이너를 구축하는 데 사용되는 이미지를 확인합니다.

    root@kubernetes-master:~# kubectl describe pod crpd

    root@kubernetes-master:~# kubectl describe pod crpd-5fc4fd79df-xr8f5

각 Pod는 지정된 애플리케이션의 단일 인스턴스를 실행하기 위한 것입니다. 애플리케이션을 수평으로 확장하려면(예: 여러 인스턴스를 실행), 각 인스턴스에 하나씩 여러 포드를 사용해야 합니다. Kubernetes에서 이것을 복제라고 합니다.

cRPD 확장

명령에 대한 매개 변수를 사용하여 수요에 따라 여러 cRPD 인스턴스를 –replicas 생성할 kubectl run 수 있습니다. 구축은 ReplicaSets를 소유하고 관리할 수 있는 객체입니다.

확장하기 전에 하나의 포드가 존재해야 합니다.

확장:

  1. 포드를 생성합니다.

    root@kubernetes-master:~# kubectl create -f crpd_replicatset.yaml

  2. Kubernetes-master에서 crpd_replicaSet.yaml 파일을 생성하려면 다음 텍스트 컨텐츠를 추가합니다.
  3. 다음 명령을 실행하여 포드를 확인합니다.

    root@kubernetes-master:~# kubectl get pods

  4. 다음 명령을 실행하여 구축을 4개의 복제본으로 확장합니다.

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=4

  5. 다음 명령을 실행하여 구축을 나열합니다.

    root@kubernetes-master:~# kubectl get deployments

  6. 다음 명령을 실행하여 변경된 포드 수를 확인합니다.

    root@kubernetes-master:~# kubectl get pods -o wide

  7. 다음 명령을 실행하여 Pods의 세부 정보를 확인합니다.

    root@kubernetes-master:~# kubectl describe pods

확장:

  1. 다음 명령을 실행하여 서비스를 2개의 복제본으로 축소합니다.

    root@kubernetes-master:~# kubectl scale deployments crpdref --replicas=2

  2. 다음 명령을 실행하여 구축을 나열합니다.

    root@kubernetes-master:~# kubectl get deployments

  3. 다음 명령을 실행하여 포드 수를 나열합니다. 2개의 포드가 종료된 것을 볼 수 있습니다.

    root@kubernetes-master:~# kubectl get pods -o wide

cRPD 구축 업데이트

Pod 인스턴스를 새 버전으로 업데이트할 수 있습니다. 롤링 업데이트를 통해 새로운 Pod 인스턴스를 점진적으로 업데이트하여 구축의 업데이트가 다운타임 제로로 이루어질 수 있습니다. 새로운 Pod는 사용 가능한 리소스로 노드에서 예약됩니다. 롤백 업데이트는 다운타임이 전혀 없는 애플리케이션을 지속적으로 통합하고 전달하여 애플리케이션을 한 환경에서 다른 환경으로 승격합니다. Kubernetes에서 업데이트가 버전화되고 모든 구축 업데이트가 이전의 안정적인 버전으로 되돌려질 수 있습니다.

새 이미지로 cRPD 구축을 업데이트하고 업데이트 후 구성을 보존하려면 다음을 수행합니다.

  1. cRPD 포드를 생성합니다.

    root@crpd-01:~# kubectl kubectl create -f crpd_deploy.yaml

  2. Kubernetes-master에서 crpd_deploy.yaml 파일을 생성하려면 다음 텍스트 컨텐츠를 추가합니다.
  3. 다음 명령을 실행하여 구축을 나열합니다.

    root@kubernetes-master:~# kubectl get deployments

  4. 실행 중인 포드를 나열하려면 다음 명령을 실행합니다.

    root@kubernetes-master:~# kubectl get pods

    root@kubernetes-master:~# kubectl get pods -o wide

  5. 다음 명령을 실행하여 cRPD 현재 이미지 버전을 봅니다.

    root@kubernetes-master:~# kubectl exec -it crpd-deploy4-674b4fcfb5-8xc5d -- cli

  6. 다음 명령을 실행하여 현재 이미지 버전을 봅니다.

    root@crpd-deploy4-674b4fcfb5-8xc5d> show version

  7. 다음 명령을 실행하여 애플리케이션 이미지를 새 버전으로 업데이트합니다.

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl edit deployment/crpd-deploy4

  8. 다음 명령을 실행하여 이미지 업데이트 확인:

    root@crpd-deploy4-674b4fcfb5-8xc5d:~$ sudo kubectl rollout status deployment/crpd-deploy4

  9. 다음 명령을 실행하여 포드를 확인합니다.

    root@crpd-deploy4-674b4fcfb5-8xc5d> kubectl get pods

  10. 다음 명령을 실행하여 cRPD 이미지 버전을 봅니다.

    root@kubernetes-master:~$ sudo kubectl exec -it crpd-deploy4-6ff476994d-8z2kr -- bash

  11. 다음 명령을 실행하여 현재 이미지 버전을 봅니다.

    root@crpd-deploy4-6ff476994d-8z2kr> show version

cRPD 리소스가 할당된 Pod 구축

Pod는 컨테이너에 대한 네트워킹 및 스토리지라는 두 가지 유형의 공유 리소스를 제공합니다. Pod의 컨테이너가 Pod 외부의 엔터티와 통신할 때 공유 네트워크 리소스(예: 포트)를 사용하는 방법을 조정해야 합니다. Pod 내에서 컨테이너는 IP 주소와 포트를 사용하여 통신 localhost합니다.

Pod 내의 컨테이너는 Pod에 구성된 name 것과 동일한 시스템 호스트 이름을 봅니다.

Pod의 모든 컨테이너는 컨테이너 사양의 플래그를 privileged 사용하여 권한 모드를 활성화할 수 있습니다. 이는 네트워크 스택 조작 또는 하드웨어 디바이스 액세스와 같은 운영 체제 관리 기능을 사용하는 컨테이너에 유용합니다. 권한 있는 컨테이너 내의 프로세스는 컨테이너 외부의 프로세스에 사용할 수 있는 거의 동일한 권한을 받습니다.

리소스를 사용하여 Pod 구축을 보려면 다음을 수행합니다.

  1. Kubernetes-master에서 crpd_res.yaml 파일을 생성하면 다음 텍스트 컨텐츠를 추가합니다.
  2. crpd_res.yaml 파일을 저장하여 crpd Pod를 만듭니다.

    root@kubernetes-master:~# kubectl create -f crpd_res.yaml

  3. 기존 Pod 목록을 보려면 다음 명령을 실행합니다.

    root@kubernetes-master:~# kubectl get pods

  4. 다음 명령을 실행하여 해당 Pod 내부에 있는 컨테이너와 컨테이너를 구축하는 데 사용되는 이미지를 확인합니다.

    root@kubernetes-master:~# kubectl describe pod crpres

마운트 볼륨을 사용한 cRPD Pod 구축

emptyDir 은(는) K8s에서 지원되는 여러 유형의 볼륨 중 하나이며 포드가 노드에 할당되어 해당 노드에서 실행되는 한 존재할 때 먼저 생성됩니다. 이름에서 말하듯이 볼륨은 emptyDir 처음에는 비어 있습니다. Pod의 모든 컨테이너는 볼륨에서 emptyDir 동일한 파일을 읽고 쓸 수 있지만, 해당 볼륨은 각 컨테이너의 동일하거나 다른 경로에 마운트될 수 있습니다. 어떤 이유로 노드에서 Pod가 제거되면 의 데이터는 emptyDir 영구적으로 삭제됩니다.

Kubernetes의 스토리지 경로를 장착하여 cRPD Pod 구축을 보려면 다음을 수행합니다.

  1. Kubernetes-master에서 crpd_volume.yaml 파일을 생성하면 다음 텍스트 컨텐츠를 추가합니다.
  2. crpd_volume.yaml 파일을 저장하여 crpd Pod를 만듭니다.

    root@kubernetes-master:~# kubectl create -f crpd_volume.yaml

  3. 기존 Pod 목록을 보려면 다음 명령을 실행합니다.

    root@kubernetes-master:~# kubectl get pods

  4. 다음 명령을 실행하여 해당 Pod 내부에 있는 컨테이너와 컨테이너를 구축하는 데 사용되는 이미지를 확인합니다.

    root@kubernetes-master:~# kubectl describe pod crpd-volume

  5. 다음 명령을 실행하여 cRPD 인스턴스를 실행합니다.

    root@kubernetes-master:~# kubectl exec -it crpd-volume bash

  6. 경로의 파일을 보려면 다음 명령을 실행합니다.

    root@crpd-volume:/# ls

  7. 다음 명령을 실행하여 스토리지 경로로 이동합니다.

    root@crpd-volume:/# cd var/log/crpd-storage/

    root@crpd-volume:/var/log/crpd-storage/#