일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- python popen
- python subprocess
- c3 축 없애기
- semanage
- regex_search
- influxdb 설치
- InfluxDB
- c3 축 가리기
- grafana dashboard
- c++ 정규식
- centos pyhon 설치
- c3 step graph
- gcc regex
- gcc 업데이트
- 백준
- snmp
- g++ 업데이트
- snmp test
- 정규식 문자열 출력
- c3 second
- linux시간으로 변경
- python os
- subporcess path
- 정규식 활용
- 정규식 컴파일
- CentOS7
- c3 초
- selinux port 등록
- 1697
- telegraf
- Today
- Total
리셋 되지 말자
[kubernetes] kubelet 본문
kubelet
워커노드에 존재하는 쿠버네티스 클러스터의 구성요소
Pod의 구성 내용(Pod Spec)을 받아서 컨테이너 런타임(CRI, Container Runtime Interface)으로 전달하고, Pod 안의 컨테이너들이 정상적으로 작동하는지 모니터링
쿠버네티스에서 Pod의 생성과 상태 관리 및 복구 등을 담당하는 매우 중요한 구성요소. 따라서 kubelet에 문제가 생기면 Pod가 정상적으로 관리되지 않음
정리 : kubelet은 Pod의 상태를 관리함
Pod 배포 - nginx
- nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: container-name
image: nginx
- yaml파일로 Pod 배포
[vagrant@m-k8s ~]$ sudo kubectl create -f nginx-pod.yaml
pod/nginx-pod created
Pod의 구성 내용을 파일 형태로 읽어 들여서 1개의 Pod를 임의의 워커 노드에 배포
(-f 옵션은 force가 아닌 filename 을 의미)
- 배포된 Pod 확인
[vagrant@m-k8s ~]$ sudo kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 2m5s
정상적으로 배포된 상태(Running) 인지 확인
- Pod가 배포된 워커 노드 확인
[vagrant@m-k8s ~]$ sudo kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-pod 1/1 Running 0 5m32s 172.16.103.129 w2-k8s <none> <none>
-o 옵션은 output의 약어로, 출력을 특정 형식으로 해주는 옵션. wide는 제공되는 출력 형식 중에서 출력 정보를 더 만히 표시해 주는 옵션
kubelet 중지 시, 동작 확인
위에서 확인한 nginx Pod가 배포된 워커 노드에서 진행
- kubelet 중지
[vagrant@w2-k8s ~]$ systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since 화 2021-07-13 13:20:20 KST; 1 day 4h ago
Docs: https://kubernetes.io/docs/
Main PID: 3796 (kubelet)
CGroup: /system.slice/kubelet.service
└─3796 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --network-plugin=cni --...
[vagrant@w2-k8s ~]$ sudo systemctl stop kubelet
[vagrant@w2-k8s ~]$ systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: inactive (dead) since 수 2021-07-14 17:55:04 KST; 2s ago
Docs: https://kubernetes.io/docs/
Process: 3796 ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS (code=exited, status=0/SUCCESS)
Main PID: 3796 (code=exited, status=0/SUCCESS)
- master 노드에서 nginx pod 삭제
[vagrant@m-k8s ~]$ sudo kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Running 0 13m
[vagrant@m-k8s ~]$ sudo kubectl delete pod nginx-pod
pod "nginx-pod" deleted
시간이 지나도 삭제가 되지 않음. Ctrl + C 로 삭제 취소
- nginx pod 상태 확인
[vagrant@m-k8s ~]$ sudo kubectl delete pod nginx-pod
pod "nginx-pod" deleted
^C
[vagrant@m-k8s ~]$ sudo kubectl get pod
NAME READY STATUS RESTARTS AGE
nginx-pod 1/1 Terminating 0 16m
상태가 Terminating (중지 중) 임을 확인. 하지만 kubelet이 동작하지 않는 상태라 pod가 삭제되지 않음
- worker 노드에서 kubelet 재시작
[vagrant@w2-k8s ~]$ sudo systemctl start kubelet
[vagrant@w2-k8s ~]$ systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since 수 2021-07-14 18:00:57 KST; 5s ago
Docs: https://kubernetes.io/docs/
Main PID: 9667 (kubelet)
CGroup: /system.slice/kubelet.service
└─9667 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=systemd --network-plugin=cni --...
- master 노드에서 nginx pod가 삭제되었는지 확인
[vagrant@m-k8s ~]$ sudo kubectl get pod
No resources found in default namespace.
정리 : kubectl이 동작하지 않으면, pod을 관리하는데 문제가 생긴다
'오케스트레이션' 카테고리의 다른 글
[kubernetes] Pod 생성 (0) | 2021.07.15 |
---|---|
[kubernetes] kube-proxy (0) | 2021.07.14 |
[kubernetes] kubectl (0) | 2021.07.14 |
[docker swarm] swarm을 이용한 클러스터 환경 구성하기 (0) | 2021.03.30 |
[kubernetes] 대시보드 설치 및 접속 (0) | 2021.03.25 |