컨트롤러 관리자 원리 분석는 Kubernetes

클러스터 책임 노드의 내부 관리 통제 센터, 클러스터 내 포드 복사 서비스 엔드 포인트 (엔드 포인트), 네임 스페이스 (네임 스페이스), 서비스 계정 (ServiceAccount), 등의 관리와 같은 자원 할당량 (ResourceQuota), 노드와 같은 컨트롤러 관리자 때 예기치 않은 다운 타임을 감지하고 자동 복구 프로세스를 수행합니다.

내부 컨트롤러 관리자가 복제 컨트롤러, 노드 컨트롤러, ResourceQuota 컨트롤러, 네임 스페이스 컨트롤러, ServiceAccount 컨트롤러, 토큰 컨트롤러, 서비스 컨트롤러 및 엔드 포인트 컨트롤러와 다른 컨트롤러를 포함, 컨트롤러는 각각의 특정 제어 흐름에 대한 책임이 있습니다.

1.1 복제 컨트롤러

복제 컨트롤러 컨트롤러 컨트롤러 관리자를 구별 자원의 사본을 복제 컨트롤러 오브젝트합니다. 자원 객체는 RC로 축약. 복제 제어기는 제어기의 복사본을 지칭

클러스터 컨트롤러 언제든지 중심적인 역할과 관련된 사본 포드 RC의 프리셋 번호의 사본을 보관해야합니다. 저쪽에 파괴, 그렇지 않으면 만들 수 있습니다. 만 항상의 포드를 다시 시작 정책은 포드의 작업을 관리 할 때. 포드가 만든 후에 사라지지 않습니다 때, 유일한 예외는 때 포드는 성공 또는 너무 오래 상태를 실패, 시스템이 자동으로 복구에 있습니다. 다음 컨트롤러와의 사본은 다른 노드의 작업 실행 포드 복사본을 다시 만들어야합니다.

포드 템플릿 RC는 몰드처럼 멀리 다이로부터 무언가를 제조의 사이에는 관계가 없다. 포드를 만든 후, 어떻게 변화의 템플릿은 포드에 영향을 미치지 않습니다. 포드에서 RC는 제어 레이블을 수정할 수 있습니다. 마이그레이션을위한 클러스터 디버깅에서 데이터 복원. 포드 마이그레이션 한 후, RC 대신 새로운 포드 전 포드를 작성합니다. 당신은 포드 RC 제어를 삭제하려면 RC는, 이전에 만든 삭제 포드에 영향을주지 않습니다, RC의 사본의 수를 0으로 설정

다음과 같은 의무 컨트롤러의 사본

(1) 현재의 클러스터 포드 복사본 만 N 포드 예의 번호, N RC 시간이 정의되도록

(2) 시스템 확장 spec.replicas 속성 값 RC 및 부피 감소를 조정함으로써 달성된다.

(3) 롤링의 템플릿 포드 RC (주로 미러 버전)을 변경하여 시스템을 업그레이드 구현합니다.

1.2 노드 컨트롤러

API 서버를 etcd에 업데이트 정보를 수신 한 후, API 서버에 타이밍 보고서 상태 정보를 kubelet. Etcd 스토리지 노드 정보는 노드 건강, 자원 노드, 노드 이름, 노드 주소 정보, 운영 체제 버전, 도커 버전, kubelet 버전이 포함되어 있습니다. 노드는 건강 상태 거짓과 세 준비 알 수없는 미지의 준비 안 사실이 포함되어 있습니다.

--clustr-CIDR 파라미터를 설정하면, 각각의 규격에 대한 설정 시간 (1) 개시도 없다. 노드 PodCIDR 노드는 CIDR 주소와 노드 Spec.PodCIDR CIDR 특성에 의해 제공된 어드레스를 생성한다. 이봐,하지만 CIDR 주소 충돌의 다양한 라인을 방지합니다.

(2)을 순차적으로 판독 노드 내용 nodeStatusMap, nodeStatusMap 기지국 제어기와 노드 정보 비교에 저장된 노드 정보를 변경하는 여러 가지 시도 노드 상태 정보. 노드가 결정되지 kubelet 수신 정보를 전송하거나 처음으로 수신, 또는 노드의 상태가 비정상하게됩니다. NodeStatusMap 그 노드의 저장된 상태 정보 및 타임 노드 기지국 제어기와 노드의 상태 변화 검출 시간과 같은 어떤 시스템에서. 노드 정보가 변경된 경우, 노드 상태 정보를 저장합니다. 그리고 시간이되는 시스템 노드 노드 컨트롤러 노드의 상태 변화 검출 시간과 시간이 아니다. 노드가 메시지를 수신하지만, 상태가 변경되지 않았지만, 이봐 부서 저장된 상태 정보, 위치를 검출 시간과 노드 컨트롤러의 시스템 시간과 노드, 시간이 지남에 따라 노드의 상태가 변경 같은 시간에 노드 상태 정보 변경에 의해 마지막 노드. 시간이 노드 상태 정보를받지 못한 경우, 설정 노드의 상태를 알 수 있으며, 상태를 절약 API 서버 노드를 통해.

(3) 하나 하나를 판독 한 노드 정보를, 비 - 레디 상태는, 노드가 큐에 추가되는 경우 노드 상태는 삭제하거나 큐로부터의 노드를 삭제한다. 노드 상태가 아닌 준비 상태, 그리고 시스템이 클라우드 공급자를 지정하는 경우, 노드, 노드가 실패 찾아 삭제, 클라우드 제공자보기 노드라는 정보를 etcd하고, 포드에 관한 노드 정보 및 기타 리소스를 삭제한다.

1.3 ResourceQuota 컨트롤러

자원 할당량 관리는 언제든지 다시 지정된 자원 객체가 과도한 물리적 시스템 자원을 차지하지 않도록 비즈니스 프로세스의 설계 또는 구현의 특정 결함을 방지하고, 심지어 장애를 클러스터의 계획되지 않은 다운 타임, 원활한 운영과 안정성을 실행할 수있는 전체 시스템을 일으킬 성격은 매우 중요한 역할을한다.

는 Kubernetes 자원 할당량 관리의 다음과 같은 세 가지 수준을 지원합니다.

(1) 컨테이너의 레벨은 CPU와 메모리를 제한

포드 내의 모든 용기에 대한 가용 자원 (2) 포드의 레벨은 제한된다.

PV (3) 네임 스페이스 수준의 수, 포드의 수, RC의 수, 서비스 번호, ResourceQuota 번호, Secert의 수를 포함한 자원 제약의 네임 스페이스 멀티 테넌트 (multi-tenant) 수준, 유지 될 수있다.

허용 제어 허용 제어에 의해 제어 할당량 관리, 허용 제어는 두 가지 방법, 즉 LimitRanger 및 ResourceQuota에서 현재의 할당량 제한을 제공는 Kubernetes. LimitRanger 범위 포드 및 컨테이너, ResourceQuota이 네임 스페이스에 작용하는 경우, 네임 스페이스는 자원의 모든 종류의 총 사용을 제한합니다.

1.4 네임 컨트롤러

사용자 Apiserver하여 새 네임 스페이스를 만들고에 etcd에 저장 할 수 있습니다, 네임 스페이스 컨트롤러는 주기적으로 API 서버를 통해 이러한 네임 스페이스 정보를 읽어보십시오. 네임 스페이스 API가 삭제 우아한로 표현되는 경우, 상태는 종단에 이름 공간 안녕을 설정하고 네임 스페이스 컨트롤러는이 네임 스페이스에있는 모든 자원 객체를 삭제에서 etcd에 저장.

네임 상태가 종료한다 NamespaceLifecycle의 입학 컨트롤러로 설정되면 플러그 네임 해당하는 새로운 리소스를 생성 방지한다. 네임 스페이스 네임 스페이스 컨트롤러 마감 후, 모든 자원 객체를 삭제 네임 스페이스의 마무리 작업을 수행, 네임 스페이스 spec.finalizers 도메인의 정보를 삭제합니다.

네임 스페이스 마감 삭제 설정하고 spec.finalizers 필드가 비어있는 경우, 네임 스페이스 컨트롤러는 API 서버를 통해 네임 스페이스 자원을 삭제합니다.

1.5 서비스 컨트롤러 与 엔드 포인트 컨트롤러

엔드 포인트는 모든 창의 주소는 해당 서비스의 사본에 액세스 나타내고, 엔드 포인트 컨트롤러는 생성 및 모든 엔드 포인트 오브젝트의 제어를 관리 할 책임이있다. 서비스가 삭제 된 경우 서비스의 변화와 포드의 해당 사본을 모니터링에 대한 책임, 삭제와 같은 이름의 서비스 끝점 객체. 새로운 서비스를 만들거나 수정 한 경우, 서비스에 따라 관련 정보 포드 목록을 확보 한 다음 개체를 해당 서비스 끝점을 만들거나 업데이트합니다. 포드는 이벤트의 해당 대상 서비스의 업데이트 엔드 포인트를 모니터링하는 경우

각 서비스 노드 구하는 종점로드 밸런싱 서비스 각각에 KUBE 프록시 방법.

추천

출처www.cnblogs.com/lgh344902118/p/11367670.html