소개
kubectl run 명령어는 Kubernetes 에서 리소스를 생성하는 가장 간단하고 다재다능한 방법 중 하나입니다. 컨테이너를 빠르게 배포하고, 배치 처리를 위한 작업을 생성하거나, 애플리케이션의 여러 복제본을 관리하기 위한 배포를 설정할 수 있습니다. 이 랩은 초보자가 kubectl run 명령의 기본 사항과 이를 효과적으로 사용하는 방법을 이해하도록 돕기 위해 설계되었습니다.
이 랩을 마치면 다음을 배우게 됩니다.
- Minikube 클러스터를 시작하고 확인합니다.
kubectl run을 사용하여 Pod 를 생성합니다.- 여러 복제본을 가진 Deployment 를 생성합니다.
- 배치 처리를 위한 Job 을 실행합니다.
- 클러스터를 유지 관리하기 위해 리소스를 정리합니다.
Minikube 클러스터 시작
리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 가벼운 Kubernetes 환경입니다.
작업 디렉토리로 이동:
터미널을 열고 기본 프로젝트 폴더로 이동합니다.
cd /home/labex/projectMinikube 시작:
Minikube 를 시작하여 Kubernetes 클러스터를 초기화합니다.
minikube start- 이 명령어는 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
- Minikube 는 시스템 성능에 따라 시작하는 데 몇 분 정도 걸릴 수 있습니다.
Minikube 가 실행 중인지 확인:
Minikube 클러스터의 상태를 확인합니다.
minikube statuskubelet및apiserver와 같은 구성 요소가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 를 생성합니다.
Pod 생성:
nginx-pod라는 Pod 를 생성하려면 다음 명령을 실행합니다.kubectl run nginx-pod --image=nginx--image옵션은 사용할 컨테이너 이미지를 지정합니다. 여기서는 공식 Nginx 이미지를 사용합니다.
Pod 확인:
Pod 가 실행 중인지 확인합니다.
kubectl get pods- 출력에서
nginx-pod를 찾습니다. - Pod 가 준비되면
STATUS열에Running이 표시되어야 합니다.
- 출력에서
Pod 상태가 Pending으로 표시되면 Kubernetes 가 아직 컨테이너 이미지를 가져오는 중일 수 있습니다. 잠시 기다린 후 kubectl get pods를 다시 실행하십시오.
Deployment 생성 및 레플리카 스케일 조정
Deployment는 Pod 집합을 관리하고 원하는 대로 실행되도록 보장합니다. 애플리케이션을 스케일링하고 업데이트하는 데 유용합니다.
Deployment 생성:
nginx-deployment라는 Deployment 를 생성하려면 다음 명령을 실행합니다.kubectl create deployment nginx-deployment --image=nginx--image옵션은 사용할 컨테이너 이미지를 지정합니다.
Deployment 를 3 개의 레플리카로 스케일링:
--replicas플래그가 더 이상 사용되지 않으므로,kubectl scale을 사용하여 Deployment 를 스케일링합니다.kubectl scale명령을 사용하여 레플리카 수를 조정합니다.kubectl scale deployment nginx-deployment --replicas=3- 이렇게 하면 Deployment 의 일부로 세 개의 Pod 가 실행되도록 보장합니다.
Deployment 및 레플리카 확인:
Deployment 및 Pod 의 상태를 확인합니다.
kubectl get deployments kubectl get pods- Deployment 가
READY열 아래에 3 개의 레플리카를 표시하는지 확인합니다. kubectl get pods의 출력에 세 개의 Pod 가 나열되어 있는지 확인합니다.
- Deployment 가
Pod 가 Running 상태가 아니면 클러스터 리소스가 부족하기 때문일 수 있습니다. 다음 명령으로 Pod 이벤트를 확인하십시오.
kubectl describe pod <pod-name>
Job 생성
Job은 성공적으로 완료되어야 하는 작업을 실행하는 데 사용됩니다. 예를 들어, 배치 작업 또는 데이터 처리 작업이 있습니다. kubectl run을 사용하여 Job 을 생성하고 실행을 확인합니다.
- Job 생성
busybox-job이라는 Job 을 생성하려면 다음 명령을 실행합니다.
kubectl run busybox-job --image=busybox --restart=OnFailure -- echo "Hello from Kubernetes"
--restart=OnFailure플래그는 이것이 Job 임을 지정합니다.echo명령은 Job 이 실행할 작업을 정의합니다.
- Job 상태 확인
Job 을 확인하려면 다음 명령을 실행합니다.
kubectl get jobs
예상 출력:
NAME COMPLETIONS DURATION AGE
busybox-job 1/1 5s 10s
COMPLETIONS: Job 이 한 번 성공적으로 실행되었음을 보여줍니다 (1/1).- Job 이 나열되지 않으면 자동으로 정리되었을 수 있습니다. 다음 단계로 진행하여 해당 Pod 를 확인하십시오.
- Job 의 Pod 확인
Job 은 Pod 내에서 실행되므로, 다음 명령을 사용하여 Pod 를 확인합니다.
kubectl get pods
예상 출력:
NAME READY STATUS RESTARTS AGE
busybox-job 0/1 Completed 0 30s
STATUS필드는Completed를 표시해야 하며, 이는 Job 이 완료되었음을 나타냅니다.
- Job 출력 확인
Job 의 Pod 로그를 검사하여 출력을 확인합니다.
kubectl logs busybox-job
예상 출력:
Hello from Kubernetes
이는 Job 이 성공적으로 실행되었음을 확인합니다.
정리
클러스터를 깨끗하게 유지하려면 랩 동안 생성한 리소스를 삭제하십시오.
리소스 삭제:
다음 명령을 실행합니다.
kubectl delete pod nginx-pod kubectl delete pod busybox-job kubectl delete deployment nginx-deployment정리 확인:
남아 있는 리소스가 없는지 확인합니다.
kubectl get pods kubectl get deployments- 출력에 생성한 리소스가 나열되지 않는지 확인합니다.
요약
이 랩에서는 다음을 배우셨습니다:
- Minikube 클러스터를 시작하고 확인합니다.
kubectl run을 사용하여 Pod, Deployment 및 Job 을 생성하고 관리합니다.- 클러스터를 정리하기 위해 리소스를 정리합니다.
kubectl run 명령은 Kubernetes 에서 애플리케이션을 배포하고 워크로드를 관리하는 간단하고 강력한 방법을 제공합니다. 이러한 단계를 연습함으로써, 더 발전된 Kubernetes 워크플로우를 위한 견고한 기반을 구축할 수 있습니다.


