Skip to content
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

Merged
merged 1 commit into from
Jul 9, 2018

Conversation

lentzi90
Copy link
Contributor

@lentzi90 lentzi90 commented Apr 28, 2018

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

  • Test on multi-arch cluster.

Release Note

None required

This makes it possible to deploy kube-flannel.yml on clusters with multiple architectures without modifications.
@drake7707
Copy link

drake7707 commented Jul 6, 2018

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

image

@tomdee
Copy link
Contributor

tomdee commented Jul 9, 2018

Excellent, thanks for the fix.

@tomdee tomdee merged commit 794c354 into flannel-io:master Jul 9, 2018
openstack-gerrit pushed a commit to openstack/magnum that referenced this pull request Apr 17, 2020
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
openstack-gerrit pushed a commit to openstack/openstack that referenced this pull request Apr 17, 2020
* 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
openstack-gerrit pushed a commit to openstack/magnum that referenced this pull request Apr 17, 2020
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Please include instructions for installing on ARM
3 participants