서론
쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 데 사용되는 오픈 소스 플랫폼입니다. 이 강력한 도구를 효과적으로 사용하기 위해서는 kubectl
명령어에 대한 이해가 필수적입니다. kubectl
은 쿠버네티스를 제어하고 관리하는 CLI 도구로서, 다양한 작업을 수행할 수 있습니다. 이번 포스팅에서는 kubectl 명령어의 기본 사용법과 주요 명령어를 초보자도 쉽게 따라할 수 있도록 상세히 설명합니다.
본론
kubectl 소개
kubectl이란?
kubectl
은 쿠버네티스 클러스터를 제어하는 명령줄 도구입니다. 이를 통해 클러스터 내의 리소스를 생성, 조회, 업데이트, 삭제할 수 있습니다. kubectl
을 사용하면 쿠버네티스 클러스터와 상호작용하여 다양한 작업을 수행할 수 있습니다.
kubectl 설치
kubectl
을 설치하는 방법은 운영 체제에 따라 다르며, 다음은 주요 운영 체제에서의 설치 방법입니다.
- macOS
brew install kubectl
- Windows
choco install kubernetes-cli
- Linux
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl" chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
설치가 완료되면 다음 명령어를 사용하여 설치가 정상적으로 이루어졌는지 확인합니다.
kubectl version --client
kubectl 기본 명령어
쿠버네티스 클러스터를 관리하는 데 자주 사용되는 기본 명령어를 알아보겠습니다.
클러스터 정보 조회
- kubectl cluster-info
클러스터의 기본 정보를 조회합니다.kubectl cluster-info
- kubectl get nodes
클러스터 내의 모든 노드를 조회합니다.kubectl get nodes
파드 관리
- kubectl get pods
현재 네임스페이스의 모든 파드를 조회합니다.kubectl get pods
- kubectl describe pod [파드 이름]
특정 파드의 상세 정보를 조회합니다.kubectl describe pod [파드 이름]
- kubectl logs [파드 이름]
특정 파드의 로그를 조회합니다.kubectl logs [파드 이름]
- kubectl exec -it [파드 이름] -- /bin/bash
특정 파드에 접속하여 명령을 실행합니다.kubectl exec -it [파드 이름] -- /bin/bash
디플로이먼트 관리
- kubectl get deployments
현재 네임스페이스의 모든 디플로이먼트를 조회합니다.kubectl get deployments
- kubectl describe deployment [디플로이먼트 이름]
특정 디플로이먼트의 상세 정보를 조회합니다.kubectl describe deployment [디플로이먼트 이름]
- kubectl create -f [디플로이먼트 파일]
YAML 파일을 사용하여 디플로이먼트를 생성합니다.kubectl create -f [디플로이먼트 파일]
- kubectl apply -f [디플로이먼트 파일]
YAML 파일을 사용하여 디플로이먼트를 업데이트합니다.kubectl apply -f [디플로이먼트 파일]
- kubectl delete deployment [디플로이먼트 이름]
특정 디플로이먼트를 삭제합니다.kubectl delete deployment [디플로이먼트 이름]
서비스 관리
- kubectl get services
현재 네임스페이스의 모든 서비스를 조회합니다.kubectl get services
- kubectl describe service [서비스 이름]
특정 서비스의 상세 정보를 조회합니다.kubectl describe service [서비스 이름]
- kubectl expose deployment [디플로이먼트 이름] --type=LoadBalancer --port=80 --target-port=8080
디플로이먼트를 외부에 노출하는 서비스를 생성합니다.kubectl expose deployment [디플로이먼트 이름] --type=LoadBalancer --port=80 --target-port=8080
- kubectl delete service [서비스 이름]
특정 서비스를 삭제합니다.kubectl delete service [서비스 이름]
고급 kubectl 사용법
네임스페이스 관리
- kubectl get namespaces
클러스터 내의 모든 네임스페이스를 조회합니다.kubectl get namespaces
- kubectl create namespace [네임스페이스 이름]
새로운 네임스페이스를 생성합니다.kubectl create namespace [네임스페이스 이름]
- kubectl delete namespace [네임스페이스 이름]
특정 네임스페이스를 삭제합니다.kubectl delete namespace [네임스페이스 이름]
ConfigMap과 Secret 관리
- kubectl create configmap [configmap 이름] --from-literal=key1=value1 --from-literal=key2=value2
ConfigMap을 생성하여 설정 데이터를 저장합니다.kubectl create configmap [ConfigMap 이름] --from-literal=key1=value1 --from-literal=key2=value2
- kubectl create secret generic [secret 이름] --from-literal=key1=value1 --from-literal=key2=value2
Secret을 생성하여 비밀 데이터를 저장합니다.kubectl create secret generic [Secret 이름] --from-literal=key1=value1 --from-literal=key2=value2
- kubectl get configmaps
현재 네임스페이스의 모든 ConfigMap을 조회합니다.kubectl get configmaps
- kubectl get secrets
현재 네임스페이스의 모든 Secret을 조회합니다.kubectl get secrets
리소스 제한 설정
- kubectl set resources deployment [디플로이먼트 이름] --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
디플로이먼트의 리소스 요청 및 제한을 설정합니다.kubectl set resources deployment [디플로이먼트 이름] --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
YAML 파일 관리
YAML 파일 생성 및 적용
- 파드 YAML 파일 예시
apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: nginx ports: - containerPort: 80
- YAML 파일 적용
YAML 파일을 사용하여 파드를 생성합니다.kubectl apply -f my-pod.yaml
- YAML 파일 검증
YAML 파일을 실제로 적용하지 않고 검증합니다.kubectl apply -f my-pod.yaml --dry-run=client
쿠버네티스 대시보드 사용
쿠버네티스 대시보드는 클러스터를 시각적으로 관리할 수 있는 웹 인터페이스입니다. 대시보드를 사용하면 클러스터의 상태를 쉽게 모니터링하고, 리소스를 관리할 수 있습니다.
- 대시보드 설치
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
- 대시보드 접근
웹 브라우저에서kubectl proxy
http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
로 접근합니다.
결론
이번 포스팅에서는 kubectl
명령어의 기본 사용법과 주요 명령어를 소개했습니다. kubectl
을 사용하여 쿠버네티스 클러스터를 효과적으로 관리할 수 있으며, 다양한 작업을 손쉽게 수행할 수 있습니다. 각 명령어의 사용법을 익히고, 실제로 적용해보며 경험을 쌓아가는 것이 중요합니다. 이를 통해 쿠버네티스를 더욱 효과적으로 활용할 수 있을 것입니다.