소개
kubectl create 명령어는 Kubernetes 리소스를 생성하는 데 필수적인 도구입니다. YAML 또는 JSON 파일을 사용하여 네임스페이스, 배포 (Deployment), 서비스, 시크릿 (Secrets), ConfigMap 과 같은 리소스를 정의합니다. 이 랩에서는 이러한 리소스를 단계별로 생성하고 Kubernetes 에서의 역할을 이해하는 방법을 배우게 됩니다.
이 랩을 완료하면 다음을 수행할 수 있습니다.
- Minikube 클러스터를 시작하고 확인합니다.
kubectl create를 사용하여 다양한 Kubernetes 리소스를 생성하고 확인합니다.
Minikube 시작 및 클러스터 확인
Kubernetes 를 사용하기 전에 실행 중인 클러스터가 필요합니다. Minikube 는 가벼운 로컬 Kubernetes 클러스터를 제공합니다.
프로젝트 디렉토리로 이동:
터미널을 열고 기본 작업 디렉토리로 이동합니다.
cd /home/labex/projectMinikube 시작:
Minikube 를 시작하여 클러스터를 초기화합니다.
minikube start- Minikube 는 단일 노드 Kubernetes 클러스터를 생성합니다. 이 단계는 몇 분 정도 걸릴 수 있습니다.
Minikube 상태 확인:
Minikube 가 성공적으로 시작되었는지 확인합니다.
minikube statusapiserver및kubelet과 같은 구성 요소가Running으로 표시되는지 확인합니다.Kubernetes 구성 확인:
kubectl이 Minikube 클러스터에 연결되어 있는지 확인합니다.kubectl cluster-infoAPI 서버 및 기타 구성 요소에 대한 세부 정보를 표시합니다.
Minikube 가 시작에 실패하면 minikube delete를 사용하여 재설정하고 다시 시도하십시오.
kubectl create 명령어 탐색
kubectl create 명령어는 Kubernetes 리소스를 생성하기 위한 여러 하위 명령어를 제공합니다. 네임스페이스, 배포 (Deployment), 서비스, 시크릿 (Secrets), ConfigMap 과 같은 리소스 생성을 관리하는 데 도움이 됩니다.
사용 가능한 kubectl create 하위 명령어를 보려면 다음 명령을 실행하십시오.
kubectl create -h
다음과 같은 출력을 볼 수 있습니다.
Create a resource from a file or from stdin.
JSON and YAML formats are accepted.
Examples:
## Create a pod using the data in pod.json
kubectl create -f ./pod.json
## Create a pod based on the JSON passed into stdin
cat pod.json | kubectl create -f -
## Edit the data in registry.yaml in JSON then create the resource using the edited data
kubectl create -f registry.yaml --edit -o json
Available Commands:
clusterrole Create a cluster role
clusterrolebinding Create a cluster role binding for a particular cluster role
configmap Create a config map from a local file, directory or literal value
cronjob Create a cron job with the specified name
deployment Create a deployment with the specified name
ingress Create an ingress with the specified name
job Create a job with the specified name
namespace Create a namespace with the specified name
poddisruptionbudget Create a pod disruption budget with the specified name
priorityclass Create a priority class with the specified name
quota Create a quota with the specified name
role Create a role with single rule
rolebinding Create a role binding for a particular role or cluster role
secret Create a secret using specified subcommand
service Create a service using a specified subcommand
serviceaccount Create a service account with the specified name
token Request a service account token
사용 가능한 하위 명령어와 해당 설명을 검토하여 kubectl create를 사용하는 방법을 이해하십시오.
네임스페이스 (Namespace) 생성
네임스페이스를 사용하면 Kubernetes 에서 리소스를 구성하고 격리할 수 있습니다.
네임스페이스 정의 파일 생성:
namespace.yaml이라는 새 파일을 엽니다.nano namespace.yaml네임스페이스 정의:
다음 내용을 추가합니다.
apiVersion: v1 kind: Namespace metadata: name: mynamespaceCtrl+X,Y,Enter를 눌러 파일을 저장합니다.네임스페이스 적용:
네임스페이스를 생성합니다.
kubectl create -f namespace.yaml네임스페이스 확인:
네임스페이스 목록을 확인합니다.
kubectl get namespaces출력에
mynamespace가 나타나는지 확인합니다.
배포 (Deployment) 생성
배포는 파드 (Pod) 의 원하는 상태를 관리하고 유지합니다.
배포 정의 파일 생성:
deployment.yaml이라는 파일을 엽니다.nano deployment.yaml배포 정의:
Nginx 컨테이너의 세 개의 레플리카 (replica) 를 배포하기 위해 다음 내용을 추가합니다.
apiVersion: apps/v1 kind: Deployment metadata: name: mydeployment namespace: mynamespace spec: replicas: 3 selector: matchLabels: app: myapp template: metadata: labels: app: myapp spec: containers: - name: nginx-container image: nginx파일을 저장합니다.
배포 적용:
배포를 생성합니다.
kubectl create -f deployment.yaml배포 확인:
배포 및 해당 파드를 확인합니다.
kubectl get deployments -n mynamespace kubectl get pods -n mynamespace세 개의 파드가 실행 중인지 확인합니다.
서비스 (Service) 생성
서비스는 파드 집합에 대한 안정적인 네트워크 접근을 제공합니다.
서비스 정의 파일 생성:
service.yaml이라는 파일을 엽니다.nano service.yaml서비스 정의:
다음 내용을 추가합니다.
apiVersion: v1 kind: Service metadata: name: myservice namespace: mynamespace spec: selector: app: myapp ports: - protocol: TCP port: 80 targetPort: 80파일을 저장합니다.
서비스 적용:
서비스를 생성합니다.
kubectl create -f service.yaml서비스 확인:
서비스 목록을 확인합니다.
kubectl get services -n mynamespacemyservice가 목록에 있는지 확인합니다.
시크릿 (Secret) 생성
시크릿은 비밀번호 또는 API 키와 같은 민감한 정보를 안전하게 저장합니다.
시크릿 정의 파일 생성:
secret.yaml이라는 파일을 엽니다.nano secret.yaml시크릿 정의:
Base64 로 인코딩된 값을 사용하여 다음 내용을 추가합니다.
apiVersion: v1 kind: Secret metadata: name: mysecret namespace: mynamespace type: Opaque data: username: dXNlcm5hbWU= ## Base64 for "username" password: cGFzc3dvcmQ= ## Base64 for "password"파일을 저장합니다.
시크릿 적용:
시크릿을 생성합니다.
kubectl create -f secret.yaml시크릿 확인:
시크릿 목록을 확인합니다.
kubectl get secrets -n mynamespacemysecret가 출력에 나타나는지 확인합니다.
ConfigMap 생성
ConfigMap 은 구성 데이터를 키 - 값 쌍으로 저장합니다.
ConfigMap 정의 파일 생성:
configmap.yaml이라는 파일을 엽니다.nano configmap.yamlConfigMap 정의:
다음 내용을 추가합니다.
apiVersion: v1 kind: ConfigMap metadata: name: myconfigmap namespace: mynamespace data: database.host: "example.com" database.port: "5432"파일을 저장합니다.
ConfigMap 적용:
ConfigMap 을 생성합니다.
kubectl create -f configmap.yamlConfigMap 확인:
ConfigMap 목록을 확인합니다.
kubectl get configmaps -n mynamespacemyconfigmap이 출력에 나타나는지 확인합니다.
요약
이 랩에서는 다음을 배웠습니다.
- Minikube 클러스터를 시작하고 확인합니다.
- 네임스페이스 (namespace), 배포 (deployment), 서비스 (service), 시크릿 (secret), ConfigMap 과 같은 Kubernetes 리소스를 생성합니다.
- 이러한 리소스의 상태를 확인합니다.
이러한 단계를 숙달함으로써 Kubernetes 에서 애플리케이션을 효과적으로 관리하고 배포할 수 있습니다. 이해도를 높이기 위해 이 단계를 연습하십시오!


