You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Newer operating systems have introduced a change to move iptables to (by default) use nf_tables as the backend packet filter rather than ip_tables. This change is apparent with (at least) the following operating systems:
CentOS 8
RHEL 8
Debian Buster
Expected Behavior
Flannel should work on a host and be able to detect whether the host is operating with ip_tables or nf_tables and switch accordingly.
Current Behavior
If you run Flannel on a CentOS 8/RHEL 8/Debian buster system, it will program legacy iptables rules in the host network namespace, which does not work well if the kubelet or kube-proxy is either a. using a containerized userspace and programming nf_tables rules or b. using the host utilities which will be programming nf_tables. On a Debian Buster system, it is possible to update-alternatives on the host to use the legacyiptables binaries, but this is essentially reverting the host to using the legacy binaries.
Possible Solution
The upstream Kubernetes project has implemented a change into its Debian Buster based images that allows for alternative switching (based on rule count) between nf_tables and legacy. This does however, depend on some other tool on the system creating iptables rules in the host network namespace that can be counted. In the case of Kubernetes, the Kubelet will always have been running (which should create iptables rules). I am not sure what other use cases exist with the flannel container image.
Newer operating systems have introduced a change to move
iptables
to (by default) usenf_tables
as the backend packet filter rather thanip_tables
. This change is apparent with (at least) the following operating systems:CentOS 8
RHEL 8
Debian Buster
Expected Behavior
Flannel should work on a host and be able to detect whether the host is operating with
ip_tables
ornf_tables
and switch accordingly.Current Behavior
If you run Flannel on a CentOS 8/RHEL 8/Debian buster system, it will program legacy iptables rules in the host network namespace, which does not work well if the
kubelet
orkube-proxy
is either a. using a containerized userspace and programmingnf_tables
rules or b. using the host utilities which will be programmingnf_tables
. On a Debian Buster system, it is possible toupdate-alternatives
on the host to use thelegacy
iptables
binaries, but this is essentially reverting the host to using the legacy binaries.Possible Solution
The upstream Kubernetes project has implemented a change into its Debian Buster based images that allows for alternative switching (based on rule count) between
nf_tables
andlegacy
. This does however, depend on some other tool on the system creatingiptables
rules in the host network namespace that can be counted. In the case of Kubernetes, the Kubelet will always have been running (which should create iptables rules). I am not sure what other use cases exist with the flannel container image.A very extensive issue in the
kubernetes/kubernetes
project exists here: kubernetes/kubernetes#71305Context
Your Environment
Additional Information
The text was updated successfully, but these errors were encountered: