참고 문서: kubernetes.io/Create static Pods
API 서버 없이 특정 노드의 kubelet 데몬에 의해 직접 관리됨
즉, 컨트롤플레인에 의해 관리되는 Pod와 다름
--pod-manifest-path명시한 디렉터리를 정기적으로 스캔하여 매니페스트 파일의 생성 유무에 따라 스태틱 파드를 생성하거나 삭제함
ssh node01
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
mkdir -p /etc/kubernetes/manifests/
cat <<EOF >/etc/kubernetes/manifests/static-web.yaml
apiVersion: v1
kind: Pod
metadata:
name: static-web
labels:
role: myrole
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
protocol: TCP
EOF
KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --pod-manifest-path=/etc/kubernetes/manifests/"
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
systemctl restart kubelet
--manifest-url=<URL>웹 매니페스트를 사용해 매니페스트 파일을 주기적으로 다운로드하여 변경된 부분이 있을 경우 kubelet이 적용함
apiVersion: v1
kind: Pod
metadata:
name: static-web
labels:
role: myrole
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
protocol: TCP
KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --manifest-url=<manifest-url>"
kubelet을 재시작하면 추가한 스태틱 파드들이 모두 실행되는 것을 확인할 수 있음
특정 노드에서 구동 중인 스태틱 파드와 컨테이너들을 확인할 수 있음
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
crictl ps