Kubernetes의 CNI 및 CSI 플러그인에 대한 지식 소개

3492 단어 운원생
문서 목록
  • 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뿐만 아니라 스와프와 메소스 등 편성 시스템에서도 사용할 수 있다
  • 순용기화 배치
  • 좋은 웹페이지 즐겨찾기