서버 개발/Kubenetes
[Kubernetes] kubectl의 핵심 기능 요약
지노윈
2024. 11. 16. 18:30
반응형
Kubernetes는 클라우드 환경에서 애플리케이션을 배포, 확장, 관리하는 강력한 도구입니다. 이를 제어하는 핵심 CLI 도구인 kubectl은 개발자와 운영자를 연결하는 중요한 다리 역할을 합니다. 이번 글에서는 kubectl과 Kubernetes의 주요 구성 요소, 그리고 실용적인 명령어 사용법을 정리해보겠습니다.
kubectl: Kubernetes CLI 도구
kubectl은 Kubernetes 클러스터와 상호작용하는 데 필요한 명령줄 인터페이스(CLI)입니다. 이를 통해 클러스터의 리소스를 관리하고 조작할 수 있습니다.
주요 역할:
- 파드(Pod) 생성 및 삭제
- 배포(Deployment) 관리
- 클러스터 상태 점검 및 리소스 조회
기본 사용법: 명령어를 입력하여 클러스터와 상호작용합니다.
- 모든 파드 조회: kubectl get pods
- 특정 네임스페이스를 포함한 모든 파드 조회: kubectl get pods -A
- 특정 조건에 맞는 파드 조회: kubectl get pods -l app=example-app
Kubernetes 주요 구성 요소
Kubernetes는 다양한 컴포넌트가 조화를 이루며 작동합니다. 아래는 주요 구성 요소와 그 역할입니다.
- CoreDNS: 클러스터 내부에서 DNS 이름으로 서비스와 파드에 접근할 수 있게 함.
- etcd: 클러스터 상태 정보를 저장 및 관리하는 분산 키-값 저장소.
- kube-apiserver: Kubernetes API 서버로, 클러스터의 모든 요청을 처리.
- kube-controller-manager: 복제, 노드 상태 관리 등 여러 컨트롤러를 실행하여 클러스터 상태를 유지.
- kube-proxy: 각 노드에서 실행되며, 네트워크 트래픽을 관리하고 로드 밸런서를 제공.
- kube-scheduler: 새로운 파드를 적절한 노드에 할당.
- Storage Provisioner: 동적 스토리지 리소스를 프로비저닝(Persistent Volume 관리).
유용한 kubectl 명령어
1) 파드와 리소스 관리
- 현재 클러스터 파드 상태 확인:
kubectl get pods - 특정 파드의 상세 정보 조회:
kubectl get pods -o wide
2) 로그 조회
- 특정 파드의 실시간 로그 조회:
kubectl logs <pod-name> -f - 특정 네임스페이스의 이벤트 로그 조회:
kubectl get events -n <namespace>
3) 클러스터 정보
- 현재 클러스터 컨텍스트 확인:
kubectl config current-context - 컨텍스트 변경:
kubectl config use-context <context-name> - 클러스터 전체 정보 확인:
kubectl cluster-info
4) 파드 내부로 접근
- 특정 파드의 쉘 접속:
kubectl exec -it <pod-name> -- /bin/bash - 여러 컨테이너가 있는 경우 특정 컨테이너 접속:
kubectl exec -it <pod-name> -c <container-name> -- bash
5) 시크릿 생성 및 관리
- Docker 레지스트리 인증 정보를 포함한 시크릿 생성:
kubectl create secret docker-registry ecr-secret \
--docker-server=<server> \
--docker-username=<username> \
--docker-password=$(aws ecr get-login-password --region <region>)
6) 로그 다운로드
- 특정 컨테이너 로그를 파일로 저장:
kubectl logs -n default <pod-name> -c <container-name> > logs.txt