Kubernetes Run 명령어

KubernetesBeginner
지금 연습하기

소개

kubectl run 명령어는 Kubernetes 에서 리소스를 생성하는 가장 간단하고 다재다능한 방법 중 하나입니다. 컨테이너를 빠르게 배포하고, 배치 처리를 위한 작업을 생성하거나, 애플리케이션의 여러 복제본을 관리하기 위한 배포를 설정할 수 있습니다. 이 랩은 초보자가 kubectl run 명령의 기본 사항과 이를 효과적으로 사용하는 방법을 이해하도록 돕기 위해 설계되었습니다.

이 랩을 마치면 다음을 배우게 됩니다.

  1. Minikube 클러스터를 시작하고 확인합니다.
  2. kubectl run을 사용하여 Pod 를 생성합니다.
  3. 여러 복제본을 가진 Deployment 를 생성합니다.
  4. 배치 처리를 위한 Job 을 실행합니다.
  5. 클러스터를 유지 관리하기 위해 리소스를 정리합니다.
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 98%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Minikube 클러스터 시작

리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 가벼운 Kubernetes 환경입니다.

  1. 작업 디렉토리로 이동:

    터미널을 열고 기본 프로젝트 폴더로 이동합니다.

    cd /home/labex/project
  2. Minikube 시작:

    Minikube 를 시작하여 Kubernetes 클러스터를 초기화합니다.

    minikube start
    • 이 명령어는 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
    • Minikube 는 시스템 성능에 따라 시작하는 데 몇 분 정도 걸릴 수 있습니다.
  3. Minikube 가 실행 중인지 확인:

    Minikube 클러스터의 상태를 확인합니다.

    minikube status
    • kubeletapiserver와 같은 구성 요소가 Running으로 나열되어 있는지 확인합니다.
    • 클러스터가 실행 중이지 않으면 minikube start를 다시 실행합니다.

Minikube 를 시작하는 데 문제가 발생하면 필요에 따라 minikube delete를 사용하여 환경을 재설정하십시오.

kubectl run 명령어 탐색

kubectl run 명령어는 Pod 에서 특정 이미지를 생성하고 실행하는 데 사용됩니다. Pod 의 동작, 환경 및 사양을 사용자 정의하기 위한 여러 옵션을 제공합니다.

kubectl run에 사용 가능한 옵션을 보려면 다음 명령을 실행하십시오.

kubectl run -h

다음 출력을 볼 수 있습니다.

Create and run a particular image in a pod.

Examples:
## Start a nginx pod
kubectl run nginx --image=nginx

## Start a hazelcast pod and let the container expose port 5701
kubectl run hazelcast --image=hazelcast/hazelcast --port=5701

## Start a hazelcast pod and set environment variables "DNS_DOMAIN=cluster" and "POD_NAMESPACE=default" in the container
kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"

## Start a hazelcast pod and set labels "app=hazelcast" and "env=prod" in the container
kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"

## Dry run; print the corresponding API objects without creating them
kubectl run nginx --image=nginx --dry-run=client

## Start a nginx pod, but overload the spec with a partial set of values parsed from JSON
kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": { ... } }'

## Start a busybox pod and keep it in the foreground, don't restart it if it exits
kubectl run -i -t busybox --image=busybox --restart=Never

## Start the nginx pod using the default command, but use custom arguments (arg1 .. argN) for that command
kubectl run nginx --image=nginx -- <arg1> <arg2> ... <argN>

## Start the nginx pod using a different command and custom arguments
kubectl run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>

Pod 생성

Pod는 Kubernetes 에서 배포 가능한 가장 작은 단위이며, 함께 실행되는 하나 이상의 컨테이너를 나타냅니다. 이 단계에서는 Nginx 웹 서버를 실행하는 Pod 를 생성합니다.

  1. Pod 생성:

    nginx-pod라는 Pod 를 생성하려면 다음 명령을 실행합니다.

    kubectl run nginx-pod --image=nginx
    • --image 옵션은 사용할 컨테이너 이미지를 지정합니다. 여기서는 공식 Nginx 이미지를 사용합니다.
  2. Pod 확인:

    Pod 가 실행 중인지 확인합니다.

    kubectl get pods
    • 출력에서 nginx-pod를 찾습니다.
    • Pod 가 준비되면 STATUS 열에 Running이 표시되어야 합니다.

Pod 상태가 Pending으로 표시되면 Kubernetes 가 아직 컨테이너 이미지를 가져오는 중일 수 있습니다. 잠시 기다린 후 kubectl get pods를 다시 실행하십시오.

Deployment 생성 및 레플리카 스케일 조정

Deployment는 Pod 집합을 관리하고 원하는 대로 실행되도록 보장합니다. 애플리케이션을 스케일링하고 업데이트하는 데 유용합니다.

  1. Deployment 생성:

    nginx-deployment라는 Deployment 를 생성하려면 다음 명령을 실행합니다.

    kubectl create deployment nginx-deployment --image=nginx
    • --image 옵션은 사용할 컨테이너 이미지를 지정합니다.
  2. Deployment 를 3 개의 레플리카로 스케일링:

    --replicas 플래그가 더 이상 사용되지 않으므로, kubectl scale을 사용하여 Deployment 를 스케일링합니다.

    kubectl scale 명령을 사용하여 레플리카 수를 조정합니다.

    kubectl scale deployment nginx-deployment --replicas=3
    • 이렇게 하면 Deployment 의 일부로 세 개의 Pod 가 실행되도록 보장합니다.
  3. Deployment 및 레플리카 확인:

    Deployment 및 Pod 의 상태를 확인합니다.

    kubectl get deployments
    kubectl get pods
    • Deployment 가 READY 열 아래에 3 개의 레플리카를 표시하는지 확인합니다.
    • kubectl get pods의 출력에 세 개의 Pod 가 나열되어 있는지 확인합니다.

Pod 가 Running 상태가 아니면 클러스터 리소스가 부족하기 때문일 수 있습니다. 다음 명령으로 Pod 이벤트를 확인하십시오.

kubectl describe pod <pod-name>

Job 생성

Job은 성공적으로 완료되어야 하는 작업을 실행하는 데 사용됩니다. 예를 들어, 배치 작업 또는 데이터 처리 작업이 있습니다. kubectl run을 사용하여 Job 을 생성하고 실행을 확인합니다.

  1. Job 생성

busybox-job이라는 Job 을 생성하려면 다음 명령을 실행합니다.

kubectl run busybox-job --image=busybox --restart=OnFailure -- echo "Hello from Kubernetes"
  • --restart=OnFailure 플래그는 이것이 Job 임을 지정합니다.
  • echo 명령은 Job 이 실행할 작업을 정의합니다.
  1. Job 상태 확인

Job 을 확인하려면 다음 명령을 실행합니다.

kubectl get jobs

예상 출력:

NAME          COMPLETIONS   DURATION   AGE
busybox-job   1/1           5s         10s
  • COMPLETIONS: Job 이 한 번 성공적으로 실행되었음을 보여줍니다 (1/1).
  • Job 이 나열되지 않으면 자동으로 정리되었을 수 있습니다. 다음 단계로 진행하여 해당 Pod 를 확인하십시오.
  1. Job 의 Pod 확인

Job 은 Pod 내에서 실행되므로, 다음 명령을 사용하여 Pod 를 확인합니다.

kubectl get pods

예상 출력:

NAME               READY   STATUS      RESTARTS   AGE
busybox-job        0/1     Completed   0          30s
  • STATUS 필드는 Completed를 표시해야 하며, 이는 Job 이 완료되었음을 나타냅니다.
  1. Job 출력 확인

Job 의 Pod 로그를 검사하여 출력을 확인합니다.

kubectl logs busybox-job

예상 출력:

Hello from Kubernetes

이는 Job 이 성공적으로 실행되었음을 확인합니다.

정리

클러스터를 깨끗하게 유지하려면 랩 동안 생성한 리소스를 삭제하십시오.

  1. 리소스 삭제:

    다음 명령을 실행합니다.

    kubectl delete pod nginx-pod
    kubectl delete pod busybox-job
    kubectl delete deployment nginx-deployment
  2. 정리 확인:

    남아 있는 리소스가 없는지 확인합니다.

    kubectl get pods
    kubectl get deployments
    • 출력에 생성한 리소스가 나열되지 않는지 확인합니다.

요약

이 랩에서는 다음을 배우셨습니다:

  1. Minikube 클러스터를 시작하고 확인합니다.
  2. kubectl run을 사용하여 Pod, Deployment 및 Job 을 생성하고 관리합니다.
  3. 클러스터를 정리하기 위해 리소스를 정리합니다.

kubectl run 명령은 Kubernetes 에서 애플리케이션을 배포하고 워크로드를 관리하는 간단하고 강력한 방법을 제공합니다. 이러한 단계를 연습함으로써, 더 발전된 Kubernetes 워크플로우를 위한 견고한 기반을 구축할 수 있습니다.