Felix 구성 파트 6
Felix 구성 레퍼런스의 여섯 번째 파트예요. iptables 데이터플레인 설정의 마지막 키들로 시작해서 nftables 데이터플레인 설정으로 넘어가고, 마지막에는 eBPF 데이터플레인 설정이 시작돼요. BPFAttachType처럼 BPF 프로그램을 네트워크 인터페이스에 붙이는 방식을 다루는 키들도 이 파트부터 등장해요. 각 항목은 구성 파일 키와 환경 변수 탭으로 각각 확인할 수 있어요.
출처: 문서
본문
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IptablesLockProbeIntervalMillis |
| 설명 | xtables 잠금(lock)을 획득하려는 시도 사이의 간격을 설정해요. 간격이 짧을수록 반응성이 좋아지지만 CPU를 더 많이 사용해요. |
| 스키마 | 밀리초 (부동소수점) |
| 기본값 | 50 (50ms) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPTABLESLOCKPROBEINTERVALMILLIS |
| 설명 | xtables 잠금(lock)을 획득하려는 시도 사이의 간격을 설정해요. 간격이 짧을수록 반응성이 좋아지지만 CPU를 더 많이 사용해요. |
| 스키마 | 밀리초 (부동소수점) |
| 기본값 | 50 (50ms) |
IptablesMangleAllowAction
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IptablesMangleAllowAction |
| 설명 | iptables mangle 테이블("pre-DNAT" 정책에 사용돼요)에서 Felix 정책 체인이 수락한 트래픽을 어떻게 처리할지 제어해요. 기본값은 트래픽을 즉시 Accept하는 거예요. Return을 사용하면 트래픽을 시스템 체인으로 다시 올려보내 추가 처리를 진행해요. |
| 스키마 | ACCEPT, RETURN 중 하나 |
| 기본값 | ACCEPT |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPTABLESMANGLEALLOWACTION |
| 설명 | iptables mangle 테이블("pre-DNAT" 정책에 사용돼요)에서 Felix 정책 체인이 수락한 트래픽을 어떻게 처리할지 제어해요. 기본값은 트래픽을 즉시 Accept하는 거예요. Return을 사용하면 트래픽을 시스템 체인으로 다시 올려보내 추가 처리를 진행해요. |
| 스키마 | ACCEPT, RETURN 중 하나 |
| 기본값 | ACCEPT |
IptablesMarkMask
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IptablesMarkMask |
| 설명 | Felix가 자신의 IPTables Mark 비트를 고를 때 사용하는 마스크예요. 최소 8비트가 설정된 32비트 16진수여야 하고, 그 비트들은 시스템에서 사용 중인 다른 mark 비트와 충돌하면 안 돼요. |
| 스키마 | 최소 2비트가 설정된 32비트 비트마스크(16진수 또는 10진수 허용), 예: 0xffff0000 |
| 기본값 | 0xffff0000 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPTABLESMARKMASK |
| 설명 | Felix가 자신의 IPTables Mark 비트를 고를 때 사용하는 마스크예요. 최소 8비트가 설정된 32비트 16진수여야 하고, 그 비트들은 시스템에서 사용 중인 다른 mark 비트와 충돌하면 안 돼요. |
| 스키마 | 최소 2비트가 설정된 32비트 비트마스크(16진수 또는 10진수 허용), 예: 0xffff0000 |
| 기본값 | 0xffff0000 |
IptablesNATOutgoingInterfaceFilter
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IptablesNATOutgoingInterfaceFilter |
| 설명 | 이 파라미터를 사용하면 "NAT outgoing"이 활성화된 Calico IPAM 풀에서 나가는 트래픽에 Calico가 SNAT를 적용할 호스트 인터페이스를 제한할 수 있어요. 트래픽이 SNAT되어야 하는 메인 데이터 인터페이스와, 호스트 로컬이라 SNAT가 필요 없는 보조 디바이스(예: docker 브리지)가 함께 있을 때 유용해요. 이 파라미터는 iptables 인터페이스 매칭 문법을 사용하며, +를 와일드카드로 쓸 수 있어요. 대부분의 사용자는 이 값을 설정할 필요가 없어요. 예: 데이터 인터페이스가 eth0, eth1이고 docker 브리지를 제외하고 싶다면 이 값을 eth+로 설정하면 돼요. |
| 스키마 | 정규식 ^[a-zA-Z0-9:._+-]{1,15}$에 일치하는 문자열 |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPTABLESNATOUTGOINGINTERFACEFILTER |
| 설명 | 이 파라미터를 사용하면 "NAT outgoing"이 활성화된 Calico IPAM 풀에서 나가는 트래픽에 Calico가 SNAT를 적용할 호스트 인터페이스를 제한할 수 있어요. 트래픽이 SNAT되어야 하는 메인 데이터 인터페이스와, 호스트 로컬이라 SNAT가 필요 없는 보조 디바이스(예: docker 브리지)가 함께 있을 때 유용해요. 이 파라미터는 iptables 인터페이스 매칭 문법을 사용하며, +를 와일드카드로 쓸 수 있어요. 대부분의 사용자는 이 값을 설정할 필요가 없어요. 예: 데이터 인터페이스가 eth0, eth1이고 docker 브리지를 제외하고 싶다면 이 값을 eth+로 설정하면 돼요. |
| 스키마 | 정규식 ^[a-zA-Z0-9:._+-]{1,15}$에 일치하는 문자열 |
| 기본값 | 없음 |
IptablesPostWriteCheckIntervalSecs
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IptablesPostWriteCheckIntervalSecs |
| 설명 | Felix가 데이터플레인에 쓰기를 마친 후, 그 쓰기가 다른 프로세스에 의해 덮어쓰이지 않았는지 확인하려고 추가 읽기를 예약하는 기간이에요. 이런 일은 시스템의 다른 애플리케이션이 iptables 잠금을 존중하지 않을 때만 일어나야 해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 5 (5s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPTABLESPOSTWRITECHECKINTERVALSECS |
| 설명 | Felix가 데이터플레인에 쓰기를 마친 후, 그 쓰기가 다른 프로세스에 의해 덮어쓰이지 않았는지 확인하려고 추가 읽기를 예약하는 기간이에요. 이런 일은 시스템의 다른 애플리케이션이 iptables 잠금을 존중하지 않을 때만 일어나야 해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 5 (5s) |
IptablesRefreshInterval
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | IptablesRefreshInterval |
| 설명 | Felix가 데이터플레인의 IP 세트를 다시 확인해서 다른 프로세스가 실수로 Calico 규칙을 망가뜨리지 않았는지 점검하는 주기예요. 0으로 설정하면 IP 세트 새로 고침이 꺼져요. 참고: 이 값의 기본값이 다른 새로 고침 간격보다 짧은 건, 커널 버전 4.11에서 수정된 Linux 커널 버그를 우회하기 위한 조치예요. v4.11 이상을 사용한다면 Felix CPU 사용량을 줄이려고 이 값을 더 높게 설정하는 것도 좋아요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 180 (3m0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_IPTABLESREFRESHINTERVAL |
| 설명 | Felix가 데이터플레인의 IP 세트를 다시 확인해서 다른 프로세스가 실수로 Calico 규칙을 망가뜨리지 않았는지 점검하는 주기예요. 0으로 설정하면 IP 세트 새로 고침이 꺼져요. 참고: 이 값의 기본값이 다른 새로 고침 간격보다 짧은 건, 커널 버전 4.11에서 수정된 Linux 커널 버그를 우회하기 위한 조치예요. v4.11 이상을 사용한다면 Felix CPU 사용량을 줄이려고 이 값을 더 높게 설정하는 것도 좋아요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 180 (3m0s) |
KubeNodePortRanges
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | KubeNodePortRanges |
| 설명 | 서비스 node port에 사용되는 포트 범위 목록을 담아요. felix가 ipvs 모드로 실행 중인 kube-proxy를 감지한 경우에만 사용돼요. Felix는 이 범위들을 사용해 호스트 트래픽과 워크로드 트래픽을 구분해요. |
| 스키마 | 포트 범위 목록: [0,65535] 범위의 단일 숫자 또는 n:m 형태의 숫자 범위를 쉼표로 구분한 목록 |
| 기본값 | 30000:32767 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_KUBENODEPORTRANGES |
| 설명 | 서비스 node port에 사용되는 포트 범위 목록을 담아요. felix가 ipvs 모드로 실행 중인 kube-proxy를 감지한 경우에만 사용돼요. Felix는 이 범위들을 사용해 호스트 트래픽과 워크로드 트래픽을 구분해요. |
| 스키마 | 포트 범위 목록: [0,65535] 범위의 단일 숫자 또는 n:m 형태의 숫자 범위를 쉼표로 구분한 목록 |
| 기본값 | 30000:32767 |
MaxIpsetSize
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | MaxIpsetSize |
| 설명 | IP 세트에 저장할 수 있는 IP 주소의 최대 개수예요. nftables 백엔드를 사용할 때는 적용되지 않아요. |
| 스키마 | 정수 |
| 기본값 | 1048576 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_MAXIPSETSIZE |
| 설명 | IP 세트에 저장할 수 있는 IP 주소의 최대 개수예요. nftables 백엔드를 사용할 때는 적용되지 않아요. |
| 스키마 | 정수 |
| 기본값 | 1048576 |
데이터플레인: nftables
NftablesFilterAllowAction
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NftablesFilterAllowAction |
| 설명 | Felix가 filter 테이블에서 "allow" 정책 판정을 나타낼 때 사용하는 nftables 액션을 제어해요. 기본값은 트래픽을 ACCEPT하는 것이며, 이는 최종(terminal) 액션이에요. 대신 RETURN을 사용하면 트래픽을 최상위 체인으로 돌려보내 여러분의 규칙으로 추가 처리할 수 있어요. |
| 스키마 | ACCEPT, RETURN 중 하나 |
| 기본값 | ACCEPT |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NFTABLESFILTERALLOWACTION |
| 설명 | Felix가 filter 테이블에서 "allow" 정책 판정을 나타낼 때 사용하는 nftables 액션을 제어해요. 기본값은 트래픽을 ACCEPT하는 것이며, 이는 최종(terminal) 액션이에요. 대신 RETURN을 사용하면 트래픽을 최상위 체인으로 돌려보내 여러분의 규칙으로 추가 처리할 수 있어요. |
| 스키마 | ACCEPT, RETURN 중 하나 |
| 기본값 | ACCEPT |
NftablesFilterDenyAction
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NftablesFilterDenyAction |
| 설명 | 네트워크 정책에 의해 거부(deny)된 트래픽을 어떻게 처리할지 제어해요. 기본적으로 Calico는 "drop" 액션으로 트래픽을 차단해요. 대신 "reject" 액션을 사용하고 싶다면 여기서 설정할 수 있어요. |
| 스키마 | DROP, REJECT 중 하나 |
| 기본값 | DROP |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NFTABLESFILTERDENYACTION |
| 설명 | 네트워크 정책에 의해 거부(deny)된 트래픽을 어떻게 처리할지 제어해요. 기본적으로 Calico는 "drop" 액션으로 트래픽을 차단해요. 대신 "reject" 액션을 사용하고 싶다면 여기서 설정할 수 있어요. |
| 스키마 | DROP, REJECT 중 하나 |
| 기본값 | DROP |
NftablesMangleAllowAction
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NftablesMangleAllowAction |
| 설명 | Felix가 mangle 테이블에서 "allow" 정책 판정을 나타낼 때 사용하는 nftables 액션을 제어해요. 기본값은 트래픽을 ACCEPT하는 것이며, 이는 최종(terminal) 액션이에요. 대신 RETURN을 사용하면 트래픽을 최상위 체인으로 돌려보내 여러분의 규칙으로 추가 처리할 수 있어요. |
| 스키마 | ACCEPT, RETURN 중 하나 |
| 기본값 | ACCEPT |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NFTABLESMANGLEALLOWACTION |
| 설명 | Felix가 mangle 테이블에서 "allow" 정책 판정을 나타낼 때 사용하는 nftables 액션을 제어해요. 기본값은 트래픽을 ACCEPT하는 것이며, 이는 최종(terminal) 액션이에요. 대신 RETURN을 사용하면 트래픽을 최상위 체인으로 돌려보내 여러분의 규칙으로 추가 처리할 수 있어요. |
| 스키마 | ACCEPT, RETURN 중 하나 |
| 기본값 | ACCEPT |
NftablesMarkMask
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NftablesMarkMask |
| 설명 | Felix가 자신의 nftables Mark 비트를 고를 때 사용하는 마스크예요. 최소 8비트가 설정된 32비트 16진수여야 하고, 그 비트들은 시스템에서 사용 중인 다른 mark 비트와 충돌하면 안 돼요. |
| 스키마 | 최소 2비트가 설정된 32비트 비트마스크(16진수 또는 10진수 허용), 예: 0xffff0000 |
| 기본값 | 0xffff0000 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NFTABLESMARKMASK |
| 설명 | Felix가 자신의 nftables Mark 비트를 고를 때 사용하는 마스크예요. 최소 8비트가 설정된 32비트 16진수여야 하고, 그 비트들은 시스템에서 사용 중인 다른 mark 비트와 충돌하면 안 돼요. |
| 스키마 | 최소 2비트가 설정된 32비트 비트마스크(16진수 또는 10진수 허용), 예: 0xffff0000 |
| 기본값 | 0xffff0000 |
NftablesRefreshInterval
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | NftablesRefreshInterval |
| 설명 | Felix가 nftables 규칙을 주기적으로 새로 고치는 간격을 제어해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 180 (3m0s) |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_NFTABLESREFRESHINTERVAL |
| 설명 | Felix가 nftables 규칙을 주기적으로 새로 고치는 간격을 제어해요. |
| 스키마 | 초 (부동소수점) |
| 기본값 | 180 (3m0s) |
데이터플레인: eBPF
BPFAttachType
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | BPFAttachType |
| 설명 | 네트워크 인터페이스에 BPF 프로그램을 붙이는(attach) 방식을 제어해요. 기본값인 Netkit은 netkit 디바이스인 워크로드 인터페이스에는 netkit API를 통해, 그 외 모든 인터페이스에는 TCX를 통해 붙여요. 서드파티 프로그램과 더 쉽게 공존할 수 있도록, 가능한 곳에서는 TCX를 사용해요. TC는 qdisc를 통하는 레거시 연결 방식을 강제할 수 있어요. TCX를 사용할 수 없으면 TC로 폴백해요. 이 값을 TCX 또는 TC로 설정하면 Felix가 기존 netkit 디바이스도 netkit API 대신 그 메커니즘으로 구동하는데, netkit을 지원하지 않는 릴리스로 다운그레이드하기 전에는 이렇게 해야 해요. |
| 스키마 | Netkit, TCX, TC 중 하나 |
| 기본값 | Netkit |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_BPFATTACHTYPE |
| 설명 | 네트워크 인터페이스에 BPF 프로그램을 붙이는(attach) 방식을 제어해요. 기본값인 Netkit은 netkit 디바이스인 워크로드 인터페이스에는 netkit API를 통해, 그 외 모든 인터페이스에는 TCX를 통해 붙여요. 서드파티 프로그램과 더 쉽게 공존할 수 있도록, 가능한 곳에서는 TCX를 사용해요. TC는 qdisc를 통하는 레거시 연결 방식을 강제할 수 있어요. TCX를 사용할 수 없으면 TC로 폴백해요. 이 값을 TCX 또는 TC로 설정하면 Felix가 기존 netkit 디바이스도 netkit API 대신 그 메커니즘으로 구동하는데, netkit을 지원하지 않는 릴리스로 다운그레이드하기 전에는 이렇게 해야 해요. |
| 스키마 | Netkit, TCX, TC 중 하나 |
| 기본값 | Netkit |
BPFCTLBLogFilter
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | BPFCTLBLogFilter |
| 설명 | BPFLogLevel이 debug일 때 커넥트 타임 로드 밸런서(connect time load balancer)가 무엇을 로그로 남길지 지정해요. 현재로서는 BPFLogFilters가 설정되어 있을 때 CTLB 로그를 보려면 'all'로 지정해야 해요. |
| 스키마 | all 중 하나 |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_BPFCTLBLOGFILTER |
| 설명 | BPFLogLevel이 debug일 때 커넥트 타임 로드 밸런서(connect time load balancer)가 무엇을 로그로 남길지 지정해요. 현재로서는 BPFLogFilters가 설정되어 있을 때 CTLB 로그를 보려면 'all'로 지정해야 해요. |
| 스키마 | all 중 하나 |
| 기본값 | 없음 |
BPFConnectTimeLoadBalancing
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | BPFConnectTimeLoadBalancing |
| 설명 | BPF 모드일 때 Felix가 커넥트 타임 로드 밸런서(connect-time load balancer)를 설치할지 제어해요. 커넥트 타임 로드 밸런서는 호스트가 Kubernetes 서비스에 도달할 수 있게 하는 데 필요하고, pod-to-service 연결 성능도 향상시켜요. TCP로 설정하면 커넥트 타임 로드 밸런싱이 TCP 포트를 가진 서비스에만 적용돼요. |
| 스키마 | Disabled, Enabled, TCP 중 하나 |
| 기본값 | TCP |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_BPFCONNECTTIMELOADBALANCING |
| 설명 | BPF 모드일 때 Felix가 커넥트 타임 로드 밸런서(connect-time load balancer)를 설치할지 제어해요. 커넥트 타임 로드 밸런서는 호스트가 Kubernetes 서비스에 도달할 수 있게 하는 데 필요하고, pod-to-service 연결 성능도 향상시켜요. TCP로 설정하면 커넥트 타임 로드 밸런싱이 TCP 포트를 가진 서비스에만 적용돼요. |
| 스키마 | Disabled, Enabled, TCP 중 하나 |
| 기본값 | TCP |
BPFConnectTimeLoadBalancingEnabled
탭: 구성 파일
| 속성 | 값 |
|---|---|
| 키 | BPFConnectTimeLoadBalancingEnabled |
| 설명 | BPF 모드일 때 Felix가 커넥션 타임 로드 밸런서(connection-time load balancer)를 설치할지 제어해요. 커넥트 타임 로드 밸런서는 호스트가 Kubernetes 서비스에 도달할 수 있게 하는 데 필요하고, pod-to-service 연결 성능도 향상시켜요. 끄는 유일한 이유는 디버깅 목적뿐이에요. 폐기(deprecated)됨: BPFConnectTimeLoadBalancing을 사용하세요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | 없음 |
탭: 환경 변수
| 속성 | 값 |
|---|---|
| 키 | FELIX_BPFCONNECTTIMELOADBALANCINGENABLED |
| 설명 | BPF 모드일 때 Felix가 커넥션 타임 로드 밸런서(connection-time load balancer)를 설치할지 제어해요. 커넥트 타임 로드 밸런서는 호스트가 Kubernetes 서비스에 도달할 수 있게 하는 데 필요하고, pod-to-service 연결 성능도 향상시켜요. 끄는 유일한 이유는 디버깅 목적뿐이에요. 폐기(deprecated)됨: BPFConnectTimeLoadBalancing을 사용하세요. |
| 스키마 | 불리언: true, 1, yes, y, t는 True로, false, 0, no, n, f는 (대소문자 구분 없이) False로 처리돼요. |
| 기본값 | 없음 |
BPFConntrackCleanupMode
더 알아보기 (Learn more)
Felix 구성 옵션 전체는 Felix 구성 레퍼런스의 이전·다음 파트에서 이어져요. iptables 새로 고침 주기나 nftables 액션을 조정할 때는 운영 환경의 커널 버전과 데이터플레인 백엔드를 먼저 확인해 보세요.