-
Notifications
You must be signed in to change notification settings - Fork 2.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Documentation/k8s: add daemonsets for all archs #989
Conversation
This makes it possible to deploy kube-flannel.yml on clusters with multiple architectures without modifications.
I've tested this on a v1.11 cluster with the master node being amd64 and a raspberry pi (being arm) and it works without a problem (as soon as I had done the same strategy for kube-proxy, which is required for actually setting up the network interfaces). Only issue I encountered is that it refused to deploy at first because of DiskPressure (4gb sd card with a default raspbian install doesn't leave much free disk space), which can be solved by setting the critical priority class as per #925 |
Excellent, thanks for the fix. |
According to upstream kube-flannel.yml PR[1], node-selector introduced is because flannel image doesn't support multiarch manifestes. Which means that it can't specify flannel:version-arch images in the same daemonset for every arch platform. To make every arch platform can deploy flannel upstream add one daemonset with nodeSelector per arch. But in magnum flannel image tag is configurable via label, thus every arch platform can use one daemonset to deploy by specify corresponding flannel image tag. So nodeSelector is unnecessary here. [1]: flannel-io/flannel#989 Change-Id: I97e78e8d77973e03eeff598b212287945ca00190 Task: 39453 Story: 2007026
* Update magnum from branch 'master' - Remove nodeSelector for flannel DaemonSet According to upstream kube-flannel.yml PR[1], node-selector introduced is because flannel image doesn't support multiarch manifestes. Which means that it can't specify flannel:version-arch images in the same daemonset for every arch platform. To make every arch platform can deploy flannel upstream add one daemonset with nodeSelector per arch. But in magnum flannel image tag is configurable via label, thus every arch platform can use one daemonset to deploy by specify corresponding flannel image tag. So nodeSelector is unnecessary here. [1]: flannel-io/flannel#989 Change-Id: I97e78e8d77973e03eeff598b212287945ca00190 Task: 39453 Story: 2007026
According to upstream kube-flannel.yml PR[1], node-selector introduced is because flannel image doesn't support multiarch manifestes. Which means that it can't specify flannel:version-arch images in the same daemonset for every arch platform. To make every arch platform can deploy flannel upstream add one daemonset with nodeSelector per arch. But in magnum flannel image tag is configurable via label, thus every arch platform can use one daemonset to deploy by specify corresponding flannel image tag. So nodeSelector is unnecessary here. [1]: flannel-io/flannel#989 Change-Id: I97e78e8d77973e03eeff598b212287945ca00190 Task: 39453 Story: 2007026 (cherry picked from commit 6a37621)
This makes it possible to deploy kube-flannel.yml on clusters with multiple architectures without modifications. Fixes #663.
Description
As suggested in this comment, I have added a daemonset for each architecture in
kube-flannel.yml
. Each daemonset will only add pods to nodes with the correct architecture.A nicer solution (in the future) for this would be to have something like docker multi-arch manifests so that only a single daemonset would be required.
I have only tried this on an amd64 cluster.
TODO
Release Note