Kubernetes Run 명령어

KubernetesBeginner
지금 연습하기

소개

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

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

  1. Minikube 클러스터를 시작하고 확인합니다.
  2. kubectl run을 사용하여 Pod 를 생성합니다.
  3. 여러 복제본을 가진 Deployment 를 생성합니다.
  4. 배치 처리를 위한 Job 을 실행합니다.
  5. 클러스터를 유지 관리하기 위해 리소스를 정리합니다.

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 워크플로우를 위한 견고한 기반을 구축할 수 있습니다.