Pod(파드)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위입니다.
쿠버네티스는 Pod 단위로 스케줄링, 로드밸런싱, 스케일링 등의 관리 작업을 수행합니다.
조금 어렵다면 Pod은 Container를 감싼 개념이라고 생각할 수 있습니다.
Pod 의 자세한 구조는 생략합니다.
apiVersion: v1 # kubernetes resource 의 API Version
kind: Pod # kubernetes resource name
metadata: # 메타데이터 : name, namespace, labels, annotations 등을 포함
name: counter
spec: # 메인 파트 : resource 의 desired state 를 명시
containers:
- name: count # container 의 이름
image: busybox # container 의 image
args: [/bin/sh, -c, 'i=0; while true; do echo "$i: $(date)"; i=$((i+1)); sleep 1; done'] # 해당 image 의 entrypoint 의 args 로 입력하고 싶은 부분
vi pod.yaml
# 위의 내용을 복사 후 붙여넣습니다.
kubectl apply -f pod.yaml
kubectl apply -f <yaml-file-path>
를 수행하면, <yaml-file-path>
에 해당하는 kubernetes resource 를 생성 또는 변경 할 수 있습니다.kubectl run
명령어로 YAML 파일 생성 없이 pod 을 생성할 수도 있지만, 이는 kubernetes 에서 권장하는 방식이 아니므로 생략하겠습니다.kubectl get pod
# ContainerCreating
kubectl get pod
# 시간이 지난 후 Running 으로 변하는 것을 확인할 수 있습니다.
kubectl get pod
kubectl config view --minify | grep namespace:
로 current namespace 가 어떤 namespace 로 설정되었는지 확인할 수 있습니다.default
namespace 가 기본으로 설정되어 있을 것입니다.kubectl get pod -n kube-system
# kube-system namespace 의 pod 을 조회합니다.
kubectl get pod -A
# 모든 namespace 의 pod 을 조회합니다.
<pod-name>
에 해당하는 pod 을 조회합니다.kubectl get pod <pod-name>
<pod-name>
에 해당하는 pod 을 자세히 조회합니다.kubectl describe pod <pod-name>
kubectl get pod -o wide
# pod 목록을 보다 자세히 출력합니다.
kubectl get pod <pod-name> -o yaml
# <pod-name> 을 yaml 형식으로 출력합니다.
kubectl get pod -w
# kubectl get pod 의 결과를 계속 보여주며, 변화가 있을 때만 업데이트됩니다.
kubectl logs <pod-name>
kubectl logs <pod-name> -f
# <pod-name> 의 로그를 계속 보여줍니다.
kubectl logs <pod-name> -c <container-name>
kubectl logs <pod-name> -c <container-name> -f
kubectl exec -it <pod-name> -- <명령어>
kubectl exec -it <pod-name> -c <container-name> -- <명령어>
kubectl delete pod <pod-name>
kubectl delete -f <YAML-파일-경로>