호스트 pod
Kubernetes(k8s) 는 구글 (Inside Google: Borg) 의 오픈 소스 컨테이너 클러스터 관리 시스템입니다. Docker 기술을 기반으로 컨테이너화 애플리케이션에 배포 및 운영, 자원 스케줄링, 서비스 검색, 동적 확장 등 다양한 완벽한 기능을 제공하여 대규모 컨테이너 클러스터 관리의 편리함을 높였습니다.
2.Kubernetes 핵심 구성 요소 설명
Kubernetes 클러스터에는 마스터 노드와 minion 노드의 두 가지 주요 노드 유형이 있습니다.
Minion 노드는 실제로 Docker 컨테이너를 실행하는 노드이며 노드에서 실행 중인 Docker 와 상호 작용하고 프록시 기능을 제공합니다.
마스터 노드는 Minion 노드와 상호 작용하여 클러스터 운영을 관리할 수 있는 클러스터 관리를 위한 일련의 API 인터페이스를 제공합니다.
Apiserver: 핵심 객체의 추가, 삭제, 수정, 쿼리 등을 캡슐화하고, RESTFul API 인터페이스를 제공하고, etcd 를 통해 지속성을 달성하며, 객체 일관성을 유지하는 kubernetes 클러스터와의 사용자 상호 작용에 대한 포털입니다.
스케줄러: 클러스터 리소스의 일정 및 관리를 담당합니다. 예를 들어, pod 가 비정상적으로 종료되어 시스템을 재분배해야 하는 경우 스케줄러는 일정 예약 알고리즘을 통해 가장 적합한 노드를 찾을 수 있습니다.
Controller-manager: replicationController 가 정의한 복제본 수가 실제로 실행 중인 POD 수와 일치하는지 확인하는 데 주로 사용되며 서비스-POD 매핑 관계도 항상 최신 상태로 유지됩니다.
Kubelet: minion 노드에서 실행되며 컨테이너 시작 및 중지, 실행 상태 모니터링과 같은 노드의 Docker 와 상호 작용합니다.
프록시: minion 노드에서 실행되며 pod 에 프록시 기능을 제공합니다. Etcd 에서 정기적으로 서비스 정보를 가져오고 서비스 정보에 따라 iptables 를 수정하여 트래픽 전달을 수행합니다 (초기 버전은 프로그램을 통해 직접 전달 기능을 제공하여 비효율적입니다. ) 트래픽을 액세스할 pod 가 있는 노드로 전달합니다.
ETCD: 키 값은 kubernetes 에 대한 정보를 저장하는 데이터베이스를 저장합니다.
플란넬: 플란넬은 CoreOS 팀이 Kubernetes 를 위해 설계한 오버레이 네트워킹 도구이며 별도의 다운로드 배포가 필요합니다.
Docker 를 시작할 때 컨테이너와 상호 작용하는 데 사용할 IP 주소가 있다는 것을 알고 있습니다. 만약 우리가 그것을 관리하지 않는다면, 이 IP 주소는 모든 시스템에서 같을 수 있으며, 이 컴퓨터에서만 통신을 할 수 있기 때문에 우리는 다른 시스템의 Docker 컨테이너에 액세스할 수 없습니다.
플란넬의 목적은 클러스터의 모든 노드에 대한 IP 주소 사용 규칙을 다시 계획하여 서로 다른 노드의 컨테이너가 동일한 인트라넷에 속하지 않는 IP 주소를 얻을 수 있도록 하고, 다른 노드에 속하는 컨테이너는 인트라넷 IP 를 통해 직접 통신할 수 있도록 하는 것입니다.
3.Kubernetes 의 핵심 개념
콩꼬투리
한 노드에서 실행되는 여러 관련 컨테이너의 조합입니다. Pod 에 포함된 컨테이너는 동일한 네트워크 이름 공간, IP 주소 및 포트를 사용하여 동일한 호스트에서 실행되며 localhost 를 통해 통신할 수 있습니다.
Pod 는 Kurbernetes 의 생성, 스케줄링 및 관리를 위한 가장 작은 단위로서 컨테이너보다 더 높은 추상화 수준을 제공하여 배포 및 관리를 더욱 유연하게 합니다. Pod 에는 컨테이너 하나 또는 여러 개의 관련 컨테이너가 포함될 수 있습니다.
컨트롤러를 복제하다
복제 컨트롤러는 Pod 복제본을 관리하고 클러스터에 지정된 수의 Pod 복제본이 있는지 확인하는 데 사용됩니다.
클러스터의 복제본 수가 지정된 수보다 크면 지정된 수를 제외한 중복 컨테이너 수가 중지됩니다. 그렇지 않으면 지정된 수보다 적은 컨테이너 수가 시작되어 동일한 수량을 보장합니다.
복제 컨트롤러는 유연한 확장, 동적 확장 및 스크롤 업그레이드의 핵심입니다.
서비스
서비스는 Pod 의 논리적 모음과 해당 컬렉션에 액세스하는 정책을 정의하며 실제 서비스의 추상화입니다.
서비스는 통합 서비스 액세스 포털, 서비스 에이전트 및 검색 메커니즘을 제공하므로 백그라운드 Pod 가 어떻게 작동하는지 사용자가 알 필요가 없습니다.
라벨
Kubernetes 의 모든 API 객체는 일련의 K/V 키 값 쌍인 태그로 식별됩니다. 태그는 복제 제어기 및 서비스 작업의 기본이며, 태그를 통해 노드에서 실행 중인 Pod 를 연결합니다.
결절
노드는 Kubernetes 클러스터 구조에서 Pod 를 실행하는 서비스 노드 (또는 에이전트) 입니다.
노드는 Kubernetes 클러스터 작업의 단위로, 할당된 Pod 작업을 호스팅하는 데 사용되며 Pod 작업의 숙주.
4. 전제 조건 설정
Centos7 시스템 3 대 (1 master+2+2 node) 의 가상 시스템 3 대, 시스템 3 대의 방화벽, SELINUX 모두 종료. 나의 실험 환경은 온라인으로 액세스할 수 있고 기본 YUM 소스 코드를 사용할 수 있다.
5. 배포 계획
192.168.10.1# 마스터 노드 (etcd, kubernetes-;
192.168.10.2 # node1node (etcd, 쿠퍼 네이트 -Node
192.168.10.3 # 노드 2 (ETCD, 쿠버넷-노드, 부두 근로자, 플란넬)
6. 설치를 시작합니다
1: 주 서버에 설치
Yum 설치 kubernetes-master etcd 플란넬 -y
2 단계: 노드에 설치
Yum 설치 kubernetes-node etcd 플란넬 -y
단계 3: ETCD 클러스터 구성
마스터 노드에서 etcd 구성 파일을 편집합니다.
노드 1 에서 etcd 구성 파일을 편집합니다.
노드 2 노드에서 etcd 구성 파일을 편집합니다.
Etcd 클러스터가 여기에 배치되고 각 노드에서 시작됩니다.
Systemctl 부트 etcd
4 단계: 검증
6 단계: 주 서버에서 세 가지 서비스를 시작합니다.
단계 7:kubernetes 노드 설치
노드 2 노드에서 이 작업을 반복합니다.
8 단계: kubernetes 노드 서비스를 개별적으로 시작합니다.
7. 네트워크 구조
Kubernetes 클러스터의 네트워크 부분은 플러그인으로 설치되기 때문에 플란넬을 선택했습니다.
위의 설치 단계가 이미 설치되었습니다.
플란넬을 위한 지정된 네트워크 만들기
8. kubectl 명령 검사를 실행합니다.
주 서버에서 다음 명령을 실행하여 kubernetes 의 상태를 확인합니다.
9. 일반적인 디버깅 명령은 다음과 같습니다