문서 목록
CNI 플러그인 관련 지식 소개 K8S에서 CNI 플러그인을 어떻게 호출합니까? 사용자 구성 K8S 호출 CNI 플러그인은 어떻게 작동합니까? Pod에 네트워크 케이블 꽂기: CNI 플러그인 구성 도구Pod의 네트워크 카드 및 IP 구성
Pod에 네트워크 연결: CNI 플러그인 백엔드 프로그램은 집단 내부의 전송 규칙을 유지한다 CSI 플러그인 관련 지식 소개 CSI 이전 컨테이너 스토리지 구성: FlexVolume CSI 특징 CNI 플러그인 지식 소개
CNI(Container Network Interface, 컨테이너 네트워크 인터페이스)는 K8S에서 컨테이너 네트워크 구성을 위해 정의한 인터페이스 표준입니다.CNI 플러그인은 CNI 표준을 준수하는 네트워크 구성 도구입니다.
CNI 플러그인은 K8S 플러그인 시스템 중 가장 많은 수량과 구현이 가능한 플러그인 유형이다.
K8S는 어떻게 CNI 플러그인을 호출합니까?
사용자 설정
노드의 /etc/cni/net.d/xxnet.conf
에 CNI 플러그 인에 대한 구성 정보를 기록합니다.
CNI 플러그인 구성 도구(실행 파일)를 노드의 /opt/cni/bin/xxnet
에 배치 CNI 플러그인 백그라운드 시작K8S 호출
사용자가 Pod를 만들었습니다. 이 Pod는 K8S에서 현재 노드로 스케줄링되었습니다 Kubelet이Pod에 요구되는 컨테이너를 만들었습니다 Kubelet은 /etc/cni/net.d/xxnet.conf
의 설정 정보와 CNI 표준 정의에 따라 CNI 플러그인을 실행한다 CNI 플러그인으로 네트워크 구성 프로세스 수행CNI 플러그인은 어떻게 실행됩니까?
Pod에 네트워크 케이블 꽂기: CNI 플러그인 구성 도구Pod의 NIC 및 IP 구성
가상 NIC 생성 보통veth-pair를 사용하는데 한쪽은 Pod의 네트워크 namespace에 있고 한쪽은 루트namespace에 있다(관련 소개는 네트워크 namespace) 클러스터에 고유한 IP 주소 할당 일반적으로 Pod 세그먼트를 Node 세그먼트로 나누고 각 Pod는 Node 세그먼트에서 IP를 분배한다.
Pod 구성에 할당된 IP 및 라우팅 할당된 IP를 Pod의 NIC에 구성 재Pod NIC에 클러스터 네트워크 세그먼트의 라우팅 테이블 구성 노드에서 Pod의 피어 NIC 구성 IP 주소 라우팅 테이블 Pod 및 할당된 IP를 K8S에 피드백
Pod에 네트워크 연결: CNI 플러그인 데몬은 클러스터 내부의 전달 규칙을 유지 관리합니다.
CNI Daemon 프로세스가 클러스터에 있는 모든 Pod 및 Node의 IP 주소를 가져옵니다. Pod 및 Node에 대한 K8S APIServer의 네트워크 정보 수신 CNI Daemon 프로세스 구성 네트워크 연결 Pod 간 IP 액세스 다음 세 가지 방법으로 모든 Node에 채널을 생성합니다. 터널로 통신, 즉 노드를 제어하여 Overlay 구성 모든 트래픽이 터널을 통해 다른 Node에 도달
기본 네트워크에 의존하지 않음 프로토콜 전환은 시간이 많이 걸리고 효율이 낮다 라우팅으로 통신(예: VPC 라우팅 테이블) CNI 플러그인은 네트워크의 공유기 쓰기 루트표를 직접 제어하여 노드 간의 연결을 실현한다 부분은 하부 네트워크에 의존하고 CNI 플러그인은 네트워크의 공유기를 직접 제어하는 능력을 요구한다 표준 TCP/IP 프로토콜 구현, 중간 속도 기본 네트워크로 통신(예: BGP 라우팅) CNI 플러그인은 하부 네트워크의 전송 규칙을 직접 제어하여 노드 간의 연결을 실현한다 기본 네트워크에 전적으로 의존 기본 프로토콜은 맞춤형 프로토콜일 수도 있고 효율이 가장 높다 Pod 및 Node의 네트워크 정보에 따라 Pod의 IP를 채널과 연결 Linux 라우팅(가장 일반), FDB 중계, OVS 스트림 테이블 등 CSI 플러그인 관련 지식 소개
CSI(Container Storage Interface, 컨테이너 스토리지 인터페이스)는 K8S에서 컨테이너 스토리지 구성을 위해 정의한 인터페이스 표준입니다.CSI 플러그인은 CSI 표준을 준수하는 스토리지 구성 도구입니다.
CSI는 Local 등 다양한 로컬 스토리지 시나리오와 NFS 같은 네트워크 스토리지 시나리오를 포함한 현재 주류의 대부분의 스토리지 시나리오를 지원합니다.
CSI 이전 컨테이너 스토리지 구성: FlexVolume
FlexVolume 플러그인은 CSI와 다르게 작동하는 스토리지 구성을 위한 인터페이스 세트를 정의합니다.
사용자 설치: FlexVolume 실행 파일을 지정된 위치에 배치합니다(기본값: /usr/libexec/kubernetes/kubelet-plugins/volume/exec
. FlexVolume 플러그인은 본질적으로 Node 숙박 호스트 공간에 존재하는 실행 가능한 파일이다 K8S 호출: 설정 저장소가 Node에 도착하면 kubelet은 FlexVolume 표준 정의에 따라 지정한 플러그인을 실행하고 플러그인으로 용기의 저장소 설정을 완성합니다 FlexVolume 플러그인의 호출은 본질적으로 Node 숙박 호스트 공간에서 명령 (프로그램) 을 실행하는 것이다 FlexVolume 표준은 본질적으로 명령을 실행할 때의 명령행 입력 형식에 대한 규정 FlexVolume의 단점:
숙성 호스트에서 운행하는 지령은 반드시 숙성 호스트에 의존을 설치해야 하는 상황이 존재한다. 이런 의존은 Node에서 운행하는 용기에 좋지 않은 영향을 미칠 수 있다 FlexVolume는 K8S에서만 사용할 수 있지만 세계에서 K8S의 편성 시스템만 있는 것은 아니다 FlexVolume의 디자인은 용기화 배치를 고려하지 않았다CSI 특징
K8S뿐만 아니라 스와프와 메소스 등 편성 시스템에서도 사용할 수 있다 순용기화 배치