카테고리 없음

칼리코 아키텍쳐

미니대왕님 2023. 4. 11. 12:36

참고 URL

https://docs.tigera.io/calico/latest/reference/architecture/overview

 

Component architecture | Calico Documentation

Learn the basic Calico components.

docs.tigera.io

칼리코 아키텍쳐

다음 다이어그램은 Kubernetes의 필수 및 선택적 Calico 구성요소, 네트워킹 및 네트워크 정책이 있는 온프레미스 배치를 보여줍니다.

Calico components

클라우드 오케스트레이터 플러그인

Calico API 서버

주요 작업 : Calico 리소스를 직접 관리할 수 있습니다 kubectl.

Felix

주요 작업 : 해당 호스트의 끝점에 대해 원하는 연결을 제공하기 위해 호스트에 필요한 모든 항목과 경로 및 ACL을 프로그래밍합니다. 끝점을 호스팅하는 각 컴퓨터에서 실행됩니다. 에이전트 데몬으로 실행됩니다. 펠릭스 리소스 .

특정 오케스트레이터 환경에 따라 Felix는 다음을 담당합니다.

  • 인터페이스 관리
  • 커널이 해당 끝점의 트래픽을 올바르게 처리할 수 있도록 인터페이스에 대한 정보를 커널에 프로그래밍합니다. 특히, 호스트가 호스트의 MAC으로 각 워크로드의 ARP 요청에 응답하도록 하고 관리하는 인터페이스에 대한 IP 포워딩을 활성화합니다. 또한 프로그래밍이 적절한 시간에 적용되도록 인터페이스를 모니터링합니다.
  • 경로 프로그래밍
  • 프로그램은 Linux 커널 FIB(Forwarding Information Base)로 호스트의 엔드포인트로 라우팅됩니다. 이렇게 하면 호스트에 도착하는 엔드포인트로 향하는 패킷이 적절하게 전달됩니다.
  • ACL 프로그래밍
  • 유효한 트래픽만 엔드포인트 간에 전송되고 엔드포인트가 Calico 보안 조치를 우회할 수 없도록 ACL을 Linux 커널에 프로그래밍합니다.
  • 상태보고
  • 네트워크 상태 데이터를 제공합니다. 특히 호스트를 구성할 때 오류와 문제를 보고합니다. 이 데이터는 네트워크의 다른 구성 요소 및 운영자가 볼 수 있도록 데이터 저장소에 기록됩니다.
메모

calico/nodeFelix가 BIRD 및 confd 없이 실행되는 정책 전용 모드 에서 실행할 수 있습니다 . 이는 호스트 간 경로 배포 없이 정책 관리를 제공하며 관리형 클라우드 공급자와 같은 배포에 사용됩니다. CALICO_NETWORKING_BACKEND=none노드를 시작하기 전에 환경 변수를 설정하여 이 모드를 활성화합니다 .

BIRD

주요 작업 : Felix에서 경로를 가져오고 호스트 간 라우팅을 위해 네트워크의 BGP 피어에 배포합니다. Felix 에이전트를 호스팅하는 각 노드에서 실행됩니다. 오픈 소스, 인터넷 라우팅 데몬. 

BGP 클라이언트는 다음을 담당합니다.

  • 경로 분포
  • Felix가 Linux 커널 FIB에 경로를 삽입하면 BGP 클라이언트가 이를 배포의 다른 노드에 배포합니다. 이렇게 하면 배포를 위한 효율적인 트래픽 라우팅이 보장됩니다.
  • BGP 경로 리플렉터 구성중복성을 위해 여러 BGP 경로 리플렉터를 원활하게 배포할 수 있습니다. BGP 경로 리플렉터는 네트워크 제어에만 관여하며 엔드포인트 데이터는 통과하지 않습니다. Calico BGP 클라이언트가 FIB에서 경로 리플렉터로 경로를 알릴 때 경로 리플렉터는 해당 경로를 배포의 다른 노드로 알립니다.
  • BGP 경로 리플렉터는 표준 BGP 클라이언트가 아닌 대규모 배포용으로 구성되는 경우가 많습니다. BGP 경로 리플렉터는 BGP 클라이언트 연결을 위한 중심점 역할을 합니다. (표준 BGP에서는 모든 BGP 클라이언트가 메시 토폴로지의 다른 모든 BGP 클라이언트에 연결되어야 하므로 유지 관리가 어렵습니다.)

confd

주요 작업 : AS 번호, 로깅 수준 및 IPAM 정보와 같은 전역 기본값 및 BGP 구성의 변경 사항에 대해 Calico 데이터 저장소를 모니터링합니다. 오픈 소스, 경량 구성 관리 도구.

Confd는 데이터 저장소의 데이터 업데이트를 기반으로 BIRD 구성 파일을 동적으로 생성합니다. 구성 파일이 변경되면 confd는 BIRD를 트리거하여 새 파일을 로드합니다. confd  confd 프로젝트를 구성합니다 .

Dikastes

주요 작업 : Istio 서비스 메시에 대한 네트워크 정책을 시행합니다. 클러스터에서 Istio Envoy에 대한 사이드카 프록시로 실행됩니다.

(선택사항) Calico는 Linux 커널(iptables, L3-L4 사용)과 Dikastes라는 Envoy 사이드카 프록시를 사용하는 L3-L7 모두에서 워크로드에 대한 네트워크 정책을 적용하며 요청의 암호화 인증을 사용합니다. 여러 적용 지점을 사용하면 여러 기준에 따라 원격 끝점의 ID가 설정됩니다. 호스트 Linux 커널 적용은 워크로드 포드가 손상되고 Envoy 프록시가 우회되는 경우에도 워크로드를 보호합니다.

메모

Dikastes는 환경 변수 DIKASTES_HTTP_BIND_ADDR및 DIKASTES_HTTP_BIND_PORT. 이는 Kubernetes 작업이 성공적으로 완료될 수 있도록 단계적으로 종료할 수 있도록 하기 위한 것이며 Envoy의 /quitquitquit와 유사합니다. 예.curl -XPOST http://127.0.0.1:7777/terminate

CNI 플러그인

주요 작업 : Kubernetes 클러스터에 Calico 네트워킹을 제공합니다.

이 API를 Kubernetes에 제공하는 Calico 바이너리를 CNI 플러그인이라고 하며 Kubernetes 클러스터의 모든 노드에 설치해야 합니다. Calico CNI 플러그인을 사용하면 CNI 네트워킹 사양을 사용하는 모든 오케스트레이터에 대해 Calico 네트워킹을 사용할 수 있습니다. 표준 CNI 구성 메커니즘  Calico CNI 플러그인을 통해 구성됩니다 .

데이터 저장소 플러그인

주요 작업 : 각 노드가 데이터 저장소에 미치는 영향을 줄여 규모를 늘립니다. Calico CNI 플러그인 중 하나입니다 .

  • Kubernetes API 데이터 저장소(kdd)
    • 추가 데이터 저장소가 필요하지 않기 때문에 관리가 더 간단함
    • Kubernetes RBAC를 사용하여 Calico 리소스에 대한 액세스 제어
    • Kubernetes 감사 로깅을 사용하여 Calico 리소스 변경에 대한 감사 로그 생성
  • Calico와 함께 Kubernetes API 데이터 저장소(kdd)를 사용하는 이점은 다음과 같습니다.
    • 비 Kubernetes 플랫폼에서 Calico를 실행할 수 있습니다.
    • Kubernetes와 Calico 리소스 간의 문제 분리(예: 데이터 저장소를 독립적으로 확장할 수 있음)
    • 예를 들어 Kubernetes 클러스터와 연동하는 Calico 호스트 보호 기능이 있는 베어메탈 서버와 같이 단일 Kubernetes 클러스터 이상을 포함하는 Calico 클러스터를 실행할 수 있습니다. 또는 여러 Kubernetes 클러스터.
    etcd 관리자 가이드
  • etcdCalico 네트워크 및 구성 요소 간 통신을 위한 데이터 스토리지를 제공하는 일관되고 가용성이 높은 분산 키-값 저장소입니다. etcd비클러스터 호스트만 보호하도록 지원됩니다(Calico v3.1부터). 완전성을 위해 etcd 장점은 다음과 같습니다.

IPAM 플러그인

주요 작업 : Calico의 IP 풀 리소스를 사용하여 IP 주소가 클러스터 내의 포드에 할당되는 방식을 제어합니다. 대부분의 Calico 설치에서 사용되는 기본 플러그인입니다. Calico CNI 플러그인 중 하나입니다 .

kube- 컨트롤러

주요 업무 : Kubernetes API를 모니터링하고 클러스터 상태에 따라 작업을 수행합니다. kube 컨트롤러 .

컨테이너 tigera/kube-controllers에는 다음 컨트롤러가 포함됩니다.

  • 정책 컨트롤러
  • 네임스페이스 컨트롤러
  • 서비스 계정 컨트롤러
  • 워크로드 엔드포인트 컨트롤러
  • 노드 컨트롤러

Typha

주요 작업 : 각 노드가 데이터 저장소에 미치는 영향을 줄여 규모를 늘립니다. 데이터 저장소와 Felix 인스턴스 간에 데몬으로 실행됩니다. 기본적으로 설치되지만 구성되지는 않습니다. Typha 설명  Typha 구성 요소 .

Typha는 Felix 및 confd와 같은 모든 클라이언트를 대신하여 단일 데이터 저장소 연결을 유지합니다. 데이터 저장소 상태를 캐시하고 이벤트를 중복 제거하여 많은 리스너로 팬아웃할 수 있습니다. 하나의 Typha 인스턴스가 수백 개의 Felix 인스턴스를 지원할 수 있기 때문에 데이터 저장소의 로드를 크게 줄일 수 있습니다. 또한 Typha는 Felix와 관련이 없는 업데이트를 필터링할 수 있기 때문에 Felix의 CPU 사용량도 줄입니다. 대규모(노드 100개 이상) Kubernetes 클러스터에서는 API 서버에서 생성되는 업데이트 수가 노드 수에 따라 확장되기 때문에 이는 필수적입니다.

calicoctl

주요 작업 : Calico 개체를 생성, 읽기, 업데이트 및 삭제하는 명령줄 인터페이스입니다. calicoctl명령줄은 Calico 데이터 저장소에 대한 네트워크 액세스 권한이 있는 모든 호스트에서 바이너리 또는 컨테이너로 사용할 수 있습니다. 별도의 설치가 필요합니다. calicoctl .

클라우드 오케스트레이터

주요 작업 : 네트워크 관리를 위한 오케스트레이터 API를 Calico 데이터 모델 및 데이터 저장소로 변환합니다.

클라우드 공급자의 경우 Calico에는 각 주요 클라우드 오케스트레이션 플랫폼에 대한 별도의 플러그인이 있습니다. 이를 통해 Calico는 오케스트레이터에 긴밀하게 바인딩할 수 있으므로 사용자는 오케스트레이터 도구를 사용하여 Calico 네트워크를 관리할 수 있습니다. 필요한 경우 오케스트레이터 플러그인은 Calico 네트워크에서 오케스트레이터로 피드백을 제공합니다. 예를 들어 Felix 활동성에 대한 정보를 제공하고 네트워크 설정이 실패할 경우 특정 엔드포인트를 실패로 표시합니다.