반응형
개요
- 쿠버네티스에는 다양한 컨트롤러가 있다.
- 하나의 컨트롤러는 마스터 선박 내의 사무실 또는 부서와 같다.
- 각각의 책임이 있다.
- 1순위.. 지속적으로 선박의 상태를 관리
- 예. "선박" 사무실
- 선박을 모니터링하고, 필요한 조치를 취한다
- 예. "선박 리커버리 사무실"
- "선박 도착, 떠남 사무실"
- "선박 컨테이너 관리 사무실"
- 선박의 손상이나, full 을 관리함.
- 예. "선박" 사무실
- 2순위
- 상황을 시정하기 위한 필요조치
- 쿠버네티스 용어로 컨트롤러는 시스템 내의 다양한 구성요소의 상태를 지속적으로 모니터링하는 프로세스입니다.
- 전체 시스템을 원하는 기능의 상태로 만들기 위해 노력합니다.
- 예
- 노드컨트롤러 : 노드의 상태를 모니터링하고, 필요한 애플리케이션을 계속 실행하기 위해 조치한다.
- kub-apiserver 를 통해 이 행위 수행
- 노드 컨트롤러는 5초마다 노드의 상태를 확인한다.
- => 노드로부터 하트비트 장애 발생시, 인지하고, 노드의 상태를 모니터링한다.
-
- 하트비트 장애 발생
- 40초 복구 기다림
- unreachable 마킹
- 5분의 복구시간이 주어짐
- 복구에 실패한 경우, node 에 할당된 pod들을 제거하고, 다른 건강한 노드에 pod 를 이전한다.
-
- 만약에 Pod 중에 하나가, replica controller 였을 경우, replica sets 의 상태를 확인하고, 원하는 수의 replica set 을 유지하게 확인하는 역할을 한다. pod 는 set 내에서 항상 사용할 수 있습니다.
- 노드컨트롤러 : 노드의 상태를 모니터링하고, 필요한 애플리케이션을 계속 실행하기 위해 조치한다.
- 컨트롤러의 종류는 매우 많고, 이것은 일종의 쿠버네티스의 두뇌 이다.
- Q. 이제 이러한, 컨트롤러가 어떻게 표시되고, 클러스터 어디에 위치하는가?
- A. 모두 kubernetes controller manager라고 알려진 단일 프로세스로 패키징된다.
Installing kube-controller-manager
$wget https://storage.googleapis.com/kubernetes-release/release/v1.13.0/bin/linux/amd64/kube-controller-manager
#kube-controller-manager.service
ExecStart=/usr/local/bin/kube-controller-manager \\
--address=0.0.0.0 \\
--cluster-cidr=10.200.0.0/16 \\
--cluster-name=kubernetes \\
--cluster-signing-cert-file=/var/lib/kubernetes/ca.pem \\
--cluster-signing-key-file=/var/lib/kubernetes/ca-key.pem \\
--kubeconfig=/var/lib/kubernetes/kube-controller-manager.kubeconfig \\
--leader-elect=true \\
--root-ca-file=/var/lib/kubernetes/ca.pem \\
--service-account-private-key-file=/var/lib/kubernetes/service-account-key.pem \\
--service-cluster-ip-range=10.32.0.0/24 \\
--use-service-account-credentials=true \\
--v=2\\
--node-monitor-period=5s\\ #1
--node-monitor-grace-period=40s\\#1
--pod-eviction-timeout=5m0s\\#1
--controllers stringSlice Default: [*] #2
A list of controllers to enable. '*' enables all on-by-default controllers, 'foo' enables the controller named 'foo', '-foo' disables the controller named 'foo'.
All controllers: attachdetach, bootstrapsigner, clusterrole-aggregation, cronjob, csrapproving, csrcleaner, csrsigning, daemonset, deployment, disruption, endpoint, garbagecollector, horizontalpodautoscaling, job, namespace, nodeipam, nodelifecycle, persistentvolume-binder, persistentvolume-expander, podgc, pv-protection, pvc-protection, replicaset, replicationcontroller, resourcequota, root-ca-cert-publisher, route, service, serviceaccount, serviceaccount-token, statefulset, tokencleaner, ttl, ttl-after-finished
Disabled-by-default controllers: bootstrapsigner, tokencleaner
-
- 노드 컨트롤러도 kube-controller-manager 의 기본 설정 중의 일부임을 기억하자.
- 활성화할 컨트롤러를 지정하는데 사용하는
controllers
라는 옵션이 있다. 기본적으로, 모두 활성이지만, 일부만되게 선택할 수 있다.
기존 클러스터에서 Kube Conroller Manger 옵션 보는법
- 클러스터 설정 방법마다 다르다. 여기에선 kubeadme 로 배포된 경우만 보여줌.
kubectl pod 로 확인
view api-server - kubeadme
$kubectl get pods -n kube-system
# .kubeadme로 클러스터를 설정한 경우, kube-api server를 kube-system namespace의 마스터 노드에 pod 로 배포한다.
- .kubeadme로 클러스터를 설정한 경우, kube-system namespace의 마스터 노드에 pod 로 배포한다.
pod discription 확인
- 만약에 pod definition 옵션들을 보고 싶은경우, etc kubernetes manifests 폴더에 가면된다.
- yaml
- service
마스터 노드에서 ps랑 option 확인
반응형
'독후감' 카테고리의 다른 글
Chap17. Kubelet (0) | 2022.03.07 |
---|---|
Chap 16. Kube Scheduler (0) | 2022.03.07 |
Chap14. Kube-API Server (0) | 2022.03.07 |
Chap11-13. ETCD (0) | 2022.03.07 |
CKA udemy 강의 Core Concept 1 - main structure (0) | 2022.03.07 |