pod?
: 쿠버네티스에서 관리하는 가장 작은 단위
단일 목적을 수행하기 위한 한 개 이상의 컨테이너로 구성된 컨테이너 집합
Voloume + Container
1. status
Container Creating | 이미지 다운 중이거나 컨테이너 생성 중 |
CrashLoopBackOff | 파드 내의 컨테이너가 종료되어 다음 기동시까지 대기 상태 |
Pending | 리소스가 부족해 생성이 보류된상태 |
Terminating | 컨테이너에 종료 요청 시그널을 보낸 후 컨테이너가 종료할때까지 대기 중을 의미 |
Completed | 파드 내 컨테니너가 정상적으로 종료되었음을 의미 파드 내에 복수의 컨테이너가 생성된 경우, 첫 번째 컨테이너가 정상 종료된 경우 |
Error | 컨테이너가 이상 종료된 경우 파드 재에 복수의 컨테이너가 생성된 경우 , 첫 번째 컨테이너가 이상 종료된 경우 |
2. pod 생성
nginx 컨테이너로 구성된 파드를 생성
1) CLI
root@master:/home/vagrant# kubectl run my-nginx-pod-cli --image=nginx:latest --port 80
pod/my-nginx-pod-cli created ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~
파드 이름 파드 생성에 사용할 이미지 컨테이너에서 사용하는 포트
root@master:/home/vagrant# kubectl get pod
NAME READY STATUS RESTARTS AGE
my-nginx-pod-cli 0/1 ContainerCreating 0 7s
root@master:/home/vagrant# kubectl get pod
NAME READY STATUS RESTARTS AGE
my-nginx-pod-cli 1/1 Running 0 2m12s
2) YAML
root@master:/home/vagrant# vi nginx-pod.yaml
apiVersion: v1 # YAML 파일에서 정의한 오브젝트의 API 버전
kind: Pod # 리소스의 종류 ( kubectl api-resources 명령의 KIND 항목 )
metadata: # 라벨, 주석(annotation), 이름과 같은 리소스의 부가 정의
name: my-nginx-pod
spec: # 리소스 생성을 위한 정보
containers:
- name: my-nginx-container
image: nginx:latest
ports:
- containerPort: 80
protocol: TCP
root@master:/home/vagrant# kubectl apply -f nginx-pod.yaml
pod/my-nginx-pod created
root@master:/home/vagrant# kubectl get pod
NAME READY STATUS RESTARTS AGE
my-nginx-pod 0/1 ContainerCreating 0 4s
my-nginx-pod-cli 1/1 Running 0 11m
root@master:/home/vagrant# kubectl get pod
NAME READY STATUS RESTARTS AGE
my-nginx-pod 1/1 Running 0 30s
my-nginx-pod-cli 1/1 Running 0 11m
3. pod의 자세한 정보 확인
root@master:/home/vagrant# kubectl describe pods my-nginx-pod
Name: my-nginx-pod
Namespace: default
Priority: 0
Service Account: default
Node: worker2/192.168.10.120
Start Time: Thu, 05 Oct 2023 09:35:33 +0900
Labels: <none>
Annotations: cni.projectcalico.org/containerID: 0efd9cdd086dc6d97e07ac287031ed60737fb83a7394923c038ec9835267a28d
cni.projectcalico.org/podIP: 10.233.125.6/32
cni.projectcalico.org/podIPs: 10.233.125.6/32
Status: Running
IP: 10.233.125.6 ⇐ 파드 IP (클러스터 내부에서만 접근이 가능)
IPs: → 쿠버네티스 외부 또는 내부에서 파드에 접근하려면 서비스를 생성해야 함
IP: 10.233.125.6
Containers:
my-nginx-container:
Container ID: containerd://3270e6b5ba24638ed577aa27a222912244babee1915e44188a6ea9444dacf7ba
Image: nginx:latest
Image ID: docker.io/library/nginx@sha256:32da30332506740a2f7c34d5dc70467b7f14ec67d912703568daff790ab3f755
Port: 80/TCP
Host Port: 0/TCP
State: Running
Started: Thu, 05 Oct 2023 09:35:53 +0900
Ready: True
Restart Count: 0
Environment: <none>
Mounts:
/var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-bs4qt (ro)
Conditions:
Type Status
Initialized True
Ready True
ContainersReady True
PodScheduled True
Volumes:
kube-api-access-bs4qt:
Type: Projected (a volume that contains injected data from multiple sources)
TokenExpirationSeconds: 3607
ConfigMapName: kube-root-ca.crt
ConfigMapOptional: <nil>
DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 10m default-scheduler Successfully assigned default/my-nginx-pod to worker2
Normal Pulling 10m kubelet Pulling image "nginx:latest"
Normal Pulled 10m kubelet Successfully pulled image "nginx:latest" in 18.263s (18.264s including waiting)
Normal Created 10m kubelet Created container my-nginx-container
Normal Started 10m kubelet Started container my-nginx-container
쿠버네티스가 파드를 사용하는 이유
: 여러 리눅스 네임스페이스를 공유하는 여러 컨테이너들을 추상화된 집합으로 사용하기 위함
728x90
'K8s' 카테고리의 다른 글
쿠버네티스(kubernetes, k8s) (1) | 2023.10.23 |
---|---|
쿠버네티스 실습 (1) | 2023.10.12 |