이전 글에서는 Kubernetes의 Service와 그 근간인 kube-proxy에 대해 알아보았습니다.
https://yubi5050.tistory.com/182
이번 글에서는 Kubernetes kubectl 명령어에 대해 알아보려고 합니다.
kubectl 이란?
Kubectl은 쿠버네티스 클러스터를 제어하기 위한 커맨드 라인 도구로, 클러스터 외부의 사용자 컴퓨터에 설치 가능
📌 kubectl 역할
- 쿠버네틱스 자원들의 생성, 업데이트, 삭제 (create, update, delete)
- 디버그 모니터링, 트러블 슈팅 (log, exec, cp, top, attach)
- 클러스터 관리 (cordon, top, drain, taint 등)
kubectl 명령어
📌 명령어 기본형
kubectl [command] [type] [name] [flags]
- command : 자원에 실행하려는 동작 (create, get, delete)
- type : 자원 타입 (pod, service, ingress 등)
- name : 자원 이름
- flags : 부가적으로 설정할 옵션 ex) -s, --server
📌 kubectl 조회 관련 명령어
- kubectl api-resources : 사용 가능한 API 리소스 나열 (약어 정보 등)
- kubectl cluster-info : 클러스터의 마스터와 서비스에 대한 엔드포인트 정보를 표시
- kubectl describe : 하나 이상의 리소스의 자세한 상태를 표시
- kubectl get : 선택된 리소스의 정보 리스트를 확인
- kubectl logs <pods> : 선택한 POD 의 Logs 확인
- kubectl explain : 리소스(pod, node, service)에 대한 documentation 확인
📌 kubectl 동작 관련 명령어
- kubectl create : 파일이나, 명령어 입력을 통해 리소스 생성
- kubectl apply : 해당 resource의 구성 변경 사항 적용, no base서 실행시 다켜짐
- kubectl expose : 레플리케이션 컨트롤러/서비스/파드를 쿠버네티스 서비스로 노출
- kubectl run [name] [images] [flags] : 클러스터내 특정 이미지 run
- kubectl delete [pod/service] [pod이름/service이름] : 리소스를 삭제
- kubectl attach [pod 내 컨테이너] : 실행 중인 컨테이너에 접속
- kubectl exec [pod] : 해당 pod 에 명령어 실행
- kubectl patch : 리소스의 일부 attribute를 수정, 적용
📌 kubectl 변경 관련 명령어
- kubectl edit : 동작중인 api-resources 수정시 사용
- kubectl scale : 레플리케이션 컨트롤러의 관리하는 파드 집합 자동 조정
- kubectl port-forward : port-forwarding 관련 명령어
- kubectl proxy : 쿠버네틱스 내 프록시 설정
kubectl 명령어 세부 설명
📌 kubectl get pods
- NAME : 파드 이름
- READY : 파드의 준비상태 (0/1 : 파드는 생성 됬으나 사용 준비x, 1/1 : 파드 생성 및 준비 완료)
- STATUS : 파드 상태 (Running :실행 중, Terminating : 삭제 중, Container Creating : 생성 중)
- RESTARTS : 재시작횟수 (파드는 자동 재시작 되므로)
- AGE : 파드 생성 후 경과 시간
📌 kubectl get services
- NAME : 서비스 이름
- TYPE : 서비스 타입
- CLUSTER-IP : 클러스터 내 IP
- EXTERNAL-IP : 클러스터 외부에서 접속시 사용되는 ip
- PORTS: 해당 서비스 접속 port
- AGE: 자원 생성 후 지난 시간
📌 kubectl get deployments
- NAME : 클러스터에 배포한 디플로이먼트 이름
- READY : 사용자가 최종 배포한 파드 개수와 현재 클러스터에 동작중인 파드 갯수
- UP-TO-DATE : 디플로이먼트 설정에 정의한 신규 파드 갯수
- AVAILABLE : 서비스 가능한 파드 갯수
- AGE : 디플로이먼트 생성 후 지난 시간
📌 kubectl get nodes
- NAME : 클러스터의 node 이름
- STATUS : 노드 상태
- ROLES : 노드의 역할
- AGE : 노드 생성 후 지난 시간
- VERSION: 도커 Version
📌 kubectl get namespaces
- STATUS : namespace 상태
- AGE : namespace 생성 후 지난 시간
- NAME : 클러스터에 설정한 namespace 이름 위의 4개는 k8s에서 기본적으로 생기는 namespace
kube-system : 쿠버네티스 시스템에서 관리하는 namespace, 쿠버네티스 관리용 파드나 설정
kube-public : 클러스터 안 모든 사용자가 읽을 수 있는 네임스페이스
kube-node-leases : 각 노드의 임대 오브젝트들을 관리하는 네임스페이스
마무리
이번 글에서는 Kuberenetes의 kubectl 명령어에 대해 알아보았습니다. 다음 글에서는 Kuberenetes의 template 파일 (yaml) 작성에 대해 정리해보도록 하겠습니다.
'DevOps > Kubernetes' 카테고리의 다른 글
[K8S] k8s 정리 - (12) Kubernetes yaml 필드 정리 (0) | 2022.09.11 |
---|---|
[K8S] k8s 정리 - (10) Kubernetes Service와 kube-proxy (0) | 2022.09.10 |
[K8S] k8s 정리 - (9) Kubernetes Volume (PV, PVC, emptyDir, hostPath) (0) | 2022.09.09 |
[K8S] k8s 정리 - (8) Kubernetes Pod (Container 구성, 리소스, 환경변수) (0) | 2022.09.09 |
[K8S] k8s 정리 - (7) Kubernetes Pod (Lifecycle, Probe, Handler) (0) | 2022.09.09 |