쿠버네티스 명령어 기초

서론


쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 데 사용되는 오픈 소스 플랫폼입니다. 이 강력한 도구를 효과적으로 사용하기 위해서는 kubectl 명령어에 대한 이해가 필수적입니다. kubectl은 쿠버네티스를 제어하고 관리하는 CLI 도구로서, 다양한 작업을 수행할 수 있습니다. 이번 포스팅에서는 kubectl 명령어의 기본 사용법과 주요 명령어를 초보자도 쉽게 따라할 수 있도록 상세히 설명합니다.


본론


kubectl 소개


kubectl이란?


kubectl은 쿠버네티스 클러스터를 제어하는 명령줄 도구입니다. 이를 통해 클러스터 내의 리소스를 생성, 조회, 업데이트, 삭제할 수 있습니다. kubectl을 사용하면 쿠버네티스 클러스터와 상호작용하여 다양한 작업을 수행할 수 있습니다.


kubectl 설치


kubectl을 설치하는 방법은 운영 체제에 따라 다르며, 다음은 주요 운영 체제에서의 설치 방법입니다.


  1. macOS
    brew install kubectl
    

  2. Windows
    choco install kubernetes-cli
    

  3. 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 기본 명령어


쿠버네티스 클러스터를 관리하는 데 자주 사용되는 기본 명령어를 알아보겠습니다.


클러스터 정보 조회


  1. kubectl cluster-info
    kubectl cluster-info
    
    클러스터의 기본 정보를 조회합니다.
  2. kubectl get nodes
    kubectl get nodes
    
    클러스터 내의 모든 노드를 조회합니다.

파드 관리


  1. kubectl get pods
    kubectl get pods
    
    현재 네임스페이스의 모든 파드를 조회합니다.
  2. kubectl describe pod [파드 이름]
    kubectl describe pod [파드 이름]
    
    특정 파드의 상세 정보를 조회합니다.
  3. kubectl logs [파드 이름]
    kubectl logs [파드 이름]
    
    특정 파드의 로그를 조회합니다.
  4. kubectl exec -it [파드 이름] -- /bin/bash
    kubectl exec -it [파드 이름] -- /bin/bash
    
    특정 파드에 접속하여 명령을 실행합니다.

디플로이먼트 관리


  1. kubectl get deployments
    kubectl get deployments
    
    현재 네임스페이스의 모든 디플로이먼트를 조회합니다.
  2. kubectl describe deployment [디플로이먼트 이름]
    kubectl describe deployment [디플로이먼트 이름]
    
    특정 디플로이먼트의 상세 정보를 조회합니다.
  3. kubectl create -f [디플로이먼트 파일]
    kubectl create -f [디플로이먼트 파일]
    
    YAML 파일을 사용하여 디플로이먼트를 생성합니다.
  4. kubectl apply -f [디플로이먼트 파일]
    kubectl apply -f [디플로이먼트 파일]
    
    YAML 파일을 사용하여 디플로이먼트를 업데이트합니다.
  5. kubectl delete deployment [디플로이먼트 이름]
    kubectl delete deployment [디플로이먼트 이름]
    
    특정 디플로이먼트를 삭제합니다.

서비스 관리


  1. kubectl get services
    kubectl get services
    
    현재 네임스페이스의 모든 서비스를 조회합니다.
  2. kubectl describe service [서비스 이름]
    kubectl describe service [서비스 이름]
    
    특정 서비스의 상세 정보를 조회합니다.
  3. kubectl expose deployment [디플로이먼트 이름] --type=LoadBalancer --port=80 --target-port=8080
    kubectl expose deployment [디플로이먼트 이름] --type=LoadBalancer --port=80 --target-port=8080
    
    디플로이먼트를 외부에 노출하는 서비스를 생성합니다.
  4. kubectl delete service [서비스 이름]
    kubectl delete service [서비스 이름]
    
    특정 서비스를 삭제합니다.

고급 kubectl 사용법


네임스페이스 관리


  1. kubectl get namespaces
    kubectl get namespaces
    
    클러스터 내의 모든 네임스페이스를 조회합니다.
  2. kubectl create namespace [네임스페이스 이름]
    kubectl create namespace [네임스페이스 이름]
    
    새로운 네임스페이스를 생성합니다.
  3. kubectl delete namespace [네임스페이스 이름]
    kubectl delete namespace [네임스페이스 이름]
    
    특정 네임스페이스를 삭제합니다.

ConfigMap과 Secret 관리


  1. kubectl create configmap [configmap 이름] --from-literal=key1=value1 --from-literal=key2=value2
    kubectl create configmap [ConfigMap 이름] --from-literal=key1=value1 --from-literal=key2=value2
    
    ConfigMap을 생성하여 설정 데이터를 저장합니다.
  2. kubectl create secret generic [secret 이름] --from-literal=key1=value1 --from-literal=key2=value2
    kubectl create secret generic [Secret 이름] --from-literal=key1=value1 --from-literal=key2=value2
    
    Secret을 생성하여 비밀 데이터를 저장합니다.
  3. kubectl get configmaps
    kubectl get configmaps
    
    현재 네임스페이스의 모든 ConfigMap을 조회합니다.
  4. kubectl get secrets
    kubectl get secrets
    
    현재 네임스페이스의 모든 Secret을 조회합니다.

리소스 제한 설정


  1. 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 파일 생성 및 적용


  1. 파드 YAML 파일 예시
    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
    spec:
      containers:
      - name: my-container
        image: nginx
        ports:
        - containerPort: 80
    

  2. YAML 파일 적용
    kubectl apply -f my-pod.yaml
    
    YAML 파일을 사용하여 파드를 생성합니다.
  3. YAML 파일 검증
    kubectl apply -f my-pod.yaml --dry-run=client
    
    YAML 파일을 실제로 적용하지 않고 검증합니다.

쿠버네티스 대시보드 사용


쿠버네티스 대시보드는 클러스터를 시각적으로 관리할 수 있는 웹 인터페이스입니다. 대시보드를 사용하면 클러스터의 상태를 쉽게 모니터링하고, 리소스를 관리할 수 있습니다.


  1. 대시보드 설치
    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
    

  2. 대시보드 접근
    kubectl proxy
    
    웹 브라우저에서 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/로 접근합니다.

결론


이번 포스팅에서는 kubectl 명령어의 기본 사용법과 주요 명령어를 소개했습니다. kubectl을 사용하여 쿠버네티스 클러스터를 효과적으로 관리할 수 있으며, 다양한 작업을 손쉽게 수행할 수 있습니다. 각 명령어의 사용법을 익히고, 실제로 적용해보며 경험을 쌓아가는 것이 중요합니다. 이를 통해 쿠버네티스를 더욱 효과적으로 활용할 수 있을 것입니다.

다음 이전