Open monoxane opened 12 months ago
Talos already mounts cgroupv2 and bpffs filesystems, it seems the calico check failed to detect that and trying to mount again:
Checking if cgroup2 filesystem is mounted.
Check if calico supports skipping those checks, in case of cilium there's options in the helm chart to skip those two checks, also less init containers
I'm running into the same issue, has any progress been made?
It first tries to find in /nodeproc/1/mountinfo
whether the fs is already mounted. So it does not seem like it is mounted yet. Interestingly, it manages to create /run/calico/cgroup
. Maybe os.MkdirAll
does not fail if the dir already exists. We could make the location configurable instead of hardwired 🤦
Are there any suggested workarounds for this little issue?
We would also like a solution for this.
Any updates on the issue? We would like to switch to eBPF but this is currently a blocker
I have merged the PR that allows you to set cgroup path for calico node. Atm if you are using operator, you would need to annotate calico-node ds so that operator does not change it. We will try to figure out acceptable operator configuration asap.
I'm provisioning a cluster using the Talos Linux + Kube distro and am finding that the
calico-node
mount-ebpffs
container fails to mount the cgroup2 file system as called from calico/node/pkg/nodeinit/calico-init_linux.go.Expected Behavior
Calico with eBPF dataplane works on Talos
Current Behavior
Calico with eBPF dataplane does not work on Talos due to an FS mount failure in the eBPF mount init container
Possible Solution
I am currently under the impression this is because
bpfdefs.CgroupV2Path
is/run/calico/cgroup
which seems to be a non-writable directory under Talos (the vast majority of rootfs is readonly with the exception of specific files and the entirety of/var
), but mounting anemptyDir
at that location in both the init and the main pod does not provide any improvement.I am unable to change the bpfdefs const and rebuild calico entirely due to environmental constraints (no Docker installs as required by the makefiles) but if needed I can go through the processes to get a environments set up in my work gcloud tenancy and build it that way. I am also happy to run any dev builds produced by the calico team.
Steps to Reproduce (for bugs)
Install a Talos cluster Install Calico with the operator and this Installation CR
Context
We need to use the eBPF dataplane for some shenanigans that doesn't work with the iptables one (mostly Source IP related), so can't just use the non-eBPF mode. Calico is the only competent CNI with BGP + eBPF support that meets our needs.
Cilium, while not helpful to us due to BGP issues, is supported on Talos and their eBPF dataplane works when installed with the following Talos guide, something in there might be helpful in working this out. https://www.talos.dev/v1.4/kubernetes-guides/network/deploying-cilium/#without-kube-proxy
Your Environment
Calico: quay.io/tigera/operator:v1.30.4 docker.io/calico/node:v3.26.1
Other: Talos (v1.4.6) kernel 6.1.35-talos Containerd 1.6.21 Kubelet v1.27.3