Index
- Docker
- Container Orchestration
- Provisioning
목표
쿠버네티스는 클러스터 API 서버와 통신하기 위해 kubectl
이라는 커맨드라인 인터페이스를 사용합니다. 클러스터와 상호 작용하고 바라는 상태를 설정하거나 수정하기 위해서 쿠버네티스 API를 직접 사용할 수도 있습니다.
1. Syntax
kubectl의 기본 구분은 다음과 같습니다.
1 | kubectl [command] [TYPE] [NAME] [flag] |
command
- create, get, describe, delete 등 자원에 대해 수행하려는 조작을 지정합니다.
TYPE
- 리소스에 대한 유형을 지정하며, 대소 문자를 구분하지 않으나, 단수, 복수, 약식을 지정할 수 있습니다.
- 다음 예시는 모두 같은 출력을 실행합니다.
1
2
3kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
NAME
- 리소스의 이름을 지정합니다. 이름은 대소 문자를 구분합니다. 이름을 생략하면 모든 리소스에 대한 세부 정보가 표시됩니다
1
kubectl get pods
- 여러 리소스에 대한 조작을 수행 할 때 유형 및 이름별로 각 리소스를 지정하거나 하나 이상의 파일을 지정할 수 있습니다.
- 리소스가 모두 같은 유형인 경우 TYPE NAME1 NAME2 NAME3 …
1
kubectl get pod pod1 pod2 pod3 ...
- 여러 리소스 유형을 개별적으로 지정하는경우 TYPE1/NAME1 TYPE1/NAME2 TYPE2/NAME3 …
1
kubectl get pod/pod1 pod/pod2 service/service1 ...
- 리소스가 모두 같은 유형인 경우 TYPE NAME1 NAME2 NAME3 …
- 하나 이상의 파일로 리소스를 지정 -f file1 -f file2 -f file
1
kubectl get pod -f ./pod.yaml
- 리소스의 이름을 지정합니다. 이름은 대소 문자를 구분합니다. 이름을 생략하면 모든 리소스에 대한 세부 정보가 표시됩니다
flag
- 선택적 플래그를 지정합니다. 예를 들어, -s 또는 –server 플래그를 사용하여 Kubernetes API 서버의 주소와 포트를 지정할 수 있습니다.
2. Operations
다음 표에는 모든 kubectl 작업에 대한 간단한 설명과 일반적인 구문이 포함되어 있습니다.
자세한 사항은 이곳 을 참고해주세요.
Operation | Syntax | Description |
---|---|---|
annotate | kubectl annotate (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags] | 하나 이상의 리소스 주석을 추가하거나 업데이트 |
api-versions | kubectl api-versions [flags] | 사용가능한 API 버전 List |
apply | kubectl apply -f FILENAME [flags] | 파일 또는 stdin에서 자원에 구성 변경 사항을 적용 |
attach | kubectl attach POD -c CONTAINER [-i] [-t] [flags] | 실행중인 컨테이너에 연결하여 출력 스트림을 보거나 컨테이너 (stdin)와 상호 작용하십시오. |
autoscale | kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [–min=MINPODS] –max=MAXPODS [–cpu-percent=CPU] [flags] | 복제 컨트롤러에서 관리하는 포드 세트를 자동으로 조정합니다. |
cluster-info | kubectl cluster-info [flags] | 클러스터의 마스터 및 서비스에 대한 엔드 포인트 정보를 표시하십시오. |
config | kubectl config SUBCOMMAND [flags] | kubeconfig 파일을 수정합니다. 세부 사항은 개별 부속 명령을 참조하십시오. |
create | kubectl create -f FILENAME [flags] | 파일 또는 stdin에서 하나 이상의 자원을 작성하십시오. |
delete | kubectl delete (-f FILENAME | TYPE [NAME | /NAME | -l label | –all]) [flags] | 파일, stdin에서 또는 label selectors, names, resource selectors 또는 resources 지정하여 resources를 삭제하십시오. |
describe | kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | /NAME | -l label]) [flags] | 하나 이상의 리소스의 자세한 상태를 표시합니다. |
diff | kubectl diff -f FILENAME [flags] | 라이브 구성에 대한 Diff 파일 또는 표준 입력 (BETA) |
edit | kubectl edit (-f FILENAME | TYPE NAME | TYPE/NAME) [flags] | 기본 편집기를 사용하여 서버에서 하나 이상의 자원 정의를 편집하고 업데이트하십시오. |
exec | kubectl exec POD [-c CONTAINER] [-i] [-t] [flags] [– COMMAND [args…]] | pod의 컨테이너에 대해 명령을 실행하십시오. |
explain | kubectl explain [–recursive=false] [flags] | 다양한 리소스에 대한 설명서를 받으십시오. pods, nodes, services 등 |
expose | kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [–port=port] [–protocol=TCP|UDP] [–target-port=number-or-name] [–name=name] [–external-ip=external-ip-of-service] [–type=type] [flags] | replication controller, service 또는 pod를 새로운 Kubernetes 서비스로 노출하십시오. |
get | kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [–watch] [–sort-by=FIELD] [[-o | –output]=OUTPUT_FORMAT] [flags] | 하나 이상의 리소스를 나열하십시오. |
label | kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 … KEY_N=VAL_N [–overwrite] [–all] [–resource-version=version] [flags] | 하나 이상의 리소스 레이블 추가 또는 업데이트 |
logs | kubectl logs POD [-c CONTAINER] [–follow] [flags] | 컨테이너 내부의 pod log를 출력합니다. |
patch | kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) –patch PATCH [flags] | 전략적 병합 패치 프로세스를 사용하여 리소스의 하나 이상의 필드를 업데이트하십시오. |
port-forward | kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT […[LOCAL_PORT_N:]REMOTE_PORT_N] [flags] | 하나 이상의 로컬 포트를 pod로 전달합니다. |
proxy | kubectl proxy [–port=PORT] [–www=static-dir] [–www-prefix=prefix] [–api-prefix=prefix] [flags] | Kubernetes API 서버에 프록시를 실행하십시오. |
replace | kubectl replace -f FILENAME | 파일 또는 stdin에서 리소스를 바꾸십시오. |
rolling-update | kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] –image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC) [flags] | 지정된 replication controller 및 해당 pod를 점차적으로 교체하여 rolling update를 수행하십시오. |
run | kubectl run NAME –image=image [–env=”key=value”] [–port=port] [–replicas=replicas] [–dry-run=bool] [–overrides=inline-json] [flags] | 클러스터에서 지정된 이미지를 실행하십시오. |
scale | kubectl scale (-f FILENAME | TYPE NAME | TYPE/NAME) –replicas=COUNT [–resource-version=version] [–current-replicas=count] [flags] | 지정된 replacation controller의 크기를 업데이트하십시오. |
version | kubectl version [–client] [flags] | 클라이언트와 서버에서 실행중인 Kubernetes 버전을 표시합니다. |
3. Resource types
Resource Name | ShortNames | API Group | Namespaced | Resource kind |
---|---|---|---|---|
bindings | true | Binding | ||
componentstatuses | cs | false | ComponentStatus | |
configmaps | cm | true | ConfigMap | |
endpoints | ep | true | Endpoints | |
limitranges | limits | true | LimitRange | |
namespaces | ns | false | Namespace | |
nodes | no | false | Node | |
persistentvolumeclaims | pvc | true | PersistentVolumeClaim | |
persistentvolumes | pv | false | PersistentVolume | |
pods | po | true | Pod | |
podtemplates | true | PodTemplate | ||
replicationcontrollers | rc | true | ReplicationController | |
resourcequotas | quota | true | ResourceQuota | |
secrets | true | Secret | ||
serviceaccounts | sa | true | ServiceAccount | |
services | svc | true | Service | |
mutatingwebhookconfigurations | admissionregistration.k8s.io | false | MutatingWebhookConfiguration | |
validatingwebhookconfigurations | admissionregistration.k8s.io | false | ValidatingWebhookConfiguration | |
customresourcedefinitions | crd, crds | apiextensions.k8s.io | false | CustomResourceDefinition |
apiservices | apiregistration.k8s.io | false | APIService | |
controllerrevisions | apps | true | ControllerRevision | |
daemonsets | ds | apps | true | DaemonSet |
deployments | deploy | apps | true | Deployment |
replicasets | rs | apps | true | ReplicaSet |
statefulsets | sts | apps | true | StatefulSet |
tokenreviews | authentication.k8s.io | false | TokenReview | |
localsubjectaccessreviews | authorization.k8s.io | true | LocalSubjectAccessReview | |
selfsubjectaccessreviews | authorization.k8s.io | false | SelfSubjectAccessReview | |
selfsubjectrulesreviews | authorization.k8s.io | false | SelfSubjectRulesReview | |
subjectaccessreviews | authorization.k8s.io | false | SubjectAccessReview | |
horizontalpodautoscalers | hpa | autoscaling | true | HorizontalPodAutoscaler |
cronjobs | cj | batch | true | CronJob |
jobs | batch | true | Job | |
certificatesigningrequests | csr | certificates.k8s.io | false | CertificateSigningRequest |
leases | coordination.k8s.io | true | Lease | |
events | ev | events.k8s.io | true | Event |
ingresses | ing | extensions | true | Ingress |
networkpolicies | netpol | networking.k8s.io | true | NetworkPolicy |
poddisruptionbudgets | pdb | policy | true | PodDisruptionBudget |
podsecuritypolicies | psp | policy | false | PodSecurityPolicy |
clusterrolebindings | rbac.authorization.k8s.io | false | ClusterRoleBinding | |
clusterroles | rbac.authorization.k8s.io | false | ClusterRole | |
rolebindings | rbac.authorization.k8s.io | true | RoleBinding | |
roles | rbac.authorization.k8s.io | true | Role | |
priorityclasses | pc | scheduling.k8s.io | false | PriorityClass |
csidrivers | storage.k8s.io | false | CSIDriver | |
csinodes | storage.k8s.io | false | CSINode | |
storageclasses | sc | storage.k8s.io | false | StorageClass |
volumeattachments | storage.k8s.io | false | VolumeAttachment |
3.1 Example
node 정보 확인
1
2kubectl get no
kubectl get nodepod 확인
1
2
3kubectl get po
kubectl get pod
`service 확인
1
2kubectl get svc
kubectl get servicedeployments 확인
1
2kubectl get deploy
kubectl get deployments
4. Output Option
모든 kubectl 명령의 기본 출력 형식은 사람이 읽을 수있는 일반 텍스트 형식입니다. 특정 형식으로 터미널 창에 세부 사항을 출력하려면 지원되는 kubectl 명령에 -o 또는 –output 플래그를 추가 할 수 있습니다.
4.1 Syntax
1 | kubectl [command] [TYPE] [NAME] -o <output_format> |
- kubectl 조작에 따라 다음 출력 형식이 지원됩니다.
Output format | Description |
---|---|
-o custom-columns=<spec> | 쉼표로 구분 된 사용자 정의 열 목록을 사용하여 테이블을 보여줍니다. |
-o custom-columns-file=<filename> | <filename> 파일에서 사용자 정의 열 템플리트를 사용하여 테이블을 보여줍니다. |
-o json | JSON 형식의 API 객체를 보여줍니다. |
-o jsonpath=<template> | jsonpath 표현식에 정의 된 필드를 보여줍니다. |
-o jsonpath-file=<filename> | <filename> 파일에서 jsonpath 표현식으로 정의 된 필드를 보여줍니다. |
-o name | 리소스 이름 만 보여줍니다. |
-o wide | 추가 정보가 포함 된 일반 텍스트 형식으로 보여줍니다. pod의 경우 노드 이름이 포함됩니다. |
-o yaml | YAML 형식의 API 객체를 보여줍니다. |
4.2 Example
- pod 세부정보를 yaml 파일로 출력하기
1
kubectl get pod storm-684494d768-8nkm7 -o yaml