Kubernetes
Kubernetes(K8s)는 컨테이너화된 애플리케이션의 자동 배포, 스케일링, 관리를 위한 오픈소스 플랫폼입니다.
주요 개념
1. 클러스터 아키텍처
- 마스터 노드: 클러스터 관리 (API 서버, 스케줄러, 컨트롤러 매니저)
- 워커 노드: 실제 애플리케이션이 실행되는 노드
- kubelet: 각 노드에서 실행되는 에이전트
- kube-proxy: 네트워크 규칙 관리
2. 기본 오브젝트
- Pod: 가장 작은 배포 단위, 하나 이상의 컨테이너 포함
- Service: Pod 집합에 대한 단일 접근점 제공
- Volume: 데이터 저장소
- Namespace: 클러스터 내 가상 클러스터
3. 컨트롤러
- Deployment: Pod와 ReplicaSet 관리
- StatefulSet: 상태 유지가 필요한 애플리케이션 관리
- DaemonSet: 모든 노드에 Pod 실행
- Job/CronJob: 일회성/반복 작업 실행
주요 명령어
- kubectl get nodes: 클러스터의 모든 노드 조회
- kubectl get pods: 현재 네임스페이스의 모든 Pod 조회
- kubectl get services: 현재 네임스페이스의 모든 서비스 조회
- kubectl describe pod [Pod 이름]: 특정 Pod의 상세 정보 조회
- kubectl logs [Pod 이름]: 특정 Pod의 로그 조회
- kubectl exec -it [Pod 이름] — /bin/bash: 특정 Pod에 접속하여 bash 셸 실행
- kubectl apply -f [파일 경로]: 구성 파일을 사용하여 리소스 생성/업데이트
- kubectl delete -f [파일 경로]: 구성 파일을 사용하여 리소스 삭제
- kubectl scale —replicas=[복제본 수] deployment/[디플로이먼트 이름]: 디플로이먼트의 복제본 수 조정
- kubectl rollout restart deployment/[디플로이먼트 이름]: 디플로이먼트 롤아웃 재시작
- kubectl get events: 클러스터 이벤트 조회
- kubectl top nodes: 노드의 리소스 사용량 조회
- kubectl top pods: Pod의 리소스 사용량 조회