목차
- 수정 관련 명령어
- kubectl scale
- kubectl patch
- kubectl edit
- kubectl label
- kubectl annotate
- 컨테이너에서 명령어 실행
- kubectl exec
- 대기 명령어
- kubectl wait
수정 관련 명령어
kubectl scale
kubectl scale 명령어는 Kubernetes에서 디플로이먼트, 레플리카셋 등의 리소스의 replica 수를 조정할 때 사용하는 명령어입니다. replica 수를 늘리거나 줄이면서 시스템의 부하를 조절할 수 있습니다.
- 기본 구조
kubectl scale deployment [디플로이먼트 이름] --replicas=[수정할 replica 수]
예시: kubectl scale deployment my-deployment --replicas=3
(my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정합니다.) - 옵션
- --current-replicas: 현재 replica 수를 지정합니다. 이 값을 지정하면 --replicas 옵션으로 지정한 값과 함께 replica 수를 변경합니다.
예시: kubectl scale deployment my-deployment --current-replicas=1 --replicas=3
(현재 1개의 replica가 있는 my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정합니다.) - --resource-version: 리소스 버전을 지정합니다.
예시: kubectl scale deployment my-deployment --replicas=3 --resource-version=4
(my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정하면서, 리소스 버전을 4로 지정합니다.) - -n, --namespace: 리소스가 위치한 네임스페이스를 지정합니다.
예시: kubectl scale deployment my-deployment --replicas=3 -n my-namespace
(my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정하면서, my-namespace 네임스페이스에 위치한 리소스를 조정합니다.) - --timeout: replica 수를 조정할 때, 타임아웃을 설정합니다.
예시: kubectl scale deployment my-deployment --replicas=3 --timeout=60s
(my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정하면서, 타임아웃을 60초로 설정합니다.) - --wait: replica 수를 조정한 후 변경이 완료될 때까지 대기합니다.
예시: kubectl scale deployment my-deployment --replicas=3 --wait
(my-deployment 이름을 가진 디플로이먼트의 replica 수를 3개로 조정하면서, 변경이 완료될 때까지 대기합니다.)
- --current-replicas: 현재 replica 수를 지정합니다. 이 값을 지정하면 --replicas 옵션으로 지정한 값과 함께 replica 수를 변경합니다.
kubectl patch
kubectl patch 명령어는 Kubernetes 리소스의 일부를 수정하는 명령어입니다. 이 명령어를 사용하면, 리소스의 일부 값을 변경하거나 추가할 수 있습니다.
- 기본 구조
kubectl patch [리소스 종류] [리소스 이름] [수정할 필드]=[새 값]
예시: kubectl patch deployment my-deployment -p '{"spec":{"replicas":3}}'
( my-deployment 이름의 배포의 레플리카 수를 3으로 변경할 수 있습니다.) - 옵션
- -p, --patch: JSON 포맷으로 수정 내용을 지정합니다.
예시: kubectl patch deployment my-deployment -p '{"spec":{"replicas":3}}'
(my-deployment 이름의 배포의 레플리카 수를 3으로 변경합니다.) - --type: 수정 내용의 포맷을 지정합니다. json, merge, strategic 중 하나를 지정할 수 있습니다. 기본값은 strategic입니다.
예시: kubectl patch deployment my-deployment --type=json -p '[{"op":"replace","path":"/spec/replicas","value":3}]'
(my-deployment 이름의 배포의 레플리카 수를 3으로 변경합니다. --type=json 옵션을 사용하여 JSON 포맷으로 수정 내용을 지정합니다.)
- -p, --patch: JSON 포맷으로 수정 내용을 지정합니다.
kubectl edit
kubectl edit 명령어는 Kubernetes 리소스의 구성을 수정하는 명령어입니다. 이 명령어를 사용하면, 기존 리소스의 YAML 구성 파일을 열어 직접 수정할 수 있습니다.
- 기본 구조
kubectl edit [리소스 종류] [리소스 이름]
예시: kubectl edit deployment my-deployment
(my-deployment 이름의 디플로이먼트 리소스의 YAML 구성 파일을 열고 직접 수정할 수 있습니다.)
* 수정한 후에는 파일을 저장하고 종료하면, Kubernetes API 서버에 변경 내용이 자동으로 적용됩니다. - 옵션
- --namespace: 리소스가 포함된 네임스페이스를 지정합니다.
예시: kubectl edit deployment my-deployment --namespace my-namespace
(my-namespace 네임스페이스에 속한 my-deployment 이름의 디플로이먼트 리소스의 YAML 구성 파일을 열고 직접 수정할 수 있습니다.) - --filename: 파일에서 YAML 구성을 읽어옵니다.
예시: kubectl edit --filename=my-deployment.yaml
(my-deployment.yaml 파일에서 디플로이먼트 리소스의 YAML 구성을 읽어와 수정할 수 있습니다.) - --output: 출력 형식을 지정합니다.
예시: kubectl edit deployment my-deployment --output=yaml
(my-deployment 이름의 디플로이먼트 리소스의 YAML 구성을 편집한 후, YAML 형식으로 출력합니다.)
- --namespace: 리소스가 포함된 네임스페이스를 지정합니다.
kubectl label
kubectl label 명령어는 Kubernetes 리소스에 레이블을 추가, 수정 또는 제거하는 명령어입니다. 이 명령어를 사용하면, 리소스를 논리적으로 그룹화하거나 검색할 때 유용한 정보를 리소스에 추가할 수 있습니다.
- 기본 구조
kubectl label [리소스 종류] [리소스 이름] [레이블 이름]=[레이블 값]
예시: kubectl label pods my-pod app=my-app
(my-pod 이름의 파드에 app=my-app 레이블을 추가할 수 있습니다.) - 옵션
- --overwrite: 이미 존재하는 레이블 값을 덮어쓰기 합니다.
예시: kubectl label pods my-pod app=my-new-app --overwrite
(my-pod 이름의 파드에 이미 존재하는 app 레이블 값을 my-new-app으로 덮어씁니다.) - --namespace: 리소스가 포함된 네임스페이스를 지정합니다.
예시: kubectl label pods my-pod app=my-app --namespace my-namespace
(my-namespace 네임스페이스에 속한 my-pod 이름의 파드에 app=my-app 레이블을 추가합니다.) - --selector: 레이블을 추가할 리소스를 선택합니다.
예시: kubectl label pods --selector app=my-app release=beta
(app=my-app 레이블을 가진 모든 파드에 release=beta 레이블을 추가합니다.)
- --overwrite: 이미 존재하는 레이블 값을 덮어쓰기 합니다.
kubectl annotate
kubectl annotate 명령어는 Kubernetes 리소스에 주석을 추가, 수정 또는 제거하는 명령어입니다. 이 명령어를 사용하면, 리소스에 부가적인 정보를 추가하거나 메타데이터를 관리할 수 있습니다.
- 기본 구조
kubectl annotate [리소스 종류] [리소스 이름] [주석 이름]=[주석 값]
예시: kubectl annotate pods my-pod description="This is my pod"
(my-pod 이름의 파드에 description="This is my pod" 주석을 추가할 수 있습니다.) - 옵션
- --overwrite: 이미 존재하는 주석 값을 덮어쓰기 합니다.
예시: kubectl annotate pods my-pod description="This is my new pod" --overwrite
(my-pod 이름의 파드에 이미 존재하는 description 주석 값을 This is my new pod으로 덮어씁니다.) - --namespace: 리소스가 포함된 네임스페이스를 지정합니다.
예시: kubectl annotate pods my-pod description="This is my pod" --namespace my-namespace
(my-namespace 네임스페이스에 속한 my-pod 이름의 파드에 description="This is my pod" 주석을 추가합니다.)
- --overwrite: 이미 존재하는 주석 값을 덮어쓰기 합니다.
kubectl exec
kubectl exec 명령어는 Kubernetes 파드 내부에서 실행 중인 컨테이너에 명령어를 실행하는 명령어입니다. 이 명령어를 사용하면, 파드 내부에서 작업을 수행하거나 디버깅을 위해 컨테이너 내부로 들어갈 수 있습니다.
- 기본 구조
kubectl exec [옵션] [파드 이름] -- [컨테이너 이름] [명령어]
예시: kubectl exec my-pod -- ls /app
(my-pod 이름의 파드 내부에서 /app 디렉토리를 조회할 수 있습니다.) - 옵션
- --namespace: 파드가 포함된 네임스페이스를 지정합니다.
예시: kubectl exec my-pod --namespace my-namespace -- ls /app
(my-namespace 네임스페이스에 속한 my-pod 이름의 파드 내부에서 /app 디렉토리를 조회할 수 있습니다.) - --stdin, -i: 컨테이너의 표준 입력을 연결합니다.
예시: kubectl exec my-pod -i -- ls /app
(my-pod 이름의 파드 내부에서 /app 디렉토리를 조회하면서 컨테이너의 표준 입력을 연결합니다.) - --tty, -t: TTY 모드를 사용합니다.
예시: kubectl exec my-pod -t -- bash
(my-pod 이름의 파드 내부에서 Bash 셸을 실행하면서 TTY 모드를 사용합니다.)
- --namespace: 파드가 포함된 네임스페이스를 지정합니다.
kubectl wait
kubectl wait 명령어는 특정 리소스가 특정 조건을 만족할 때까지 대기하는 명령어입니다. 이 명령어를 사용하면, 리소스의 상태를 주기적으로 체크하여 지정된 조건이 충족될 때까지 기다릴 수 있습니다.
- 기본적인 사용 방법은 다음과 같습니다.
kubectl wait [리소스 종류] [리소스 이름] --for=[조건] [조건 값]
예시: kubectl wait pod my-pod --for=condition=Ready
(my-pod 파드가 Ready 상태가 될 때까지 대기할 수 있습니다.) - 옵션
- --for: 대기할 조건을 지정합니다.
예시: kubectl wait pod my-pod --for=condition=Ready
(Ready 조건이 충족될 때까지 대기합니다.) - --timeout: 대기 시간을 지정합니다. 이 시간을 초과하면 명령어가 종료됩니다.
예시: kubectl wait pod my-pod --for=condition=Ready --timeout=60s
(Ready 조건이 충족될 때까지 60초 동안 대기합니다.) - --namespace: 네임스페이스를 지정합니다.
예시: kubectl wait pod my-pod --for=condition=Ready --namespace=my-namespace
(my-namespace 네임스페이스에 있는 my-pod 파드가 Ready 상태가 될 때까지 대기합니다.)
- --for: 대기할 조건을 지정합니다.
항상 그렇듯 여기 있는 명령어 옵션이 전부가 아니며 --help를 통해 더 다양한 명령어를 찾아보실 수 있습니다.
'Container > Kubernetes' 카테고리의 다른 글
[Kubernetes] Kubectl 명령어 모음 [4] 확인 Part.2 (0) | 2023.04.02 |
---|---|
[Kubernetes] Kubectl 명령어 모음 [3] 확인 Part.1 (0) | 2023.04.02 |
[Kubernetes] Kubectl 명령어 모음 [1] 생성, 삭제, 복사 (0) | 2023.04.02 |
[Kubernetes] Kubernetes가 애플리케이션을 배포, 운영하는 방식 (0) | 2023.04.02 |
[Kubernetes] 쿠버네티스 VM에 설치하기 (0) | 2023.03.30 |