일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 정보처리기사 실기
- minikube
- CKA
- 오블완
- MySQL
- kotlin
- aws
- 공부
- AI
- Linux
- Spring
- kotlin querydsl
- 티스토리챌린지
- CKA 기출문제
- kotlin coroutine
- CloudWatch
- 코틀린 코루틴의 정석
- Elasticsearch
- 정보처리기사실기 기출문제
- APM
- Java
- AWS EKS
- Kubernetes
- 기록으로 실력을 쌓자
- Pinpoint
- 정보처리기사 실기 기출문제
- PETERICA
- mysql 튜닝
- IntelliJ
- kotlin spring
- Today
- Total
피터의 개발이야기
[kubernetes] kubectl 사용법 본문
[kubernetes] 개발환경 목차
ㅁ 개요
쿠버네티스를 사용하면서 가장 많이 접하는 것은 kubectl이라는 커맨드라인이다. 쿠버네티스 자원들의 CRUD, 생성된 자원들의 모니터링 및 트러블 슈팅, 트래픽 운영상황에서의 클러스터 관리까지 다양한 명령어가 존재한다. Devops 시스템을 운영하면서 꼭 필요했던 명령어, 혹은 미쳐 몰랐지만 꼭 필요한 명령어를 빠르게 찾아가는 방법을 이 글에서 정리하고자 한다.
ㅁ kubectl help!
ㅇ 명령어 사용법에 대해 가장 빠르게 확인 할 수 있는 방법은 --help를 통한 방법이다.
$ kubectl --help ✔ 5518 20:57:16
kubectl controls the Kubernetes cluster manager.
Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
Basic Commands (Beginner):
create Create a resource from a file or from stdin
expose Take a replication controller, service, deployment or pod and expose it as a new Kubernetes service
run Run a particular image on the cluster
set Set specific features on objects
Basic Commands (Intermediate):
explain Get documentation for a resource
get Display one or many resources
edit Edit a resource on the server
delete Delete resources by file names, stdin, resources and names, or by resources and label selector
Deploy Commands:
rollout Manage the rollout of a resource
scale Set a new size for a deployment, replica set, or replication controller
autoscale Auto-scale a deployment, replica set, stateful set, or replication controller
Cluster Management Commands:
certificate Modify certificate resources.
cluster-info Display cluster information
top Display resource (CPU/memory) usage
cordon Mark node as unschedulable
uncordon Mark node as schedulable
drain Drain node in preparation for maintenance
taint Update the taints on one or more nodes
Troubleshooting and Debugging Commands:
describe Show details of a specific resource or group of resources
logs Print the logs for a container in a pod
attach Attach to a running container
exec Execute a command in a container
port-forward Forward one or more local ports to a pod
proxy Run a proxy to the Kubernetes API server
cp Copy files and directories to and from containers
auth Inspect authorization
debug Create debugging sessions for troubleshooting workloads and nodes
Advanced Commands:
diff Diff the live version against a would-be applied version
apply Apply a configuration to a resource by file name or stdin
patch Update fields of a resource
replace Replace a resource by file name or stdin
wait Experimental: Wait for a specific condition on one or many resources
kustomize Build a kustomization target from a directory or URL.
Settings Commands:
label Update the labels on a resource
annotate 자원에 대한 주석을 업데이트합니다
completion Output shell completion code for the specified shell (bash, zsh or fish)
Other Commands:
alpha Commands for features in alpha
api-resources Print the supported API resources on the server
api-versions Print the supported API versions on the server, in the form of "group/version"
config kubeconfig 파일을 수정합니다
plugin Provides utilities for interacting with plugins
version Print the client and server version information
Usage:
kubectl [flags] [options]
Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).
alpha -- 알파의 기능에 대한 명령
annotate -- 자원에 대한 주석을 업데이트합니다
api-resources -- 서버에서 지원되는 API 리소스를 인쇄합니다.
api-versions -- "그룹/버전" 형식으로 서버에서 지원되는 API 버전을 인쇄합니다.
apply -- 파일 이름 또는 표준 입력으로 리소스에 구성을 적용합니다.
attach -- 실행 중인 컨테이너에 연결
auth -- 승인 검사
autoscale -- 배포, 복제 세트, 상태 저장 세트 또는 복제 컨트롤러의 자동 크기 조정
certificate -- 인증서 리소스를 수정합니다.
cluster-info -- 클러스터 정보 표시
completion -- 지정된 셸(bash, zsh 또는 fish)에 대한 출력 셸 완성 코드
config -- kubeconfig 파일을 수정합니다
cordon -- 노드를 예약 불가능으로 표시
cp -- 컨테이너에서 파일 및 디렉토리 복사
create -- 파일 또는 stdin에서 리소스를 생성합니다.
debug -- 워크로드 및 노드 문제 해결을 위한 디버깅 세션 생성
delete -- 파일 이름, 표준 입력, 리소스 및 이름 또는 리소스 및 레이블 선택기로 리소스를 삭제합니다.
describe -- 특정 리소스 또는 리소스 그룹에 대한 세부 정보 표시
diff -- 실제 버전을 적용할 버전과 비교합니다.
drain -- 유지 관리를 위한 드레인 노드
edit -- 서버의 리소스를 편집합니다.
exec -- 컨테이너에서 명령 실행
explain -- 리소스에 대한 문서 가져오기
expose -- 복제 컨트롤러, 서비스, 배포 또는 포드를 가져와 새로운 Kubernetes 서비스로 노출
get -- 하나 이상의 리소스를 표시합니다.
help -- 모든 명령에 대한 도움말
kustomize -- 디렉토리 또는 URL에서 kustomization 대상을 빌드합니다.
label -- 리소스의 레이블을 업데이트합니다.
logs -- 포드의 컨테이너에 대한 로그를 인쇄합니다.
options -- 모든 명령에 의해 상속된 플래그 목록을 인쇄합니다.
patch -- 리소스의 필드 업데이트
plugin -- 플러그인과 상호 작용하기 위한 유틸리티 제공
port-forward -- 하나 이상의 로컬 포트를 포드로 전달
proxy -- Kubernetes API 서버에 대한 프록시 실행
replace -- 리소스를 파일 이름 또는 표준 입력으로 바꿉니다.
rollout -- 리소스 롤아웃 관리
run -- 클러스터에서 특정 이미지 실행
scale -- 배포, 복제 세트 또는 복제 컨트롤러에 대한 새 크기 설정
set -- 개체에 특정 기능을 설정합니다.
taint -- 하나 이상의 노드에서 taint를 업데이트합니다.
top -- 리소스(CPU/메모리) 사용량 표시
uncordon -- 노드를 예약 가능한 것으로 표시
version -- 클라이언트 및 서버 버전 정보를 인쇄합니다.
wait -- 실험적: 하나 이상의 리소스에서 특정 조건을 기다립니다.
ㅁ kubectl 자동완성 기능 설치
ㅇ kbuectl 명령어를 다 외울 수는 없다. 특정 키만 입력하고 tap키를 누르면 문장을 완성하고, 더욱이 다음에 올 대상의 목록을 예시로 보여준다.
예를 들어 보자.
ㅇ ku까지 치고 탭키를 누르면
ㅇ kubectl이 완성된다.
ㅇ 다시 한번 탭을 누르면 사용가능한 명령어 목록과 설명을 확인 할 수 있다.
ㅇ 예를 들어 상세정보를 확인 하기 위해 describe를 선택한다고 가정하자.
ㅇ de만 키고 탭을 누르니 de로 시작하는 명령어를 확인할 수 있었다.
ㅇ 마찬가지로 오브젝트의 종류를 선택하는 단계에서 pod를 치면 관련 명령어를 확인 할 수 있다.
ㅇ pods를 완성하고 탭을 누르면 pods들의 목록을 확인 할 수 있다.
ㅇ 맥에서는 탭키를 반복적으로 누르면
ㅇ 목록의 대상을 옮겨서 선택할 수도 있다.
ㅇ 그래서 무조건 자동완성기능을 기본으로 세팅하는 것이 좋다.
ㅇ 설치 방법은 여기에 정리하였다.
ㅁ kubectl <command> -h 활용하기
ㅇ kubectl 각 명령어 이후에 -h을 넣으면 구체적인 사용방법을 얻을 수 있다.
ㅇ 예를 들어 kubectl run -h를 들어보면.
Create and run a particular image in a pod.
Examples:
# Start a nginx pod
kubectl run nginx --image=nginx
# Start a hazelcast pod and let the container expose port 5701
kubectl run hazelcast --image=hazelcast/hazelcast --port=5701
# Start a hazelcast pod and set environment variables "DNS_DOMAIN=cluster" and "POD_NAMESPACE=default" in the
container
kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
# Start a hazelcast pod and set labels "app=hazelcast" and "env=prod" in the container
kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
# Dry run; print the corresponding API objects without creating them
kubectl run nginx --image=nginx --dry-run=client
# Start a nginx pod, but overload the spec with a partial set of values parsed from JSON
kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": { ... } }'
# Start a busybox pod and keep it in the foreground, don't restart it if it exits
kubectl run -i -t busybox --image=busybox --restart=Never
# Start the nginx pod using the default command, but use custom arguments (arg1 .. argN) for that command
kubectl run nginx --image=nginx -- <arg1> <arg2> ... <argN>
# Start the nginx pod using a different command and custom arguments
kubectl run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>
Options:
--allow-missing-template-keys=true:
If true, ignore any errors in templates when a field or map key is missing in the template. Only applies to
golang and jsonpath output formats.
--annotations=[]:
Annotations to apply to the pod.
--attach=false:
If true, wait for the Pod to start running, and then attach to the Pod as if 'kubectl attach ...' were called.
Default false, unless '-i/--stdin' is set, in which case the default is true. With '--restart=Never' the exit
code of the container process is returned.
--cascade='background':
Must be "background", "orphan", or "foreground". Selects the deletion cascading strategy for the dependents
(e.g. Pods created by a ReplicationController). Defaults to background.
--command=false:
If true and extra arguments are present, use them as the 'command' field in the container, rather than the
'args' field which is the default.
--dry-run='none':
Must be "none", "server", or "client". If client strategy, only print the object that would be sent, without
sending it. If server strategy, submit server-side request without persisting the resource.
--env=[]:
Environment variables to set in the container.
--expose=false:
If true, create a ClusterIP service associated with the pod. Requires `--port`.
--field-manager='kubectl-run':
Name of the manager used to track field ownership.
-f, --filename=[]:
to use to replace the resource.
--force=false:
If true, immediately remove resources from API and bypass graceful deletion. Note that immediate deletion of
some resources may result in inconsistency or data loss and requires confirmation.
--grace-period=-1:
Period of time in seconds given to the resource to terminate gracefully. Ignored if negative. Set to 1 for
immediate shutdown. Can only be set to 0 when --force is true (force deletion).
--image='':
The image for the container to run.
--image-pull-policy='':
The image pull policy for the container. If left empty, this value will not be specified by the client and
defaulted by the server.
-k, --kustomize='':
Process a kustomization directory. This flag can't be used together with -f or -R.
-l, --labels='':
Comma separated labels to apply to the pod. Will override previous values.
--leave-stdin-open=false:
If the pod is started in interactive mode or with stdin, leave stdin open after the first attach completes. By
default, stdin will be closed after the first attach completes.
-o, --output='':
Output format. One of: (json, yaml, name, go-template, go-template-file, template, templatefile, jsonpath,
jsonpath-as-json, jsonpath-file).
--override-type='merge':
The method used to override the generated object: json, merge, or strategic.
--overrides='':
An inline JSON override for the generated object. If this is non-empty, it is used to override the generated
object. Requires that the object supply a valid apiVersion field.
--pod-running-timeout=1m0s:
The length of time (like 5s, 2m, or 3h, higher than zero) to wait until at least one pod is running
--port='':
The port that this container exposes.
--privileged=false:
If true, run the container in privileged mode.
-q, --quiet=false:
If true, suppress prompt messages.
-R, --recursive=false:
Process the directory used in -f, --filename recursively. Useful when you want to manage related manifests
organized within the same directory.
--restart='Always':
The restart policy for this Pod. Legal values [Always, OnFailure, Never].
--rm=false:
If true, delete the pod after it exits. Only valid when attaching to the container, e.g. with '--attach' or
with '-i/--stdin'.
--save-config=false:
If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will
be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.
--show-managed-fields=false:
If true, keep the managedFields when printing objects in JSON or YAML format.
-i, --stdin=false:
Keep stdin open on the container in the pod, even if nothing is attached.
--template='':
Template string or path to template file to use when -o=go-template, -o=go-template-file. The template format
is golang templates [http://golang.org/pkg/text/template/#pkg-overview].
--timeout=0s:
The length of time to wait before giving up on a delete, zero means determine a timeout from the size of the
object
-t, --tty=false:
Allocate a TTY for the container in the pod.
--wait=false:
If true, wait for resources to be gone before returning. This waits for finalizers.
Usage:
kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json]
[--command] -- [COMMAND] [args...] [options]
Use "kubectl options" for a list of global command-line options (applies to all commands).
ㅇ run에 대한 설명과 example, Option, Usage가 나온다.
ㅇ 각 명령어에서도 -h을 통해 다양한 예제와 옵션에 대한 설명을 볼 수 있어서, 작업 중 잘 모를 때에 바로 도움을 받을 수 있다.
ㅁ 함께 보면 좋은 사이트
ㅇ 쿠버네티스 문서 > 명령 줄 도구
ㅇ 쿠버네티스 문서 > 명령 줄 도구의 사용법, example
ㅇ https://judo0179.tistory.com/66?category=349244
'Kubernetes > kube 개발환경' 카테고리의 다른 글
[kubernets] skaffold란, Kubernetes 로컬 개발환경 (0) | 2022.09.21 |
---|---|
[kubernetes] Datree 사용법, 자동완성기능 (2) | 2022.09.21 |
[kubernetes] Datree란, Yaml validation, kubernetes schama validation (0) | 2022.08.02 |
[kubernetes] eksctl 설치 및 zsh bash 쉘 자동 완성 활성화, eksctl 자동완성 (0) | 2022.07.31 |
[kubectl] kubectl 자동완성 (2) | 2022.07.14 |