FelixConfiguration 리소스 레퍼런스의 두 번째 파트예요. iptables 데이터플레인의 나머지 키들과 nftables 데이터플레인 설정, 그리고 eBPF 데이터플레인의 BPF 관련 설정 전반이 이어져요. conntrack 맵 크기, Maglev 로드밸런싱, NAT 맵 크기, 커널 요구사항 같은 운영에 중요한 키들이 많으니 필요한 부분만 골라 확인하세요. 키 이름과 기본값은 원문 그대로 유지했어요.
출처: 문서
본문
ipsetsRefreshInterval
| 속성 |
값 |
| 키 |
ipsetsRefreshInterval |
| 설명 |
Felix가 모든 IP set을 다시 검사해서 불일치가 있는지 살펴보는 주기를 제어해요. 주기적 리프레시를 끄려면 0으로 설정하세요. |
| 스키마 |
duration 문자열, 예를 들면 1m30s123ms 또는 1h5m |
| 기본값 |
1m30s |
iptablesBackend
| 속성 |
값 |
| 키 |
iptablesBackend |
| 설명 |
사용할 iptables 백엔드를 제어해요. 기본값은 Auto예요. 주의: 실행 중인 시스템에서 이 값을 바꾸면 "다른" 백엔드에 "고아" 규칙이 남을 수 있어요. 혼란스러운 상호작용을 피하려면 이 규칙들을 정리해야 해요. |
| 스키마 |
다음 중 하나: "Auto", "Legacy", "NFT". |
| 기본값 |
auto |
iptablesFilterAllowAction
| 속성 |
값 |
| 키 |
iptablesFilterAllowAction |
| 설명 |
"일반" 정책에 쓰이는 iptables filter 테이블에서 Felix 정책 체인이 트래픽을 허용했을 때의 동작을 제어해요. 기본값은 트래픽을 즉시 Accept해요. Return을 쓰면 트래픽을 시스템 체인으로 다시 보내 추가 처리를 진행해요. |
| 스키마 |
다음 중 하나: Accept, Return. |
| 기본값 |
Accept |
iptablesFilterDenyAction
| 속성 |
값 |
| 키 |
iptablesFilterDenyAction |
| 설명 |
네트워크 정책에 의해 거부된 트래픽의 동작을 제어해요. 기본적으로 Calico는 iptables "DROP" 동작으로 트래픽을 차단해요. 대신 "REJECT" 동작을 쓰고 싶다면 여기서 설정할 수 있어요. |
| 스키마 |
다음 중 하나: Drop, Reject. |
| 기본값 |
Drop |
iptablesLockProbeInterval
| 속성 |
값 |
| 키 |
iptablesLockProbeInterval |
| 설명 |
xtables lock을 점유하려는 시도 사이의 간격을 설정해요. 간격이 짧으면 반응이 빨라지지만 CPU를 더 써요. |
| 스키마 |
duration 문자열, 예를 들면 1m30s123ms 또는 1h5m |
| 기본값 |
50ms |
iptablesMangleAllowAction
| 속성 |
값 |
| 키 |
iptablesMangleAllowAction |
| 설명 |
"pre-DNAT" 정책에 쓰이는 iptables mangle 테이블에서 Felix 정책 체인이 트래픽을 허용했을 때의 동작을 제어해요. 기본값은 트래픽을 즉시 Accept해요. Return을 쓰면 트래픽을 시스템 체인으로 다시 보내 추가 처리를 진행해요. |
| 스키마 |
다음 중 하나: Accept, Return. |
| 기본값 |
Accept |
iptablesMarkMask
| 속성 |
값 |
| 키 |
iptablesMarkMask |
| 설명 |
Felix가 IPTables Mark 비트를 고를 때 사용하는 마스크예요. 최소 8비트 이상 켜져 있는 32비트 16진수여야 하고, 시스템에서 이미 쓰고 있는 다른 mark 비트와 겹치면 안 돼요. |
| 스키마 |
|
| 기본값 |
0xffff0000 |
iptablesNATOutgoingInterfaceFilter
| 속성 |
값 |
| 키 |
iptablesNATOutgoingInterfaceFilter |
| 설명 |
이 파라미터는 "NAT outgoing"이 켜진 Calico IPAM 풀에서 나가는 트래픽에 Calico가 SNAT를 적용할 호스트 인터페이스를 제한하는 데 쓸 수 있어요. 트래픽이 SNAT되어야 하는 메인 데이터 인터페이스와, 호스트에 로컬이고 SNAT가 필요 없는 보조 장치(예: docker bridge)가 함께 있는 경우에 유용해요. 이 파라미터는 iptables 인터페이스 매칭 문법을 사용하고, +를 와일드카드로 쓸 수 있어요. 대부분의 사용자는 설정할 필요가 없어요. 예: 데이터 인터페이스가 eth0, eth1이고 docker bridge를 제외하고 싶다면 eth+로 설정하면 돼요. |
| 스키마 |
문자열 |
| 기본값 |
none |
iptablesPostWriteCheckInterval
| 속성 |
값 |
| 키 |
iptablesPostWriteCheckInterval |
| 설명 |
Felix가 데이터플레인에 쓰기를 마친 뒤, 해당 쓰기가 다른 프로세스에 의해 덮어쓰이지 않았는지 확인하려고 추가 읽기를 예약하는 주기예요. 이런 일은 시스템의 다른 애플리케이션이 iptables lock을 지키지 않을 때만 발생해야 해요. |
| 스키마 |
duration 문자열, 예를 들면 1m30s123ms 또는 1h5m |
| 기본값 |
5s |
iptablesRefreshInterval
| 속성 |
값 |
| 키 |
iptablesRefreshInterval |
| 설명 |
Felix가 데이터플레인의 IP set을 다시 검사해서 다른 프로세스가 실수로 Calico 규칙을 깨뜨리지 않았는지 확인하는 주기예요. IP set 리프레시를 끄려면 0으로 설정하세요. 참고: 이 값의 기본값이 다른 리프레시 간격보다 짧은 건, 커널 4.11에서 수정된 Linux 커널 버그를 우회하기 위해서예요. v4.11 이상을 쓴다면 Felix CPU 사용량을 줄이려고 이 값을 더 높게 설정할 수도 있어요. |
| 스키마 |
duration 문자열, 예를 들면 1m30s123ms 또는 1h5m |
| 기본값 |
3m0s |
kubeNodePortRanges
| 속성 |
값 |
| 키 |
kubeNodePortRanges |
| 설명 |
서비스 node port에 쓰이는 포트 범위 목록을 담아요. Felix가 kube-proxy가 ipvs 모드로 실행되는 걸 감지했을 때만 사용돼요. Felix는 이 범위를 이용해 호스트 트래픽과 워크로드 트래픽을 분리해요. |
| 스키마 |
포트 목록: [<port>, ...] — <port>는 포트 번호(정수) 또는 범위(문자열), 예를 들면 80, 8080:8089 |
| 기본값 |
["30000:32767"] |
maxIpsetSize
| 속성 |
값 |
| 키 |
maxIpsetSize |
| 설명 |
하나의 IP set에 저장할 수 있는 최대 IP 주소 수예요. nftables 백엔드를 쓸 때는 해당되지 않아요. |
| 스키마 |
정수 |
| 기본값 |
1048576 |
데이터플레인: nftables
nftablesFilterAllowAction
| 속성 |
값 |
| 키 |
nftablesFilterAllowAction |
| 설명 |
filter 테이블에서 "allow" 정책 판정을 표현할 때 Felix가 쓰는 nftables 동작을 제어해요. 기본값은 트래픽을 ACCEPT하는 것이고, 이건 최종(terminal) 동작이에요. 대신 RETURN을 쓰면 트래픽을 최상위 체인으로 되돌려서 여러분의 규칙이 추가로 처리하게 할 수 있어요. |
| 스키마 |
다음 중 하나: Accept, Return. |
| 기본값 |
Accept |
nftablesFilterDenyAction
| 속성 |
값 |
| 키 |
nftablesFilterDenyAction |
| 설명 |
네트워크 정책에 의해 거부된 트래픽의 동작을 제어해요. 기본적으로 Calico는 "drop" 동작으로 트래픽을 차단해요. 대신 "reject" 동작을 쓰고 싶다면 여기서 설정할 수 있어요. |
| 스키마 |
다음 중 하나: Drop, Reject. |
| 기본값 |
Drop |
nftablesMangleAllowAction
| 속성 |
값 |
| 키 |
nftablesMangleAllowAction |
| 설명 |
mangle 테이블에서 "allow" 정책 판정을 표현할 때 Felix가 쓰는 nftables 동작을 제어해요. 기본값은 트래픽을 ACCEPT하는 것이고, 이건 최종(terminal) 동작이에요. 대신 RETURN을 쓰면 트래픽을 최상위 체인으로 되돌려서 여러분의 규칙이 추가로 처리하게 할 수 있어요. |
| 스키마 |
다음 중 하나: Accept, Return. |
| 기본값 |
Accept |
nftablesMarkMask
| 속성 |
값 |
| 키 |
nftablesMarkMask |
| 설명 |
Felix가 nftables Mark 비트를 고를 때 사용하는 마스크예요. 최소 8비트 이상 켜져 있는 32비트 16진수여야 하고, 시스템에서 이미 쓰고 있는 다른 mark 비트와 겹치면 안 돼요. |
| 스키마 |
|
| 기본값 |
0xffff0000 |
nftablesRefreshInterval
| 속성 |
값 |
| 키 |
nftablesRefreshInterval |
| 설명 |
Felix가 nftables 규칙을 주기적으로 리프레시하는 간격을 제어해요. |
| 스키마 |
duration 문자열, 예를 들면 1m30s123ms 또는 1h5m |
| 기본값 |
3m0s |
데이터플레인: eBPF
bpfAttachType
| 속성 |
값 |
| 키 |
bpfAttachType |
| 설명 |
네트워크 인터페이스의 BPF 프로그램을 어떻게 부착(attach)할지 제어해요. 기본값인 Netkit는 netkit 장치인 워크로드 인터페이스에는 netkit API로, 그 밖의 모든 인터페이스에는 TCX로 부착해요. TCX는 사용 가능한 곳에서 써서 서드파티 프로그램과 더 쉽게 공존할 수 있게 해줘요. TC는 qdisc를 통하는 레거시 부착 방식을 강제할 수 있어요. TCX는 사용할 수 없으면 TC로 폴백해요. 이 값을 TCX 또는 TC로 설정하면 Felix가 기존 netkit 장치를 netkit API 대신 해당 메커니즘으로 구동해서, netkit 지원이 없는 릴리스로 다운그레이드하기 전에 필요한 사전 조치가 돼요. |
| 스키마 |
다음 중 하나: "Netkit", "TC", "TCX". |
| 기본값 |
Netkit |
bpfCTLBLogFilter
| 속성 |
값 |
| 키 |
bpfCTLBLogFilter |
| 설명 |
BPFLogLevel이 debug일 때 connect time load balancer가 기록할 내용을 지정해요. BPFLogFilters가 설정된 상태에서 CTLB 로그를 보려면 현재는 'all'로 지정해야 해요. |
| 스키마 |
문자열 |
| 기본값 |
none |
bpfConnectTimeLoadBalancing
| 속성 |
값 |
| 키 |
bpfConnectTimeLoadBalancing |
| 설명 |
BPF 모드에서 Felix가 connect-time load balancer를 설치할지 제어해요. connect-time load balancer는 호스트가 Kubernetes 서비스에 도달할 수 있게 하는 데 필요하고, 파드-서비스 연결 성능도 개선해요. TCP로 설정하면 connect time load balancing은 TCP 포트를 가진 서비스에서만 동작해요. |
| 스키마 |
다음 중 하나: "Disabled", "Enabled", "TCP". |
| 기본값 |
TCP |
bpfConnectTimeLoadBalancingEnabled
| 속성 |
값 |
| 키 |
bpfConnectTimeLoadBalancingEnabled |
| 설명 |
BPF 모드에서 Felix가 connection-time load balancer를 설치할지 제어해요. connect-time load balancer는 호스트가 Kubernetes 서비스에 도달할 수 있게 하는 데 필요하고, 파드-서비스 연결 성능도 개선해요. 끄는 유일한 이유는 디버깅 목적이에요. Deprecated: BPFConnectTimeLoadBalancing을 사용하세요. |
| 스키마 |
불리언 |
| 기본값 |
none |
bpfConntrackMode
| 속성 |
값 |
| 키 |
bpfConntrackMode |
| 설명 |
BPF conntrack 엔트리를 정리하는 방식을 제어해요. Auto는 지원되면 BPF 프로그램을 쓰고, 아니면 유저스페이스로 폴백해요. Userspace는 항상 유저스페이스 정리 코드를 써요. BPFProgram은 항상 BPF 프로그램을 써요(지원되지 않으면 실패). /conntrack map 타입이 lru_hash로 바뀌고 유저스페이스 정리만 지원되기 때문에 향후 버전에서 deprecated될 예정이에요. |
| 스키마 |
다음 중 하나: "Auto", "BPFProgram", "Userspace". |
| 기본값 |
Auto |
bpfConntrackLogLevel
| 속성 |
값 |
| 키 |
bpfConntrackLogLevel |
| 설명 |
만료된 BPF conntrack 엔트리를 주기적으로 정리하는 BPF conntrack 정리 프로그램의 로그 레벨을 제어해요. |
| 스키마 |
다음 중 하나: "Debug", "Off". |
| 기본값 |
off |
bpfConntrackTimeouts
| 속성 |
값 |
| 키 |
bpfConntrackTimeouts |
| 설명 |
BPFConntrackTimers는 설정되어 있으면 지정된 conntrack 타이머의 기본값을 덮어써요. 각 값은 duration이거나, Linux conntrack 타임아웃에서 값을 가져오는 Auto일 수 있어요. 설정 가능한 타이머는 CreationGracePeriod, TCPSynSent, TCPEstablished, TCPFinsSeen, TCPResetSeen, UDPTimeout, GenericTimeout, ICMPTimeout이에요. 설정되지 않은 값은 기본값으로 대체되고, 잘못된 값에는 경고 로그가 남아요. |
| 스키마 |
|
| 기본값 |
none |
bpfDSROptoutCIDRs
| 속성 |
값 |
| 키 |
bpfDSROptoutCIDRs |
| 설명 |
DSR에서 제외되는 CIDR 목록이에요. 즉, 이 CIDR에 속한 클라이언트는 BPFExternalServiceMode가 Tunnel로 설정된 것처럼 서비스 node port에 접근해요. |
| 스키마 |
CIDR 목록: ["<cidr>", ...] |
| 기본값 |
none |
bpfDataIfacePattern
| 속성 |
값 |
| 키 |
bpfDataIfacePattern |
| 설명 |
네트워크와 주고받는 트래픽을 잡으려고 Felix가 BPF 프로그램을 부착할 인터페이스를 결정하는 정규식이에요. Calico 워크로드 트래픽이 흐르는 인터페이스와, 클러스터 외부에서 nodeport와 서비스로 들어오는 트래픽을 처리하는 인터페이스를 모두 매칭해야 해요. 워크로드 인터페이스(보통 cali...로 이름 붙음)나 Calico 자체가 관리하는 다른 특수 장치(예: 터널)는 매칭하면 안 돼요. |
| 스키마 |
문자열 |
| 기본값 |
^((en|wl|ww|sl|ib)[Popsx].*|(eth|wlan|wwan|bond).*) |
bpfDisableGROForIfaces
| 속성 |
값 |
| 키 |
bpfDisableGROForIfaces |
| 설명 |
Felix가 Generic Receive Offload [GRO] 옵션을 꺼야 하는 인터페이스를 결정하는 정규식이에요. 워크로드 인터페이스(보통 cali...로 이름 붙음)는 매칭하면 안 돼요. |
| 스키마 |
문자열 |
| 기본값 |
none |
bpfDisableUnprivileged
| 속성 |
값 |
| 키 |
bpfDisableUnprivileged |
| 설명 |
켜면 Felix가 kernel.unprivileged_bpf_disabled sysctl을 설정해서 BPF의 비특권 사용을 막아요. 이렇게 하면 비특권 사용자가 Calico의 BPF 맵에 접근하거나 Calico를 방해하는 자체 BPF 프로그램을 넣을 수 없게 돼요. |
| 스키마 |
불리언 |
| 기본값 |
true |
bpfEnabled
| 속성 |
값 |
| 키 |
bpfEnabled |
| 설명 |
켜면 Felix가 BPF 데이터플레인을 사용해요. |
| 스키마 |
불리언 |
| 기본값 |
false |
bpfEnforceRPF
| 속성 |
값 |
| 키 |
bpfEnforceRPF |
| 설명 |
BPF 프로그램이 있는 모든 호스트 인터페이스에서 인터페이스별 설정이나 전역 설정과 무관하게 strict RPF를 강제해요. 가능한 값은 Disabled, Strict, Loose예요. |
| 스키마 |
다음 중 하나: Disabled, Loose, Strict. |
| 기본값 |
Loose |
bpfExcludeCIDRsFromNAT
| 속성 |
값 |
| 키 |
bpfExcludeCIDRsFromNAT |
| 설명 |
호스트가 직접 처리할 수 있도록 NAT 분석에서 제외할 CIDR 목록이에요. 대표적인 활용 사례는 node local DNS cache예요. |
| 스키마 |
CIDR 목록: ["<cidr>", ...] |
| 기본값 |
none |
bpfExportBufferSizeMB
| 속성 |
값 |
| 키 |
bpfExportBufferSizeMB |
| 설명 |
BPF 모드에서 Felix에게 BPF 이벤트를 보낼 때 쓰는 버퍼 크기를 제어해요. |
| 스키마 |
정수 |
| 기본값 |
1 |
bpfExtToServiceConnmark
| 속성 |
값 |
| 키 |
bpfExtToServiceConnmark |
| 설명 |
BPF 모드에서 외부 클라이언트에서 로컬 서비스로 가는 연결에 설정되는 32비트 mark를 제어해요. 이 mark 덕분에 그 연결의 패킷이 호스트 내부에서 어떻게 라우팅되는지, RPF 검사가 라우팅을 어떻게 해석하는지 제어할 수 있어요. |
| 스키마 |
정수 |
| 기본값 |
0 |
bpfExternalServiceMode
| 속성 |
값 |
| 키 |
bpfExternalServiceMode |
| 설명 |
BPF 모드에서 클러스터 외부에서 서비스(node port와 cluster IP)로 오는 연결을 원격 워크로드로 전달하는 방식을 제어해요. "Tunnel"로 설정하면 요청과 응답 트래픽이 모두 원격 노드로 터널링돼요. "DSR"로 설정하면 요청 트래픽은 터널링되지만 응답 트래픽은 원격 노드에서 직접 보내져요. "DSR" 모드에서는 원격 노드가 ingress 노드의 IP를 쓰는 것처럼 보이는데, 이는 관대한(permissive) L2 네트워크가 필요해요. |
| 스키마 |
다음 중 하나: DSR, Tunnel. |
| 기본값 |
Tunnel |
bpfForceTrackPacketsFromIfaces
| 속성 |
값 |
| 키 |
bpfForceTrackPacketsFromIfaces |
| 설명 |
BPF 모드에서 이 인터페이스들로부터 오는 트래픽이 Calico의 iptables NOTRACK 규칙을 건너뛰도록 강제해서, Linux conntrack이 그 트래픽을 추적할 수 있게 해줘요. Calico 패브릭에 쓰이지 않는 인터페이스에만 사용해야 해요. 예를 들어 Calico 네트워킹을 쓰지 않는 컨테이너를 위한 docker bridge 장치가 있어요. |
| 스키마 |
List of interface names (may use + as a wildcard: ["<name>", ...]. |
| 기본값 |
["docker+"] |
bpfHostConntrackBypass
| 속성 |
값 |
| 키 |
bpfHostConntrackBypass |
| 설명 |
BPF 모드에서 워크로드와 서비스에 대해 Linux conntrack을 우회할지 제어해요. |
| 스키마 |
불리언 |
| 기본값 |
false |
bpfHostNetworkedNATWithoutCTLB
| 속성 |
값 |
| 키 |
bpfHostNetworkedNATWithoutCTLB |
| 설명 |
BPF 모드에서 Felix가 CTLB 없이 NAT를 수행할지 제어해요. 이 값과 BPFConnectTimeLoadBalancing이 함께 CTLB 동작을 결정해요. |
| 스키마 |
다음 중 하나: "Disabled", "Enabled". |
| 기본값 |
Enabled |
bpfIPFragTimeout
| 속성 |
값 |
| 키 |
bpfIPFragTimeout |
| 설명 |
BPF 모드에서 IP fragment 재조립 타임아웃을 제어해요. 조각난 IP 패킷의 모든 조각이 도착할 때까지 BPF 데이터플레인이 기다리는 최대 시간이에요. 설정하지 않으면 Linux 커널 sysctl net.ipv4.ipfrag_time에서 값을 읽어요(기본값은 30초). |
| 스키마 |
duration 문자열, 예를 들면 1m30s123ms 또는 1h5m |
| 기본값 |
0s |
bpfIPFragmentReassemblyEnabled
| 속성 |
값 |
| 키 |
bpfIPFragmentReassemblyEnabled |
| 설명 |
Felix가 외부 네트워크에서 순서가 뒤섞인 IP 조각을 재조립하는 BPF 프로그램을 로드할지 제어해요. 이 프로그램은 5.10보다 새로운 커널이 필요해요. 켜져 있을 때(기본값) 프로그램 로드에 실패하면 사용자가 false로 설정하기 전까지 Felix는 not-ready를 보고해요. false이면 외부에서 온 조각난 패킷은 버려져요. |
| 스키마 |
불리언 |
| 기본값 |
true |
bpfJITHardening
| 속성 |
값 |
| 키 |
bpfJITHardening |
| 설명 |
BPF JIT hardening을 제어해요. "Auto"로 설정하면 Felix가 현재 값이 2(성능을 해치는 strict 모드)로 되어 있음을 감지하면 JIT hardening을 1로 설정해요. "Strict"로 설정하면 Felix가 JIT hardening 설정을 바꾸지 않아요. |
| 스키마 |
다음 중 하나: "Auto", "Strict". |
| 기본값 |
Auto |
bpfKubeProxyHealthzPort
| 속성 |
값 |
| 키 |
bpfKubeProxyHealthzPort |
| 설명 |
BPF 모드에서 Felix의 내장 kube-proxy 헬스 체크 서버가 바인드하는 포트를 제어해요. 헬스 체크 서버는 외부 로드밸런서가 이 노드가 트래픽을 받아야 하는지 판단하는 데 쓰여요. 헬스 체크 서버를 끄려면 0으로 설정하세요. |
| 스키마 |
정수 |
| 기본값 |
10256 |
bpfKubeProxyIptablesCleanupEnabled
| 속성 |
값 |
| 키 |
bpfKubeProxyIptablesCleanupEnabled |
| 설명 |
BPF 모드에서 켜면 Felix가 업스트림 Kubernetes kube-proxy의 iptables 체인을 선제적으로 정리해요. kube-proxy가 실행 중이 아닐 때만 켜야 해요. |
| 스키마 |
불리언 |
| 기본값 |
true |
bpfKubeProxyMinSyncPeriod
| 속성 |
값 |
| 키 |
bpfKubeProxyMinSyncPeriod |
| 설명 |
BPF 모드에서 Felix의 내장 kube-proxy가 데이터플레인을 업데이트하는 최소 간격을 제어해요. 값이 낮으면 설정 지연이 줄어들고, 높으면 작업을 묶어서 처리해 Felix CPU 사용량이 줄어들어요. |
| 스키마 |
duration 문자열, 예를 들면 1m30s123ms 또는 1h5m |
| 기본값 |
1s |
bpfL3IfacePattern
| 속성 |
값 |
| 키 |
bpfL3IfacePattern |
| 설명 |
BPFDataIfacePattern에 더해 wireguard나 vxlan 같은 터널 장치(즉, L3 장치)를 나열할 수 있게 해주는 정규식이에요. 즉, Calico가 만들지 않은 터널 인터페이스 중 Calico 워크로드 트래픽이 흐르는 것과, 클러스터 외부에서 nodeport와 서비스로 들어오는 트래픽을 처리하는 인터페이스를 가리켜요. |
| 스키마 |
문자열 |
| 기본값 |
none |
bpfLogFilters
| 속성 |
값 |
| 키 |
bpfLogFilters |
| 설명 |
값이 pcap 필터 표현식이고 키가 인터페이스 이름인 key=value 맵이에요. 'all'은 모든 인터페이스, 'weps'는 모든 워크로드 엔드포인트, 'heps'는 모든 호스트 엔드포인트를 가리켜요. 환경 변수로 지정하면 쉼표로 구분된 key=value 목록을 받아요. |
| 스키마 |
|
| 기본값 |
none |
bpfLogLevel
| 속성 |
값 |
| 키 |
bpfLogLevel |
| 설명 |
BPF 데이터플레인 모드에서 BPF 프로그램의 로그 레벨을 제어해요. "Off", "Info", "Debug" 중 하나예요. 로그는 tc exec bpf debug 명령으로 접근할 수 있는 BPF trace pipe로 나가요. |
| 스키마 |
다음 중 하나: Debug, Info, Off. |
| 기본값 |
Off |
bpfMaglevMaxEndpointsPerService
| 속성 |
값 |
| 키 |
bpfMaglevMaxEndpointsPerService |
| 설명 |
Maglev가 활성화된 단일 서비스에 속할 것으로 예상되는 최대 엔드포인트 수예요. Felix가 생성하는 서비스별 Maglev 룩업 테이블 크기, 즉 예약되는 메모리 양에 영향을 줘요. |
| 스키마 |
정수: [1,3000] |
| 기본값 |
100 |
bpfMaglevMaxServices
| 속성 |
값 |
| 키 |
bpfMaglevMaxServices |
| 설명 |
Felix가 룩업 테이블을 할당할 것으로 예상되는 Maglev가 활성화된 서비스의 최대 수예요. |
| 스키마 |
정수: [1,3000] |
| 기본값 |
100 |
bpfMapSizeConntrack
| 속성 |
값 |
| 키 |
bpfMapSizeConntrack |
| 설명 |
conntrack 맵 크기를 설정해요. 이 맵은 활성 연결마다 엔트리를 담을 수 있을 만큼 커야 해요. 주의: conntrack 맵 크기를 바꾸면 장애가 발생할 수 있어요. |
| 스키마 |
정수 |
| 기본값 |
512000 |
bpfMapSizeConntrackCleanupQueue
| 속성 |
값 |
| 키 |
bpfMapSizeConntrackCleanupQueue |
| 설명 |
정리 대기 중인 NAT conntrack 엔트리를 담는 맵의 크기를 설정해요. 한 정리 주기 안에 만료되는 모든 NAT 엔트리를 담을 만큼 충분히 커야 해요. |
| 스키마 |
정수 |
| 기본값 |
100000 |
bpfMapSizeConntrackScaling
| 속성 |
값 |
| 키 |
bpfMapSizeConntrackScaling |
| 설명 |
사용량에 따라 conntrack 맵 크기를 늘릴지, 어떻게 늘릴지 제어해요. 'Disabled'는 크기가 기본값 또는 BPFMapSizeConntrack*로 설정된 값에 머물게 해요. 'DoubleIfFull'은 정리 후에도 맵이 거의 가득 차면 크기를 두 배로 늘려요. |
| 스키마 |
다음 중 하나: Disabled, DoubleIfFull. |
| 기본값 |
DoubleIfFull |
bpfMapSizeIPSets
| 속성 |
값 |
| 키 |
bpfMapSizeIPSets |
| 설명 |
ipsets 맵 크기를 설정해요. IP set 맵은 네트워크 정책의 소스/목적지 매치에 있는 모든 셀렉터가 매칭하는 엔드포인트마다 엔트리를 담을 수 있을 만큼 커야 해요. "all()" 같은 셀렉터는 엔트리 수를 아주 크게 만들 수 있어요(그 경우 엔드포인트마다 엔트리 하나). |
| 스키마 |
정수 |
| 기본값 |
1048576 |
bpfMapSizeIfState
| 속성 |
값 |
| 키 |
bpfMapSizeIfState |
| 설명 |
ifstate 맵 크기를 설정해요. ifstate 맵은 호스트의 각 장치(호스트 + 워크로드)마다 엔트리를 담을 수 있을 만큼 커야 해요. |
| 스키마 |
정수 |
| 기본값 |
1000 |
bpfMapSizeNATAffinity
| 속성 |
값 |
| 키 |
bpfMapSizeNATAffinity |
| 설명 |
연결의 affinity를 저장하는 BPF 맵의 크기를 설정해요(그 기능을 켠 서비스 기준). |
| 스키마 |
정수 |
| 기본값 |
65536 |
bpfMapSizeNATBackend
| 속성 |
값 |
| 키 |
bpfMapSizeNATBackend |
| 설명 |
NAT 백엔드 맵 크기를 설정해요. 여기에는 엔드포인트 총수가 들어가고, 대체로 서비스 수보다 많아요. |
| 스키마 |
정수 |
| 기본값 |
262144 |
bpfMapSizeNATFrontend
| 속성 |
값 |
| 키 |
bpfMapSizeNATFrontend |
| 설명 |
NAT 프론트엔드 맵 크기를 설정해요. FrontendMap은 각 nodeport, 각 외부 IP, 각 서비스의 각 포트마다 엔트리를 담을 수 있을 만큼 커야 해요. |
| 스키마 |
정수 |
| 기본값 |
65536 |
bpfMapSizePerCpuConntrack
| 속성 |
값 |
| 키 |
bpfMapSizePerCpuConntrack |
| 설명 |
CPU 수를 기준으로 conntrack 맵 크기를 결정해요. 0이 아닌 값으로 설정하면 BPFMapSizeConntrack을 BPFMapSizePerCPUConntrack * (CPU 수)로 덮어써요. 이 맵은 활성 연결마다 엔트리를 담을 수 있을 만큼 커야 해요. 주의: conntrack 맵 크기를 바꾸면 장애가 발생할 수 있어요. |
| 스키마 |
정수 |
| 기본값 |
0 |
bpfMapSizeRoute
| 속성 |
값 |
| 키 |
bpfMapSizeRoute |
| 설명 |
routes 맵 크기를 설정해요. routes 맵은 워크로드마다 엔트리 하나와 호스트마다 소수의 엔트리(자체 IP와 터널 IP를 커버할 정도)를 담을 수 있을 만큼 커야 해요. |
| 스키마 |
정수 |
| 기본값 |
262144 |
bpfOverlayHostSourceIP
| 속성 |
값 |
| 키 |
bpfOverlayHostSourceIP |
| 설명 |
BPF 모드에서 Felix가 IPIP/VXLAN 오버레이 터널로 나가는 호스트 네트워크(노드 발신) 트래픽에 쓰는 소스 IP를 제어해요. "TunnelAddress"(기본값)는 오버레이 터널 장치에 IP 주소를 할당하고 그걸 소스로 써서, 이전 릴리스에서 업그레이드된 클러스터의 동작을 유지해요. "HostAddress"는 노드 자신의 IP를 직접 쓰고 터널 장치 IP를 할당하지 않아요. 이 옵션은 항상 터널 장치 IP를 쓰는 WireGuard 터널에는 영향이 없어요. |
| 스키마 |
다음 중 하나: "HostAddress", "TunnelAddress". |
| 기본값 |
TunnelAddress |
bpfPSNATPorts
| 속성 |
값 |
| 키 |
bpfPSNATPorts |
| 설명 |
소스 포트 충돌이 있을 때 무작위로 포트를 고르는 범위를 설정해요. RFC 6056이 정의한 임시(ephemeral) 범위(1024–65535) 안에 있어야 하고, 가능하면 일반적인 운영체제가 쓰는 임시 범위 밖에 있는 게 좋아요. Linux는 32768–60999를 쓰고, 다른 운영체제는 대부분 IANA가 정의한 49152–65535 범위를 써요. 이 범위가 운영체제와 겹치는 게 반드시 문제가 되는 건 아니에요. 범위의 양 끝은 모두 포함돼요. |
| 스키마 |
포트 범위: [0,65535] 범위의 정수 또는 n:m 형식의 범위 문자열 |
| 기본값 |
20000:29999 |
bpfPolicyDebugEnabled
| 속성 |
값 |
| 키 |
bpfPolicyDebugEnabled |
| 설명 |
true이면 Felix가 BPF 정책 프로그램에 대한 상세 정보를 기록하고, 이 정보는 calico-bpf 커맨드라인 도구로 살펴볼 수 있어요. |
| 스키마 |
불리언 |
| 기본값 |
true |
bpfProfiling
| 속성 |
값 |
| 키 |
bpfProfiling |
| 설명 |
BPF 프로그램의 프로파일링을 제어해요. 현재는 Disabled 또는 Enabled로 설정할 수 있어요. |
| 스키마 |
다음 중 하나: "Disabled", "Enabled". |
| 기본값 |
Disabled |
bpfRedirectToPeer
| 속성 |
값 |
| 키 |
bpfRedirectToPeer |
| 설명 |
트래픽을 워크로드 장치의 peer 쪽으로 직접 포워딩할 수 있는지 제어해요. 레거시 "L2Only" 옵션은 이제 deprecated이고, 설정되면 "Enabled"처럼 취급돼요. 이 옵션을 "Enabled"로 설정하면 직접 리다이렉션이 가능해지고(IPIP 터널이나 WireGuard 같은 L3 호스트 장치 포함), 리다이렉션 성능이 좋아지지만 리다이렉트된 패킷이 호스트 쪽 ingress 경로를 우회하게 돼요. 그 결과 워크로드 장치의 호스트 쪽에서 동작하는 패킷 캡처 도구(예: tcpdump)는 그 트래픽을 볼 수 없어요. |
| 스키마 |
다음 중 하나: "Disabled", "Enabled". |
| 기본값 |
Enabled |
데이터플레인: Windows
더 알아보기 (Learn more)
이 파트의 키들은 데이터플레인 백엔드(iptables, nftables, eBPF) 선택에 따라 필요 여부가 갈려요. BPF 모드를 검토한다면 bpfEnabled와 conntrack 맵 크기 키부터 확인하세요. 키 이름과 기본값은 원문 그대로 유지했어요.