본문으로 바로가기 본문 바로가기
WIKI 기술 지식 베이스

Kubernetes 시스템 요구 사항

원문 보기 위키 갱신

Kubernetes에 Calico Open Source를 설치하기 전에 충족해야 하는 클러스터, 커널, 플랫폼 요구 사항을 정리한 문서예요. 노드 아키텍처와 Linux 커널 버전, 방화벽 포트, Kubernetes 버전 등 설치 전에 확인할 항목을 한눈에 볼 수 있어요. 권장 배포판을 쓴다면 대부분 이미 충족하고 있을 거예요.

출처: 문서

본문

노드 요구 사항

  • x86-64, arm64, ppc64le 또는 s390x 프로세서
  • Calico가 호스트의 cali* 인터페이스를 관리할 수 있어야 해요. IPIP가 활성화된 경우(기본값) Calico는 tunl* 인터페이스도 관리할 수 있어야 해요. VXLAN이 활성화된 경우 vxlan.calico 인터페이스도 관리할 수 있어야 해요.
  • 필수 의존성을 갖춘 Linux 커널 5.10 이상. 다음 배포판들은 필요한 커널과 의존성을 갖추고 있고, Calico와 잘 동작하는 것으로 알려져 있어요.

    • Ubuntu 20.04 이상
    • RHEL 8 이상
    • Debian 10 이상
    • BottleRocket 1.47 이상
    • Talos 1.6 이상

SECONDARY: 위 목록 대부분을 포함해 많은 Linux 배포판에는 NetworkManager가 들어 있어요. 기본적으로 NetworkManager는 Calico가 인터페이스를 관리하는 것을 허용하지 않아요. 노드에 NetworkManager가 있다면 Calico를 설치하기 전에 NetworkManager가 Calico 인터페이스를 제어하지 못하게 하기 단계를 완료하세요.

  • 사용 중인 Linux 배포판에 Firewalld나 다른 iptables 관리 도구가 기본 설치되어 있다면 비활성화해야 해요. 이런 도구들은 Calico가 추가한 규칙을 방해해서 예상치 못한 동작을 일으킬 수 있어요.

SECONDARY: 호스트 방화벽이 필요하다면 Calico HostEndpoint와 GlobalNetworkPolicy로 구성할 수 있어요. 구성에 대한 자세한 내용은 호스트와 VM을 위한 정책을 참고하세요.

키/값 저장소

Calico에는 모든 Calico 컴포넌트가 접근할 수 있는 키/값 저장소가 필요해요. Kubernetes에서는 Calico가 etcdv3 클러스터에 직접 접근하도록 설정하거나, Kubernetes API 데이터스토어를 사용하도록 설정할 수 있어요.

네트워크 요구 사항

구성에 따라 필요한 트래픽을 호스트와 방화벽이 허용하도록 확인해요.

구성 호스트 연결 유형 포트/프로토콜
Calico 네트워킹 (BGP) 전체 양방향 TCP 179
IP-in-IP 활성화된 Calico 네트워킹 (기본값) 전체 양방향 IP-in-IP, 흔히 프로토콜 번호 4로 표기
VXLAN 활성화된 Calico 네트워킹 전체 양방향 UDP 4789
Typha 활성화된 Calico 네트워킹 Typha 에이전트 호스트 수신 TCP 5473 (기본값)
IPv4 WireGuard 활성화된 Calico 네트워킹 전체 양방향 UDP 51820 (기본값)
IPv6 WireGuard 활성화된 Calico 네트워킹 전체 양방향 UDP 51821 (기본값)
flannel 네트워킹 (VXLAN) 전체 양방향 UDP 4789
전체 kube-apiserver 호스트 수신 보통 TCP 443 또는 6443*
etcd 데이터스토어 etcd 호스트 수신 공식TCP 2379이지만 다를 수 있음

* --secure-port 플래그로 kube-apiserver에 전달한 값이에요. 찾기 어렵다면 kubectl get svc kubernetes -o yaml이 반환하는 targetPort 값을 확인해 보세요.

권한

Calico에 CAP_SYS_ADMIN 권한이 있도록 확인해요.

필요한 권한을 제공하는 가장 간단한 방법은 Calico를 root로 실행하거나 privileged 컨테이너로 실행하는 거예요.

Kubernetes 데몬셋으로 설치하면 Calico는 privileged 컨테이너로 실행되어 이 요구 사항을 충족해요. 이를 위해서는 kubelet이 privileged 컨테이너 실행을 허용해야 해요. 두 가지 방법이 있어요.

Kubernetes 요구 사항

지원 버전

Calico v3.33을 다음 Kubernetes 버전에서 테스트해요. 다른 버전에서도 동작할 수 있지만, 적극적으로 테스트하지는 않아요.

  • 1.35
  • 1.36
  • 1.37

더 새로운 버전에서도 동작할 수 있지만, 새 Kubernetes 버전에 맞춰 테스트된 Calico 버전으로 업그레이드하는 것을 권장해요.

CNI 플러그인 활성화

Calico는 컨테이너 런타임에 CNI 플러그인으로 설치되어야 해요.

이 설치는 Kubernetes 기본 CNI 구성 디렉터리(/etc/cni/net.d)와 바이너리 디렉터리(/opt/cni/bin)를 사용해야 해요.

다른 네트워크 제공자

일반적으로 Calico를 다른 네트워크 제공자와 함께 사용할 수는 없어요.

주목할 만한 예외는 다음과 같아요:

이미 다른 CNI를 사용하는 클러스터에서는 Calico로 마이그레이션할 수 없어요.

지원되는 kube-proxy 모드

Calico는 다음 kube-proxy 모드를 지원해요:

IP 풀 구성

파드 IP 주소용으로 선택한 IP 범위는 네트워크의 다른 IP 범위와 겹치면 안 돼요. 여기에는 다음이 포함돼요:

  • Kubernetes 서비스 클러스터 IP 범위
  • 호스트 IP가 할당되는 범위

커널 의존성

SUCCESS: 권장 배포판 중 하나를 사용 중이라면 이미 이 요구 사항들을 충족하고 있어요.

배포판과 커널 버전이 매우 다양하기 때문에, Calico를 실행하는 데 필요한 커널 모듈의 정확한 이름을 특정하기는 어려워요. 하지만 일반적으로 다음이 필요해요:

  • iptables 모듈("legacy"와 "nft" 변형 모두 지원). 이 모듈들은 보통 매칭 조건마다 하나씩, 그리고 동작마다 하나씩 수많은 작은 모듈로 나뉘어 있어요. Calico에는 다음이 필요해요:

    • "base" 모듈(클러스터에서 IPv6를 활성화했다면 IPv6 버전 포함)
    • 최소한 다음 매칭 조건: set, rpfilter, addrtype, comment, conntrack, icmp, tcp, udp, ipvs, icmpv6 (커널에서 IPv6를 활성화한 경우), mark, multiport, rpfilter, sctp, ipvs (kube-proxy를 IPVS 모드로 사용하는 경우)
    • 최소한 다음 동작: REJECT, ACCEPT, DROP, LOG
  • IP sets 지원.

  • Netfilter Conntrack 지원이 컴파일되어 있어야 해요(SCTP를 사용한다면 SCTP 지원 포함).

  • IPVS 모드의 kube-proxy를 사용한다면 IPVS 지원.

  • Calico 네트워킹을 해당 모드로 사용한다면 IPIP, VXLAN, WireGuard 지원.

  • eBPF(tc 훅 지원 포함)와 XDP (eBPF 데이터 플레인을 사용하려는 경우).

더 알아보기 (Learn more)

설치 전에 아키텍처, 커널 버전, 방화벽 포트, Kubernetes 버전 요구 사항을 미리 확인하면 시행착오를 크게 줄일 수 있어요. NetworkManager나 Firewalld가 Calico의 인터페이스 관리와 iptables 규칙을 방해하지 않도록 꼭 점검하세요. 권장 배포판이라면 커널 의존성은 이미 갖춰져 있을 가능성이 높아요.