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

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 액션을 조정할 때는 운영 환경의 커널 버전과 데이터플레인 백엔드를 먼저 확인해 보세요.