Pod - Pod 동작 flow

zhzkzhffk·2022년 5월 25일
0

따배쿠

목록 보기
6/6

본 포스팅은 따배쿠(따라하면서 배우는 쿠버네티스)을 보고 정리한 내용입니다.


**Pod 동작 flow**

  1. API 문법 체크(pod api 체크)
  2. API가 etcd 정보를 꺼내서 scheduler에게 제공
  3. scheduler가 바람직한 worker node를 선택할 때 까지의 과정을 Pending
  4. Pending 이후 hub에서 컨테이너를 다운 받아 worker node에 pod를 running

**Pod 동작 flow 실습**

$ kubectl get pods -o wide --watch
# 동작 과정을 line 별로 out

$ kubectl delete pod --all
pod "multipod" deleted
pod "mypod" deleted
pod "nginx-pod" deleted
pod "web1" deleted


$ kubectl create -f pod-multi.yaml
$ kubectl edit pod mutipod(name)
# yaml파일이 vim editor로 열림

$ kubectl get pods
No resources found in default namespace.

$ kubectl get pods --all-namespaces
NAMESPACE     NAME                               READY   STATUS    RESTARTS       AGE
kube-system   coredns-64897985d-fdf7f            1/1     Running   11 (52m ago)   22d
kube-system   etcd-minikube                      1/1     Running   11 (52m ago)   22d
kube-system   kube-apiserver-minikube            1/1     Running   11 (52m ago)   22d
kube-system   kube-controller-manager-minikube   1/1     Running   11 (52m ago)   22d
kube-system   kube-proxy-5v277                   1/1     Running   11 (52m ago)   22d
kube-system   kube-scheduler-minikube            1/1     Running   11 (52m ago)   22d
kube-system   storage-provisioner                1/1     Running   17 (50m ago)   22d

**Q&A**

  1. 현재 namespace에서 동작중인 Pod는 몇 개인가?
  • kubectl get pods
  1. 현재 시스템에서 동작중인 Pod 수는>
  • kubectl get pods --all-namespaces
  1. 컨테이너 nginx를 실행하는 nginx-pod라는 이름의 Pod를 생성하시오.
  • kubectl run nginx-pod --image=nginx:1.14
  1. 생성한 Pod의 image 정보를 확인하는 명령은 무엇인가?
  • kubectl describe pod nginx-pod
  1. 생성한 Pod에는 몇 개의 컨테이너가 포함되어 있나?
  • kubectl get pods에서 runnig의 갯수를 보면 된다. or describe
  1. 새 pod의 컨테이너 상태는 어떻습니까?
  • pod의 상태랑 컨테이너 상태랑은 조금 다르다. 컨테이너의 상태를 알려면 describe
  1. kubectl get pods 명령의 출력에서 READY 열은 무엇을 의미하나?
  • ready pods / all pods
  1. 생성한 pod를 삭제
  • kubectl delete pod pod이름
  1. 컨테이너 image 'redis123'을 실행하는 pod 'redis'를 redis.yaml을 이용해 생성하시오.
  • kubectl run redis --image=redis123 --dry-run -o yaml > redis.yaml (yaml 형식 가져옴)
  • --dry-run: 실행하지말고 실행이 되는지 까지만 확인해줘!
$ kubectl run redis --image=redis123 --dry-run -o yaml > redis.yaml
$ cat redis.yaml
apiVersion: v1
kind: Pod
metadata:
  name: redis
spec:
  containers:
  - image: redis123
    name: redis
$ kubectl create -f redis.yaml
$ kubectl get pods
NAME    READY   STATUS         RESTARTS   AGE
redis   0/1     ErrImagePull   0          36s
  1. 앞서 만든 redis pod의 image를 redis로 수정하여 동작시키시오.
$ kubectl describe pod redis
Events:
  Type     Reason     Age                  From               Message
  ----     ------     ----                 ----               -------
  Normal   Scheduled  2m18s                default-scheduler  Successfully assigned default/redis to minikube
  Normal   Pulling    38s (x4 over 2m18s)  kubelet            Pulling image "redis123"
  Warning  Failed     35s (x4 over 2m15s)  kubelet            Failed to pull image "redis123": rpc error: code = Unknown desc = Error response from daemon: pull access denied for redis123, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
  Warning  Failed     35s (x4 over 2m15s)  kubelet            Error: ErrImagePull
  Warning  Failed     20s (x6 over 2m14s)  kubelet            Error: ImagePullBackOff
  Normal   BackOff    8s (x7 over 2m14s)   kubelet            Back-off pulling image "redis123"
  
# 컨테이너 이미지가 없음을 확인함

$ kubectl edit pod redis
pod/redis edited
$ kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
redis   1/1     Running   0          4m35s
profile
Backend Developer

0개의 댓글