Felix 구성 파트 4
Felix 구성 레퍼런스의 네 번째 파트예요. 앞 파트에서 이어지는 IP 포워딩 키부터 시작해서 IPv4/IPv6 라우트 우선순위, 인터페이스 제외·접두어·새로 고침 주기, IPv6 지원 여부 같은 기본 동작 키들이 이어져요. 이어서 Istio 연동과 VM 라이브 마이그레이션 수렴 시간, 로컬 서브넷 L2 도달성, MTU 감지 인터페이스 패턴, NATOutgoing 관련 설정, nftables flowtable 설정까지 다뤄요. 각 항목은 구성 파일 키와 환경 변수 탭으로 각각 확인할 수 있어요.
출처: 문서
본문
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IPForwarding |
| 설명 | Felix가 호스트 sysctl을 설정해 IP 포워딩을 켤지 제어해요. 워크로드 네트워킹에 Calico를 사용한다면 IP 포워딩이 필요해요. Calico를 호스트 보호 용도로만 쓰는 호스트에서만 꺼야 해요. BPF 모드에서는 커널 상호작용 때문에 IPForwarding을 켜거나 BPFEnforceRPF를 꺼야 해요. |
| 스키마 | Disabled, Enabled 중 하나 |
| 기본값 | Enabled |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPFORWARDING |
| 설명 | Felix가 호스트 sysctl을 설정해 IP 포워딩을 켤지 제어해요. 워크로드 네트워킹에 Calico를 사용한다면 IP 포워딩이 필요해요. Calico를 호스트 보호 용도로만 쓰는 호스트에서만 꺼야 해요. BPF 모드에서는 커널 상호작용 때문에 IPForwarding을 켜거나 BPFEnforceRPF를 꺼야 해요. |
| 스키마 | Disabled, Enabled 중 하나 |
| 기본값 | Enabled |
IPv4ElevatedRoutePriority
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IPv4ElevatedRoutePriority |
| 설명 | 우선순위를 높인(elevated) Calico 프로그래밍 IPv4 라우트의 라우트 우선순위 값이에요. 값이 클수록 우선순위는 낮아진다는 점에 유의하세요. 높은 우선순위는 VM 라이브 마이그레이션 중에 사용되며, 최적 동작을 위해서는 IPv4ElevatedRoutePriority가 IPv4NormalRoutePriority보다 작아야 해요. |
| 스키마 | 정수: [1,2147483646] |
| 기본값 | 512 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPV4ELEVATEDROUTEPRIORITY |
| 설명 | 우선순위를 높인(elevated) Calico 프로그래밍 IPv4 라우트의 라우트 우선순위 값이에요. 값이 클수록 우선순위는 낮아진다는 점에 유의하세요. 높은 우선순위는 VM 라이브 마이그레이션 중에 사용되며, 최적 동작을 위해서는 IPv4ElevatedRoutePriority가 IPv4NormalRoutePriority보다 작아야 해요. |
| 스키마 | 정수: [1,2147483646] |
| 기본값 | 512 |
IPv4NormalRoutePriority
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IPv4NormalRoutePriority |
| 설명 | 일반 우선순위 Calico 프로그래밍 IPv4 라우트의 라우트 우선순위 값이에요. 값이 클수록 우선순위는 낮아진다는 점에 유의하세요. |
| 스키마 | 정수: [1,2147483646] |
| 기본값 | 1024 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPV4NORMALROUTEPRIORITY |
| 설명 | 일반 우선순위 Calico 프로그래밍 IPv4 라우트의 라우트 우선순위 값이에요. 값이 클수록 우선순위는 낮아진다는 점에 유의하세요. |
| 스키마 | 정수: [1,2147483646] |
| 기본값 | 1024 |
IPv6ElevatedRoutePriority
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IPv6ElevatedRoutePriority |
| 설명 | 우선순위를 높인(elevated) Calico 프로그래밍 IPv6 라우트의 라우트 우선순위 값이에요. 값이 클수록 우선순위는 낮아진다는 점에 유의하세요. 높은 우선순위는 VM 라이브 마이그레이션 중에 사용되며, 최적 동작을 위해서는 IPv6ElevatedRoutePriority가 IPv6NormalRoutePriority보다 작아야 해요. |
| 스키마 | 정수: [1,2147483646] |
| 기본값 | 512 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPV6ELEVATEDROUTEPRIORITY |
| 설명 | 우선순위를 높인(elevated) Calico 프로그래밍 IPv6 라우트의 라우트 우선순위 값이에요. 값이 클수록 우선순위는 낮아진다는 점에 유의하세요. 높은 우선순위는 VM 라이브 마이그레이션 중에 사용되며, 최적 동작을 위해서는 IPv6ElevatedRoutePriority가 IPv6NormalRoutePriority보다 작아야 해요. |
| 스키마 | 정수: [1,2147483646] |
| 기본값 | 512 |
IPv6NormalRoutePriority
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IPv6NormalRoutePriority |
| 설명 | 일반 우선순위 Calico 프로그래밍 IPv6 라우트의 라우트 우선순위 값이에요. 값이 클수록 우선순위는 낮아진다는 점에 유의하세요. |
| 스키마 | 정수: [1,2147483646] |
| 기본값 | 1024 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPV6NORMALROUTEPRIORITY |
| 설명 | 일반 우선순위 Calico 프로그래밍 IPv6 라우트의 라우트 우선순위 값이에요. 값이 클수록 우선순위는 낮아진다는 점에 유의하세요. |
| 스키마 | 정수: [1,2147483646] |
| 기본값 | 1024 |
InterfaceExclude
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | InterfaceExclude |
| 설명 | Felix가 호스트 엔드포인트를 판별할 때 제외할 인터페이스 이름 목록이에요(쉼표로 구분). 기본값은 Kubernetes 내부 kube-ipvs0 디바이스를 무시하도록 해요. 하나의 값으로 여러 인터페이스 이름을 제외하고 싶다면 목록에서 정규식을 지원해요. 정규식은 값 앞뒤를 /로 감싸야 해요. 예를 들어 /^kube/,veth1로 설정하면 kube로 시작하는 모든 인터페이스와 veth1 인터페이스를 제외해요. |
| 스키마 | Linux 인터페이스 이름/정규식 패턴을 쉼표로 구분한 목록. 정규식 패턴은 /로 시작하고 끝나야 해요. |
| 기본값 | kube-ipvs0 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_INTERFACEEXCLUDE |
| 설명 | Felix가 호스트 엔드포인트를 판별할 때 제외할 인터페이스 이름 목록이에요(쉼표로 구분). 기본값은 Kubernetes 내부 kube-ipvs0 디바이스를 무시하도록 해요. 하나의 값으로 여러 인터페이스 이름을 제외하고 싶다면 목록에서 정규식을 지원해요. 정규식은 값 앞뒤를 /로 감싸야 해요. 예를 들어 /^kube/,veth1로 설정하면 kube로 시작하는 모든 인터페이스와 veth1 인터페이스를 제외해요. |
| 스키마 | Linux 인터페이스 이름/정규식 패턴을 쉼표로 구분한 목록. 정규식 패턴은 /로 시작하고 끝나야 해요. |
| 기본값 | kube-ipvs0 |
InterfacePrefix
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | InterfacePrefix |
| 설명 | 워크로드 엔드포인트를 식별해서 호스트 엔드포인트 인터페이스와 구분하는 인터페이스 이름 접두어예요. 참고: 베어 메탈이 아닌 환경에서는 오케스트레이터가 알맞게 설정해 줘요. 예를 들어 Kubernetes와 Docker 통합은 'cali' 값을, OpenStack 통합은 'tap' 값을 설정해요. |
| 스키마 | 정규식 ^[a-zA-Z0-9_-]{1,15}(,[a-zA-Z0-9_-]{1,15})*$와 일치하는 문자열 |
| 기본값 | cali |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_INTERFACEPREFIX |
| 설명 | 워크로드 엔드포인트를 식별해서 호스트 엔드포인트 인터페이스와 구분하는 인터페이스 이름 접두어예요. 참고: 베어 메탈이 아닌 환경에서는 오케스트레이터가 알맞게 설정해 줘요. 예를 들어 Kubernetes와 Docker 통합은 'cali' 값을, OpenStack 통합은 'tap' 값을 설정해요. |
| 스키마 | 정규식 ^[a-zA-Z0-9_-]{1,15}(,[a-zA-Z0-9_-]{1,15})*$와 일치하는 문자열 |
| 기본값 | cali |
InterfaceRefreshInterval
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | InterfaceRefreshInterval |
| 설명 | Felix가 로컬 인터페이스를 다시 스캔해서 상태를 확인하는 주기예요. 간격을 0으로 설정하면 재스캔을 끌 수 있어요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 90 (1m30s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_INTERFACEREFRESHINTERVAL |
| 설명 | Felix가 로컬 인터페이스를 다시 스캔해서 상태를 확인하는 주기예요. 간격을 0으로 설정하면 재스캔을 끌 수 있어요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 90 (1m30s) |
Ipv6Support
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | Ipv6Support |
| 설명 | Felix가 IPv6 지원을 켤지 제어해요(사용 중인 데이터플레인이 지원하는 경우). |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | true |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPV6SUPPORT |
| 설명 | Felix가 IPv6 지원을 켤지 제어해요(사용 중인 데이터플레인이 지원하는 경우). |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | true |
IstioAmbientMode
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IstioAmbientMode |
| 설명 | Felix가 Tigera의 Istio 배포판과 함께 동작하도록 구성해요. |
| 스키마 | Disabled, Enabled 중 하나 |
| 기본값 | Disabled |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_ISTIOAMBIENTMODE |
| 설명 | Felix가 Tigera의 Istio 배포판과 함께 동작하도록 구성해요. |
| 스키마 | Disabled, Enabled 중 하나 |
| 기본값 | Disabled |
IstioDSCPMark
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IstioDSCPMark |
| 설명 | Istio가 활성화돼 있을 때 Istio ZTunnel로 트래픽을 보낼 때 사용할 값을 설정해요. 다른 프로토콜과 간섭하지 않도록 마크는 최종 홉의 SYN 패킷에만 설정돼요. 이 값은 Calico가 예약한 값이라 다른 Istio 설치와 함께 쓰면 안 돼요. |
| 스키마 | 숫자 값: 6비트 DSCP 코드를 직접 나타내는 0부터 63까지의 정수. 이름 값: IANA의 Differentiated Services Field Codepoints 레지스트리에 정의된 표준 DSCP 이름("CS0", "AF11", "AF21", "EF" 등)에 해당하는 대소문자 구분 없는 문자열. |
| 기본값 | 23 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_ISTIODSCPMARK |
| 설명 | Istio가 활성화돼 있을 때 Istio ZTunnel로 트래픽을 보낼 때 사용할 값을 설정해요. 다른 프로토콜과 간섭하지 않도록 마크는 최종 홉의 SYN 패킷에만 설정돼요. 이 값은 Calico가 예약한 값이라 다른 Istio 설치와 함께 쓰면 안 돼요. |
| 스키마 | 숫자 값: 6비트 DSCP 코드를 직접 나타내는 0부터 63까지의 정수. 이름 값: IANA의 Differentiated Services Field Codepoints 레지스트리에 정의된 표준 DSCP 이름("CS0", "AF11", "AF21", "EF" 등)에 해당하는 대소문자 구분 없는 문자열. |
| 기본값 | 23 |
LiveMigrationRouteConvergenceTime
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | LiveMigrationRouteConvergenceTime |
| 설명 | VM 라이브 마이그레이션이 끝난 뒤에도 높아진 라우트 우선순위를 유지하는 시간이에요. 일반 우선순위로 되돌아가기 전에 클러스터 전반에서 라우트가 수렴할 시간을 벌어 줘요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 30 (30s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_LIVEMIGRATIONROUTECONVERGENCETIME |
| 설명 | VM 라이브 마이그레이션이 끝난 뒤에도 높아진 라우트 우선순위를 유지하는 시간이에요. 일반 우선순위로 되돌아가기 전에 클러스터 전반에서 라우트가 수렴할 시간을 벌어 줘요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 30 (30s) |
LocalSubnetL2Reachability
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | LocalSubnetL2Reachability |
| 설명 | 호스트 인터페이스와 같은 서브넷에 속한 로컬 파드 IP와 선택된 LoadBalancer VIP에 대해, Felix가 호스트 인터페이스에서 ARP(IPv4)와 NDP(IPv6) 요청에 자동으로 응답할지 제어해요. PodsAndLoadBalancers로 설정하면 호스트 서브넷의 파드와 LB VIP가 BGP 없이 로컬 L2 세그먼트에서 도달 가능해져요. |
| 스키마 | Disabled, PodsAndLoadBalancers 중 하나 |
| 기본값 | Disabled |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_LOCALSUBNETL2REACHABILITY |
| 설명 | 호스트 인터페이스와 같은 서브넷에 속한 로컬 파드 IP와 선택된 LoadBalancer VIP에 대해, Felix가 호스트 인터페이스에서 ARP(IPv4)와 NDP(IPv6) 요청에 자동으로 응답할지 제어해요. PodsAndLoadBalancers로 설정하면 호스트 서브넷의 파드와 LB VIP가 BGP 없이 로컬 L2 세그먼트에서 도달 가능해져요. |
| 스키마 | Disabled, PodsAndLoadBalancers 중 하나 |
| 기본값 | Disabled |
LocalSubnetL2ReachabilityRefreshInterval
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | LocalSubnetL2ReachabilityRefreshInterval |
| 설명 | LocalSubnetL2Reachability가 켜져 있을 때 Felix가 ARP/NDP를 프록시하는 모든 IP를 얼마나 자주 다시 알릴지(gratuitous ARP / unsolicited NA) 제어해요. 프록시 중인 IP 집합이 그대로여도 이웃 캐시와 스위치 포워딩 테이블을 계속 따뜻하게 유지해요. 0으로 설정하면 주기적으로 다시 알리는 동작을 끄고, IP가 추가될 때 한 번 알리는 동작만 남겨요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 120 (2m0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_LOCALSUBNETL2REACHABILITYREFRESHINTERVAL |
| 설명 | LocalSubnetL2Reachability가 켜져 있을 때 Felix가 ARP/NDP를 프록시하는 모든 IP를 얼마나 자주 다시 알릴지(gratuitous ARP / unsolicited NA) 제어해요. 프록시 중인 IP 집합이 그대로여도 이웃 캐시와 스위치 포워딩 테이블을 계속 따뜻하게 유지해요. 0으로 설정하면 주기적으로 다시 알리는 동작을 끄고, IP가 추가될 때 한 번 알리는 동작만 남겨요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 120 (2m0s) |
MTUIfacePattern
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | MTUIfacePattern |
| 설명 | 호스트 MTU를 계산하려고 Felix가 스캔할 인터페이스를 정하는 정규식이에요. 워크로드 인터페이스(보통 cali...라는 이름이에요)와는 매치되면 안 돼요. |
| 스키마 | 정규식 |
| 기본값 | ^((en|wl|ww|sl|ib)[Pcopsvx].*|(eth|wlan|wwan).*) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_MTUIFACEPATTERN |
| 설명 | 호스트 MTU를 계산하려고 Felix가 스캔할 인터페이스를 정하는 정규식이에요. 워크로드 인터페이스(보통 cali...라는 이름이에요)와는 매치되면 안 돼요. |
| 스키마 | 정규식 |
| 기본값 | ^((en|wl|ww|sl|ib)[Pcopsvx].*|(eth|wlan|wwan).*) |
NATOutgoingAddress
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NATOutgoingAddress |
| 설명 | natOutgoing 풀에 속한 트래픽이 네트워크 밖으로 나갈 때 소스 NAT에 사용할 주소를 지정해요. 기본적으로는 트래픽이 나가는 인터페이스의 주소를 사용해요(즉, iptables MASQUERADE 타깃을 사용해요). |
| 스키마 | IPv4 주소 |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NATOUTGOINGADDRESS |
| 설명 | natOutgoing 풀에 속한 트래픽이 네트워크 밖으로 나갈 때 소스 NAT에 사용할 주소를 지정해요. 기본적으로는 트래픽이 나가는 인터페이스의 주소를 사용해요(즉, iptables MASQUERADE 타깃을 사용해요). |
| 스키마 | IPv4 주소 |
| 기본값 | 없음 |
NATOutgoingExclusions
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NATOutgoingExclusions |
| 설명 | IP 풀의 natOutgoing 설정이 true면 이 IP 풀의 Calico 네트워킹 컨테이너에서 보내는 패킷은 목적지에 따라 마스커레이드돼요. 어떤 종류의 목적지를 마스커레이드에서 제외할지 설정해요. - IPPoolsOnly: 이 IP 풀 바깥의 목적지는 마스커레이드돼요. - IPPoolsAndHostIPs: 이 IP 풀 바깥의 목적지와 모든 호스트도 마스커레이드돼요. |
| 스키마 | IPPoolsAndHostIPs, IPPoolsOnly 중 하나 |
| 기본값 | IPPoolsOnly |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NATOUTGOINGEXCLUSIONS |
| 설명 | IP 풀의 natOutgoing 설정이 true면 이 IP 풀의 Calico 네트워킹 컨테이너에서 보내는 패킷은 목적지에 따라 마스커레이드돼요. 어떤 종류의 목적지를 마스커레이드에서 제외할지 설정해요. - IPPoolsOnly: 이 IP 풀 바깥의 목적지는 마스커레이드돼요. - IPPoolsAndHostIPs: 이 IP 풀 바깥의 목적지와 모든 호스트도 마스커레이드돼요. |
| 스키마 | IPPoolsAndHostIPs, IPPoolsOnly 중 하나 |
| 기본값 | IPPoolsOnly |
NATPortRange
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NATPortRange |
| 설명 | 아웃고잉 NAT를 할 때 포트 매핑에 사용할 포트 범위를 지정해요. 설정하지 않으면 네트워크 스택의 기본 동작을 따라가요. |
| 스키마 | 포트 범위: [0,65535] 사이의 단일 숫자 또는 n:m 형태의 숫자 범위 |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NATPORTRANGE |
| 설명 | 아웃고잉 NAT를 할 때 포트 매핑에 사용할 포트 범위를 지정해요. 설정하지 않으면 네트워크 스택의 기본 동작을 따라가요. |
| 스키마 | 포트 범위: [0,65535] 사이의 단일 숫자 또는 n:m 형태의 숫자 범위 |
| 기본값 | 없음 |
NFTablesFlowTableDataIfacePattern
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NFTablesFlowTableDataIfacePattern |
| 설명 | nftables flowtable에 추가할 호스트 인터페이스를 정하는 정규식이에요. 그 인터페이스와 로컬 워크로드 사이에서 포워딩되는 트래픽이 flowtable 빠른 경로로 오프로드돼요. 비워 두면 워크로드 간 트래픽만 오프로드해요. NFTablesFlowTableOffload가 Disabled가 아닐 때만 효과가 있어요. |
| 스키마 | 정규식 |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NFTABLESFLOWTABLEDATAIFACEPATTERN |
| 설명 | nftables flowtable에 추가할 호스트 인터페이스를 정하는 정규식이에요. 그 인터페이스와 로컬 워크로드 사이에서 포워딩되는 트래픽이 flowtable 빠른 경로로 오프로드돼요. 비워 두면 워크로드 간 트래픽만 오프로드해요. NFTablesFlowTableOffload가 Disabled가 아닐 때만 효과가 있어요. |
| 스키마 | 정규식 |
| 기본값 | 없음 |
NFTablesFlowTableOffload
더 알아보기 (Learn more)
Felix 구성 옵션 전체는 Felix 구성 레퍼런스의 이전·다음 파트에서 이어져요. 로컬 서브넷 L2 도달성을 켤 때는 이 파트의 LocalSubnetL2Reachability 키 두 개를 함께 살펴보고, VM 라이브 마이그레이션을 쓴다면 라우트 우선순위 키들의 대소 관계도 확인해 보세요.