Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- minikube
- IntelliJ
- Spring
- 정보처리기사 실기
- CKA 기출문제
- 오블완
- 기록으로 실력을 쌓자
- kotlin
- CKA
- 코틀린 코루틴의 정석
- PETERICA
- Kubernetes
- Linux
- Pinpoint
- mysql 튜닝
- AWS EKS
- kotlin querydsl
- aws
- APM
- 정보처리기사실기 기출문제
- Java
- kotlin coroutine
- CloudWatch
- Elasticsearch
- kotlin spring
- 정보처리기사 실기 기출문제
- AI
- 티스토리챌린지
- MySQL
- 공부
Archives
- Today
- Total
피터의 개발이야기
[kubernetes] Static Pod란? 본문
반응형
ㅁ Static Pod란
Static Pod란 API-Server 없이 특정 노드에 있는 kubelet 데몬에 의해 직접 관리된다.
컨트롤 플레인에 의해 관리되는 파드(예 Deployment)와는 달리,
kubelet이 직접 스태틱 파드를 감시한다.
스태틱 파드는 Kubelet가 관리상 특정 노드에 있는 하나의 Kubelet에 매여 있다.
Kubelet은 Pod를 관리하는 Pod이기 때문에 데온에 가깝다. 노드에서 구동되는 스타틱 파드는 API 서버에 의해서 볼 수 있지만, API 서버에서 제어될 수는 없다.
ㅁ 조회방법
$ k get po -A | grep controlplane
kube-system etcd-controlplane 1/1 Running 0 27m
kube-system kube-apiserver-controlplane 1/1 Running 0 27m
kube-system kube-controller-manager-controlplane 1/1 Running 0 27m
kube-system kube-scheduler-controlplane 1/1 Running 0 27m
ㅇ 파드 이름에는 노드 호스트 이름 앞에 하이픈을 붙여 접미사로 추가된다.
ㅁ Static Pod 정의 위치
$ cd/etc/kubernetes/manifests
$ ls
etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml
ㅇ 위에 4개의 스태틱 파드가 조회되었는데, 이들 정의하는 yaml 파일의 위치는 /etc/kubernetes/manifests 에 있다.
ㅁ Static Path 지정방법
# static Pod Path 조회
$ cat /var/lib/kubelet/config.yaml | grep staticPodPath
staticPodPath: /etc/kubernetes/manifests
ㅇ kubelet의 설정파일인 config.yaml에 staticPod의 Path를 지정한다.
ㅁ Static Pod 상세 정보 조회
# manifest 파일 직업 조회
$ cat /etc/kubernetes/manifests/kube-apiserver.yaml | grep image
image: registry.k8s.io/kube-apiserver:v1.27.0
imagePullPolicy: IfNotPresent
# api-server로 조회
$ k get po -n kube-system kube-apiserver-controlplane -o yaml | grep image
image: registry.k8s.io/kube-apiserver:v1.27.0
imagePullPolicy: IfNotPresent
image: registry.k8s.io/kube-apiserver:v1.27.0
imageID: registry.k8s.io/kube-apiserver@sha256:89b8d9dbef2b905b7d028ca8b7f79d35ebd9baa66b0a3ee2ddd4f3e0e2804b45
ㅇ API-Server의 image 정보를 확인할 때에 manifiest를 직접 조회하거나 api-server로 상세조회를 할 수 있다.
ㅁ Static Pod 생성하기
# 샘플 yaml 생성
$ k run static-busybox --image busybox --dry-run=client -o yaml
apiVersion: v1
kind: Pod
metadata:
creationTimestamp: null
labels:
run: static-busybox
name: static-busybox
spec:
containers:
- image: busybox
name: static-busybox
resources: {}
dnsPolicy: ClusterFirst
restartPolicy: Always
status: {}
# static path에 static-busybox.yaml 저장
$ k run static-busybox --image busybox --command -- sleep 1000 --dry-run=client -o yaml > /etc/kubernetes/manifests/static-busybox.yaml
# static pod 생성확인
$ k get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default static-busybox-controlplane 0/1 Completed 1 (4s ago) 6s
kube-flannel kube-flannel-ds-lg5vr 1/1 Running 0 45m
kube-flannel kube-flannel-ds-wxs5j 1/1 Running 0 45m
kube-system coredns-5d78c9869d-h5p6z 1/1 Running 0 45m
kube-system coredns-5d78c9869d-qcptf 1/1 Running 0 45m
kube-system etcd-controlplane 1/1 Running 0 46m
kube-system kube-apiserver-controlplane 1/1 Running 0 46m
kube-system kube-controller-manager-controlplane 1/1 Running 0 46m
kube-system kube-proxy-96ncv 1/1 Running 0 45m
kube-system kube-proxy-hsv6h 1/1 Running 0 45m
kube-system kube-scheduler-controlplane 1/1 Running 0 45m
ㅇ static pod 생성은 static path에 yaml파일을 정의해 주면 kubelet이 자동으로 생성해 준다.
ㅁ Static Pod 수정하기
# 이미지 변경 작업
$ kubectl run --restart=Never \
--image=busybox:1.28.4 static-busybox \
--dry-run=client -o yaml \
--command -- sleep 1000 > /etc/kubernetes/manifests/static-busybox.yaml
# 이미지 변경확인
$ k get po static-busybox-controlplane -o yaml | grep image
image: busybox:1.28.4
imagePullPolicy: IfNotPresent
image: docker.io/library/busybox:1.28.4
imageID: docker.io/library/busybox@sha256:141c253bc4c3fd0a201d32dc1f493bcf3fff003b6df416dea4f41046e0f37d47
ㅁ Static POD 삭젭 방법
# kubectl 명령어를 통해 delete는 가능하다
$ k delete po static-busybox-controlplane
pod "static-busybox-controlplane" deleted
# 다시 조회하면 살아나있다.
# kubelet가 manifests에 정의되어 있는 yaml을 통해 직접 관리하기 때문에 자동 생성된다.
$ k get po
NAME READY STATUS RESTARTS AGE
static-busybox-controlplane 0/1 Running 0 5s
# static path에서 직접 삭제
$ rm /etc/kubernetes/manifests/static-busybox.yaml
# 1분 미만으로 삭제가 되었다.
$ k get po static-busybox-controlplane
NAME READY STATUS RESTARTS AGE
static-busybox-controlplane 1/1 Running 0 49s
$ k get po static-busybox-controlplane
Error from server (NotFound): pods "static-busybox-controlplane" not found
ㅁ 함께 보면 좋은 사이트
반응형
'Kubernetes > 기초공부' 카테고리의 다른 글
[kubernetes] Pod 한꺼번에 삭제하기 (0) | 2024.01.19 |
---|---|
[kubernetes] 다중 스케줄러 (0) | 2024.01.18 |
DaemonSet 샘플 yaml 얻는 방법 (0) | 2024.01.18 |
[kubernetes] 스케줄링 명령어 연습문제 (0) | 2024.01.17 |
[kubernetes] kubectl object 생성 실습문제 (0) | 2024.01.17 |
Comments