DevOps

[k8s] Static Pod

곱창국수 2024. 6. 7. 15:36

개념

각 Pod들은 Master Node에 설치된 kube-scheduler와 kube-apiserver를 활용하여 적절한 Node에 Pod를 배포하게 된다. 그런데 해당 리소스 없이 node에 존재하는 kublet의 도움으로 Static Pod 형태로 배포가 가능하다. 실제로 Master Node 배포된 etcd, kube-scheduler, kube-apiserver 등은 Static Pod 형태로 배포가 되었다.

kubelet은 /etc/kubernetes/manifests 디렉터리에 정의된 매니페스트 파일을 통해 Static Pod를 생성한다. 그리고 Static Pod를 생성하면 자동으로 Pod이름 뒤에 -{nodename} 이 붙는다. 그래서 이름 만으로 어떤 파드가 Static Pod로 배포되었는지 알 수 있다.

 


 

실습

Static Pod를 생성하는 방법은 어렵지 않다. 

/etc/kubernetes/manifests 해당 경로에 yaml 파일을 생성하여 pod를 실행해 주면 된다.

 

kubectl run static-busybox --image=busybox --command sleep --command 1000 --dry-run=client -o yaml > /etc/kubernetes/manifests/static-busybox.yaml

 

해당 명령어를 활용하여 간단하게 해당 경로에 yaml파일을 생성해준다.

 

 

static-busybox.yaml

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: static-busybox
  name: static-busybox
spec:
  containers:
  - command:
    - sleep
    - "1000"
    image: busybox
    name: static-busybox
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

 

kubectl apply -f static-busybox.yaml

 

실행시키면 static-busybox-{nodename} 다음 형태로 Pod가 떠있는걸 확인 할 수 있다.

 


 

해당 개념은 Master Node에서 사용하는 리소스들이 Static Pod 형태로 떠있기에 정확하게 알고 넘어가면 좋을 것 같다.