반응형

목차

  1. 파드 관련
    1. kubectl create
    2. kubectl run
    3. kubectl delete
    4. kubectl cp
  2. 노드 관련
    1. kubectl cordon
    2. kubectl drain

Kubectl create

kubectl create 명령어는 Kubernetes에서 새로운 리소스를 생성할 때 사용하는 명령어입니다. 이 명령어를 사용하면 간단한 YAML 파일을 작성하지 않고도 명령어 자체에서 리소스를 생성할 수 있습니다.

  1. 기본 구조
    • kubectl create [리소스 종류] [리소스 이름]
  2. 자주 사용되는 리소스 종류
    • Pod: kubectl create pod

      예시: kubectl create pod my-pod --image=nginx 
      (Nginx 이미지를 사용하는 my-pod 이름을 가진 Pod 리소스를 생성합니다.)

    • Deployment: kubectl create deployment

      예시: kubectl create deployment my-deployment --image=nginx
       (Nginx 이미지를 사용하는 my-deployment 이름을 가진 Deployment 리소스를 생성합니다.)

    • Service: kubectl create service

      예시: kubectl create service clusterip my-service --tcp=80:8080 
      (80 포트를 8080 포트로 매핑하는 my-service 이름을 가진 ClusterIP Service 리소스를 생성합니다.)

    • ConfigMap: kubectl create configmap

      예시: kubectl create configmap my-config --from-literal=key1=value1 --from-literal=key2=value2
      (key1=value1, key2=value2 데이터를 가진 my-config 이름을 가진 ConfigMap 리소스를 생성합니다.)

    • Secret: kubectl create secret

      예시: kubectl create secret generic my-secret --from-literal=password=1234 
      (password=1234 데이터를 가진 my-secret 이름을 가진 Secret 리소스를 생성합니다.)

  3. 옵션

    • --dry-run: 리소스를 생성하지 않고 생성 결과만 미리 확인합니다.

      예시: kubectl create deployment my-deployment --image=nginx --dry-run

    • -o, --output: 생성한 리소스의 정보를 출력 형식을 지정합니다. json 또는 yaml 형식을 사용할 수 있습니다.

      예시: kubectl create deployment my-deployment --image=nginx -o json
       (JSON 형식으로 생성한 디플로이먼트 리소스 정보를 출력합니다.)

    • --save-config: 리소스를 생성할 때, 생성한 리소스의 구성을 클러스터 상태 저장소에 저장합니다.

      예시: kubectl create deployment my-deployment --image=nginx --save-config 
      (Nginx 이미지를 사용하는 my-deployment 이름을 가진 Deployment 리소스를 생성하면서, 리소스의 구성을 클러스터 상태 저장소에 저장합니다.)

    • --image: Pod 또는 Deployment 리소스를 생성할 때, 사용할 컨테이너 이미지를 지정합니다.

      예시: kubectl create pod my-pod --image=nginx
      (Nginx 이미지를 사용하는 my-pod 이름을 가진 Pod 리소스를 생성합니다.)

    • -f, --filename: YAML 또는 JSON 파일을 사용하여 리소스를 생성합니다.

      예시: kubectl create -f pod.yaml 
      (pod.yaml 파일에 정의된 Pod 리소스를 생성합니다.)

    • -n, --namespace: 리소스가 생성될 네임스페이스를 지정합니다.

      예시: kubectl create deployment my-deployment --image=nginx -n my-namespace
       (my-deployment 이름을 가진 Deployment 리소스를 my-namespace 네임스페이스에 생성합니다.)

    • --restart-policy: 컨테이너의 재시작 정책을 지정합니다. Always, OnFailure, Never 중 하나를 선택할 수 있습니다.

      예시: kubectl create pod my-pod --image=nginx --restart-policy=OnFailure
      (Nginx 이미지를 사용하는 my-pod 이름을 가진 Pod 리소스를 생성하면서, 컨테이너의 재시작 정책을 OnFailure로 지정합니다.)

Kubectl run

kubectl run 명령어는 Kubernetes 클러스터에서 파드나 작업을 생성하는 명령어입니다. 이 명령어를 사용하면 이미지를 생성하고 바로 실행을 합니다. 단 create는 여러 개를 한번에 생성 가능하지만 run은 불가능합니다.

  1. 기본 구조
    • kubectl run [파드 이름] --image=[이미지 이름]

      예시: kubectl run nginx --image=nginx 명령어를 실행하여 nginx 이미지를 실행하는 nginx 파드를 생성할 수 있습니다.
  2. 옵션
    • --image: 실행할 이미지 이름을 지정합니다.

      예시: kubectl run nginx --image=nginx 
      (nginx 이미지를 사용하여 파드를 생성합니다.)

    • --replicas: 생성할 파드나 작업의 개수를 지정합니다.

      예시: kubectl run nginx --image=nginx --replicas=3 
      (nginx 이미지를 사용하여 파드를 3개 생성합니다.)

    • --port: 파드나 작업에서 노출할 포트 번호를 지정합니다.

      예시: kubectl run nginx --image=nginx --port=80
       (nginx 이미지를 사용하여 파드를 생성하고, 80번 포트를 노출합니다.)

Kubectl delete

kubectl delete 명령어는 Kubernetes 클러스터에서 리소스를 삭제하는 데 사용됩니다. 이 명령어는 다양한 종류의 Kubernetes 리소스를 삭제하는 데 사용됩니다. 예를 들어, 파드, 서비스, 볼륨, 네임스페이스 등을 삭제할 수 있습니다.

  1. 기본 구조
    • kubectl delete <리소스 유형> <리소스 이름>

      예시: 파드를 삭제하려면 다음과 같이 입력합니다.
      kubectl delete pod <파드 이름>
  2. 옵션
    • --all: 모든 리소스를 삭제합니다.
    • --force: 강제 삭제합니다.
    • --grace-period=<초>: 삭제될 때 대기할 시간을 초 단위로 설정합니다.
    • --timeout=<초>: 명령이 실행될 때 대기할 최대 시간을 초 단위로 설정합니다.

      예시: kubectl delete pod --all --force
      (모든 파드를 강제로 삭제합니다.)

      예시2: kubectl delete all --all
      (모든 종류의 리소스와 파드를 삭제합니다.)

kubectl cp

kubectl cp 명령어는 Kubernetes 클러스터 내부의 파일을 호스트 머신으로 복사하거나 호스트 머신의 파일을 클러스터 내부로 복사하는 명령어입니다. 이 명령어를 사용하면, 파드 내부에 있는 파일을 로컬 머신으로 복사하거나 로컬 머신의 파일을 파드 내부로 복사할 수 있습니다.

  1. 기본적인 사용 방법은 다음과 같습니다.
    • kubectl cp [소스] [대상]

      예시: kubectl cp /path/to/local/file my-pod:/path/to/destination
      (로컬 머신의 /path/to/local/file 파일을 my-pod 파드의 /path/to/destination 경로로 복사할 수 있습니다.)
  2. 옵션
    • -c, --container: 컨테이너 이름을 지정합니다.

      예시: kubectl cp /path/to/local/file my-pod:/path/to/destination -c my-container
       (my-pod 파드의 my-container 컨테이너 내부의 /path/to/destination 경로에 로컬 머신의 /path/to/local/file 파일을 복사합니다.)

    • --no-preserve: 파일 속성을 유지하지 않습니다.

      예시: kubectl cp /path/to/local/file my-pod:/path/to/destination --no-preserve 
      (my-pod 파드의 /path/to/destination 경로에 로컬 머신의 /path/to/local/file 파일을 복사하되, 속성은 유지하지 않습니다.)

위에서 다룬 명령어들과의 차이점은 이제까지는 파드나 리소스를 건들였지만, 이번에는 노드 자체를 건드리는 것입니다.

kubectl cordon

kubectl cordon 명령어는 Kubernetes 노드를 Scheduling 하지 않도록 설정하는 명령어입니다. 노드를 cordon 처리하면 해당 노드에 있는 파드들은 다른 노드로 이동하지 않고 그대로 유지됩니다.

  1. 기본 구조
    • kubectl cordon [노드 이름]

      예시: kubectl cordon my-node
      (my-node 이름을 가진 노드를 Scheduling 하지 않도록 설정합니다.)
  2. 옵션
    • --ignore-daemonsets: 데몬셋을 무시하고 노드를 cordon 처리합니다.

      예시: kubectl cordon my-node --ignore-daemonsets
       (my-node 이름을 가진 노드를 Scheduling 하지 않도록 설정하면서, 데몬셋을 무시합니다.)

    • --dry-run: 노드를 cordon 처리하지 않고 처리 결과만 미리 확인합니다.

      예시: kubectl cordon my-node --dry-run 
      (my-node 이름을 가진 노드를 Scheduling 하지 않도록 설정하지 않고, 처리 결과만 미리 확인합니다.)

    • --selector: cordon 처리할 노드를 선택합니다. label selector를 지정하여 여러 노드를 선택할 수 있습니다.

      예시: kubectl cordon --selector="region=us-west"
       (region이 us-west인 노드를 모두 cordon 처리합니다.)

    • --timeout: cordon 처리할 때, 타임아웃을 설정합니다.

      예시: kubectl cordon my-node --timeout=60s
      (my-node 이름을 가진 노드를 Scheduling 하지 않도록 설정하면서, 타임아웃을 60초로 설정합니다.)

kubectl drain

kubectl drain 명령어는 Kubernetes 노드에서 파드를 안전하게 제거한 후, 노드를 비활성화할 때 사용하는 명령어입니다. drain 명령어를 사용하면 노드를 삭제하기 전에 파드를 안전하게 다른 노드로 이동할 수 있습니다.

  1. 기본 구조
    1. kubectl drain [노드 이름]

      예시: kubectl drain my-node
      (my-node 이름을 가진 노드에서 실행 중인 파드를 안전하게 다른 노드로 이동하고, 노드를 비활성화합니다.)
  2. 옵션
    • --ignore-daemonsets: 데몬셋을 무시하고 파드를 다른 노드로 이동합니다.

      예시: kubectl drain my-node --ignore-daemonsets 
      (my-node 이름을 가진 노드에서 실행 중인 파드를 안전하게 다른 노드로 이동하면서, 데몬셋을 무시합니다.)

    • --delete-local-data: 파드에서 사용하는 로컬 디스크 데이터를 삭제합니다.

      예시: kubectl drain my-node --delete-local-data 
      (my-node 이름을 가진 노드에서 실행 중인 파드를 안전하게 다른 노드로 이동하면서, 파드에서 사용하는 로컬 디스크 데이터를 삭제합니다.)

    • --force: 파드가 정상적으로 종료되지 않더라도 파드를 강제로 이동합니다.

      예시: kubectl drain my-node --force
       (my-node 이름을 가진 노드에서 실행 중인 파드를 안전하게 다른 노드로 이동하면서, 파드가 정상적으로 종료되지 않더라도 강제로 이동합니다.)

    • --grace-period: 파드가 삭제되기 전 대기하는 시간(초)을 설정합니다.
      예시: kubectl drain my-node --grace-period=30
       (my-node 이름을 가진 노드에서 실행 중인 파드를 안전하게 다른 노드로 이동하면서, 파드가 삭제되기 전 30초간 대기합니다.)

    • -n, --namespace: 파드가 위치한 네임스페이스를 지정합니다.
      예시: kubectl drain my-node -n my-namespace
       (my-node 이름을 가진 노드에서 실행 중인 파드를 안전하게 다른 노드로 이동하면서, my-namespace 네임스페이스에 위치한 파드를 이동합니다.)

이 외에도 여러 종류의 옵션이 있을 수 있습니다. 해당 내용은 명렁어 + --help를 입력하시면 더 다양한 옵션들을 찾을 수 있을 것입니다. 해당 시리즈(kubectl, kubeadm 명령어 모음)은 총 7개 포스팅으로 이뤄질 예정입니다.

 

반응형