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 형태로 떠있기에 정확하게 알고 넘어가면 좋을 것 같다.