IT/PaaS

쿠버네티스 시작하기(6) - 쿠버네티스 기본 명령어

twofootdog 2019. 12. 27. 11:05

kubectl은 쿠버네티스 클러스터에서 명령을 내리는 CLI(Command Line Interface)다. 이번 장에서는 쿠버네티스를 운영할 때 가장 많이 쓰이는 kubectl 기본 명령어에 대해서 정리를 할 것이다. 만약 쿠버네티스의 기본 명령어에 대해서 이미 알고 있거나, 실습을 통해서 차근차근히 배워 나가고 싶다면 이번 장은 Skip해도 괜찮을 것 같다. 

 

 

1. kubectl 기본 문법

kubectl 의 기본 문법은 아래와 같다.

# kubectl [COMMAND] [TYPE] [NAME] [FLAGS]

 

2. [COMMAND]

하나 혹은 여러 리소스에 대한 Operation을 입력한다. 

COMMAND 설명 사용 방법
create 파일이나 stdin으로 리소스 생성 kubectl create -f FILENAME
get 하나 혹은 그 이상의 리소스 정보를 보여준다.  kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file=...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]
run 클러스터에 특정 이미지 run run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
expose 특정 리소스를 서비스로 노출. 기본 타입은 ClusterIP이고 쿠버네티스 내부에서만 접근 가능하며, LoadBalancer나 NodePort로 지정하면 외부에서 접근 가능하다 expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]
delete 리소스를 삭제한다 delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)])
apply 파일이나 stdin으로 리소스 적용 apply (-f FILENAME | -k DIRECTORY)
describe 특정 리소스나 리소스그룹의 정보를 상세히 보여준다 describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)
exec 컨테이너 안에서 특정 명령어를 실행한다 exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...]
logs pod나 특정 리소스의 컨테이너 로그를 출력한다 logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER]
taint 한개 혹은 그 이상의 노드의 taint를 변경한다 taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N
api-resources 쿠버네티스 전체 리소스 타입을 출력한다  
... ... ... 

 

3 [TYPE]

리소스 타입을 입력한다.

Type 단축어
apiservices  
certificatesigningrequests  
clusterrolebindings  
clusterroles  
componentstatuses cs
configmaps cm
controllerrevisions  
cronjobs  
customresourcedefinition crd
daemonsets ds
deployments deploy
endpoints ep
events ev
horizontalpodautoscalers hpa
ingresses ing
jobs  
limitranges  
namespaces ns
networkpolicies netpol
nodes no
persistentvolumeclaims pvc
persistentvolumes pv
poddisruptionbudget pdb
podpreset  
pods po
podsecuritypolicies psp
podtemplates  
replicasets rs
replicationcontrollers rc
resourcequotas quota
rolebindings  
roles  
secret  
serviceaccounts sa
services svc
statefulsets  
storageclasses  

 

4. [NAME]

특정 리소스의 이름을 입력한다. 만약 모든 리소스의 정보를 보고 싶으면 NAME을 선언하지 않으면 된다.

# kubectl get pods

만약 2개 이상의 리소스 정보를 보고 싶으면 리소스 이름을 차례로 입력하면 된다. 예를들면 kube-proxy-jlfwr kube-proxy-p59m8 -n kube-system 두개 리소스 정보를 조회한다면 아래와 같이 입력하면 된다. 

# kubectl get pods kube-proxy-jlfwr kube-proxy-p59m8 -n kube-system

만약 여러개의 리소스에 명령어를 적용할 경우 리소스타입/리소스명을 차례로 입력하면 된다. 예를들면 kube-system ㅜnamespaces내에 있는 pods인 kube-proxy-jlfwr과 services인 kube-dns를 조회할 경우 아래와 같이 입력하면 된다.

# kubectl get pods/kube-proxy-jlfwr services/kube-dns -n kube-system

만약 여러개의 파일에 명령어를 적용할 경우 -f 옵션과 파일명을 차례로 입력하면 된다. 예를들면 test.yaml 파일과 test2.yaml파일에 apply 명령어를 적용할 경우 아래와 같이 입력하면 된다.

# kubectl apply -f test.yaml -f test2.yaml

 

5. [FLAGS]

추가적인 옵션을 입력한다.

FLAG 설명
--all-namespaces 전체 namespaces
-n [namespaces명] 특정 namespaces
-o wide pod, node명 등 추가적인 정보 모두 출력
-o name 리소스 이름만 출력
-o json json 형식으로 출력
-o yaml yaml 형식으로 출력

예제 : 

# kubectl get pods -n kube-system
# kubectl get pods --all-namespace
# kubectl get pods --all-namespaces -o wide
# kubectl get pods --all-namespaces -o yaml

 

참고

 

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands

 

Kubectl Reference Docs

GETTING STARTED This section contains the most basic commands for getting a workload running on your cluster. run will start running 1 or more instances of a container image on your cluster. expose will load balance traffic across the running instances, an

kubernetes.io

https://blog.voidmainvoid.net/146

 

쿠버네티스 kubectl 설명 및 예제 모음

kubectl은 쿠버네티스 클러스터에 명령을 내리는 CLI(command line interface)입니다. kubectl 문법(바로가기) kubectl 예제(바로가기) kubectl 문법 terminal window에서 아래와 같은 명령어로 kubectl을 동작..

blog.voidmainvoid.net