728x90
스태틱 포드
스태틱 포드의 필요성
- 스태틱 포드: kubelet이 직접 실행하는 포드
- 각각의 노드에서 kubelet에 의해 실행
- 포드들을 삭제할때 apiserver를 통해서 실행되지 않은 스태택 포드(static pod)는 삭제 불가
- 즉, 노드의 필요에 의해 사용하고자 하는 포드는 스태틱 포드로 세팅
- 다음 명령어 들을 사용하여 실행하고자 하는 static pod의 위치를 설정 가능
$ sudo systemctl status kubelet
kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since Sun 2019-07-07 12:00:33 KST; 13min ago
Docs: https://kubernetes.io/docs/home/
Main PID: 27987 (kubelet)
Tasks: 18 (limit: 4680)
CGroup: /system.slice/kubelet.service
└─27987 /usr/bin/kubelet --bootstrap-kube config=/etc/kubernetes/bootstrap-
kubelet.conf --k
ExecStart= 부분에 --pod-manifest-path=/etc/kubelet.d/ 추가
vim /lib/systemd/system/kubelet.service
systemctl daemon-reload
systemctl restart kubelet
스태틱 포드의 기본 경로
- 기본 경로는 /etc/kubernetes/manifests
- 이미 쿠버네티스 시스템에서는 필요한 기능을 위해 다음과 같은 스태틱 포드를 사용
- 각각의 컴포넌트의 세부 사항을 설정할 때는 여기 있는 파일들을 수정하면 자동으로 업데이트돼 포드를 재구성
- 포드의 작성 요령은 기존의 포드와 동일
$ ls /etc/kubernetes/manifests/
etcd.yaml kube-apiserver.yaml kube-controller-manager.yaml kube-scheduler.yaml
간단한 스태틱 포드의 작성
- 일반적인 포드와 동일하게 작성
- 작성된 파일은 반드시 해당 경로에 위치
- 실행을 위해 별도의 명령은 필요하지 않음
- 작성 후 바로 get pod를 사용하여 확인
apiVersion: v1
kind: Pod
metadata:
name: static-web
labels:
role: myrole
spec:
containers:
- name: web
image: nginx
ports:
- name: web
containerPort: 80
protocol: TCP
$ k get pod
NAME READY STATUS RESTARTS AGE
static-web-master 1/1 Running 1 14s
실습
https://kubernetes.io/docs/tasks/configure-pod-container/static-pod/#pods-created-via-http
http-go.yaml
apiVersion: v1
kind: Pod
metadata:
name: http-go
spec:
containers:
- name: http-go
image: gasbugs/http-go
/etc/kubernetes/manifests 에 http-go.yaml 파일을 생성하면 자동으로 master 가 pod를 생성함
$ sudo -i
$ cd /etc/kubernetes/manifests
$ vi http-go.yaml
kube-system 에 올라가 있지 않으므로 보이지 않음
$ kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-74ff55c5b-bsm6g 1/1 Running 17 20d
coredns-74ff55c5b-btpq5 1/1 Running 17 20d
etcd-master 1/1 Running 20 20d
kube-apiserver-master 1/1 Running 7 3d3h
kube-controller-manager-master 1/1 Running 19 20d
kube-proxy-4frsb 1/1 Running 19 20d
kube-proxy-6ld5t 1/1 Running 18 20d
kube-proxy-fq6m7 1/1 Running 18 20d
kube-scheduler-master 1/1 Running 19 20d
weave-net-mxqkk 2/2 Running 50 20d
weave-net-qpmvn 2/2 Running 50 20d
weave-net-qq5bk 2/2 Running 56 20d
확인해보면 http-go-master 라고 되어있는 것을 확인
static pod 는 node의 명칭이 뒤에 붙음
삭제를 해도 내려가지 않음
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
http-go-master 1/1 Running 0 77s
static token 이나 LimitRanges 등 manifests 옵션을 추가해야되는 일들이 종종 있음
728x90
'개발강의정리 > DevOps' 카테고리의 다른 글
[데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 멀티플 스케줄러 (0) | 2021.01.19 |
---|---|
[데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 수동 스케줄링 (0) | 2021.01.19 |
[데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 데몬셋 (0) | 2021.01.19 |
[데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - 시스템 리소스 요구사항과 제한 설정 (0) | 2021.01.19 |
[데브옵스를 위한 쿠버네티스 마스터] 애플리케이션 스케줄링과 라이프사이클 관리 - Init 컨테이너 (0) | 2021.01.19 |
댓글