On Tue, Aug 13, 2019 at 9:09 PM ChenQi <[email protected]> wrote: > > On 08/13/2019 08:34 PM, Bruce Ashfield wrote: > > > > On Tue, Aug 13, 2019 at 3:52 AM Chen Qi <[email protected]> wrote: >> >> Extract common settings of two cni recipe into cni.inc. >> Add comment in recipe file to explicitly state what the version is for. >> More sepcifically, the git version is used to track latest upstream, >> while the 0.7.1 version is used to ensure basic setup works for k8s. > > > As I mentioned, we won't do this. It doubles the maintenance and shows a > fundamental API / ABI incompatibility if we can't use the different versions > against a released k8s. > > There is one version of the recipe, and I've always had it working for the > released kubernetes and master. I'm not seeing any issues with the latest and > my k8s configs, so I'm not sure what you are running into that I'm not. > > Bruce > > > I've filed an issue for upstream. > https://github.com/containernetworking/plugins/issues/370#issuecomment-520718048 > Please check it. > > How do you setup you k8s cluster? Are you using flannel?
I'm not using flannel for my networking. It is typically weave or some custom CNI drivers in most of my tests. > I can confirm that the current versions in meta-virtualization would result > in "failed to create bridge "cni0": could not add "cni0": operation not > supported" error. This can be reproduced on both virtual machines and > physical machines. > > Execute the following commands on target, and you should see the coredns is > not running, and when describing the pod, you see the failure. > swapoff -a > kubeadm init --pod-network-cidr=10.244.0.0/16 > mkdir -p $HOME/.kube > cp -i /etc/kubernetes/admin.conf $HOME/.kube/config > chown $(id -u):$(id -g) $HOME/.kube/config > kubectl apply -f > https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml > > Please help double check if this could be reproduced on your side. I won't have time to check this for a few days. I have a lot of release deliverables to get moved along. But issues like this are expected, since we are still in a development cycle. Splitting and maintaining multiple locked version variants of the recipe is not a good long term strategy. What happens when someone wants another version. Do we keep three around ? Four ? Who's going to maintain, bug fix and eventually test/remove them ? I'd suggest keeping a bbappend with a set SRCREV in your local layer to not block your development while upstream works through the issue .. or we debug and try and contribute a fix to the upstream project. Bruce > > Best Regards, > Chen Qi > > >> >> >> Signed-off-by: Chen Qi <[email protected]> >> --- >> recipes-networking/cni/cni.inc | 79 +++++++++++++++++++++++++++++ >> recipes-networking/cni/cni_0.7.1.bb | 71 +------------------------- >> recipes-networking/cni/cni_git.bb | 73 +------------------------- >> 3 files changed, 83 insertions(+), 140 deletions(-) >> create mode 100644 recipes-networking/cni/cni.inc >> >> diff --git a/recipes-networking/cni/cni.inc b/recipes-networking/cni/cni.inc >> new file mode 100644 >> index 0000000..7a3b87f >> --- /dev/null >> +++ b/recipes-networking/cni/cni.inc >> @@ -0,0 +1,79 @@ >> +HOMEPAGE = "https://github.com/containernetworking/cni" >> +SUMMARY = "Container Network Interface - networking for Linux containers" >> +DESCRIPTION = "CNI (Container Network Interface), a Cloud Native Computing \ >> +Foundation project, consists of a specification and libraries for writing \ >> +plugins to configure network interfaces in Linux containers, along with a \ >> +number of supported plugins. CNI concerns itself only with network >> connectivity \ >> +of containers and removing allocated resources when the container is >> deleted. \ >> +Because of this focus, CNI has a wide range of support and the >> specification \ >> +is simple to implement. \ >> +" >> + >> +# 0.7.1 >> +SRCREV_cni = "4cfb7b568922a3c79a23e438dc52fe537fc9687e" >> +# 0.7.5 >> +SRCREV_plugins = "a62711a5da7a2dc2eb93eac47e103738ad923fd6" >> +SRC_URI = "\ >> + git://github.com/containernetworking/cni.git;branch=master;name=cni \ >> + >> git://github.com/containernetworking/plugins.git;branch=v0.7;destsuffix=plugins;name=plugins >> \ >> + " >> + >> +RPROVIDES_${PN} += "kubernetes-cni" >> + >> +LICENSE = "Apache-2.0" >> +LIC_FILES_CHKSUM = >> "file://src/import/LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc" >> + >> +GO_IMPORT = "import" >> + >> +PV = "0.7.1" >> + >> +inherit go >> +inherit goarch >> + >> +do_compile() { >> + # link fixups for compilation >> + rm -f ${S}/src/import/vendor/src >> + mkdir -p ${S}/src/import/vendor/ >> + ln -sf ./ ${S}/src/import/vendor/src >> + rm -rf ${S}/src/import/plugins >> + rm -rf ${S}/src/import/vendor/github.com/containernetworking/plugins >> + >> + mkdir -p ${S}/src/import/vendor/github.com/containernetworking/cni >> + >> + ln -sf ../../../../libcni >> ${S}/src/import/vendor/github.com/containernetworking/cni/libcni >> + ln -sf ../../../../pkg >> ${S}/src/import/vendor/github.com/containernetworking/cni/pkg >> + ln -sf ../../../../cnitool >> ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool >> + ln -sf ${WORKDIR}/plugins >> ${S}/src/import/vendor/github.com/containernetworking/plugins >> + >> + export >> GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go" >> + export CGO_ENABLED="1" >> + >> + cd ${S}/src/import/vendor/github.com/containernetworking/cni/libcni >> + ${GO} build >> + >> + cd ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool >> + ${GO} build >> + >> + cd ${S}/src/import/vendor/github.com/containernetworking/plugins/ >> + PLUGINS="$(ls -d plugins/meta/*; ls -d plugins/ipam/*; ls -d >> plugins/main/* | grep -v windows)" >> + mkdir -p ${WORKDIR}/plugins/bin/ >> + for p in $PLUGINS; do >> + plugin="$(basename "$p")" >> + echo "building: $p" >> + ${GO} build -o ${WORKDIR}/plugins/bin/$plugin >> github.com/containernetworking/plugins/$p >> + done >> +} >> + >> +do_install() { >> + localbindir="/opt/cni/bin" >> + >> + install -d ${D}${localbindir} >> + install -d ${D}/${sysconfdir}/cni/net.d >> + >> + install -m 755 ${S}/src/import/cnitool/cnitool ${D}/${localbindir} >> + install -m 755 -D ${WORKDIR}/plugins/bin/* ${D}/${localbindir} >> +} >> + >> +FILES_${PN} += "/opt/cni/bin/*" >> + >> +INSANE_SKIP_${PN} += "ldflags already-stripped" >> diff --git a/recipes-networking/cni/cni_0.7.1.bb >> b/recipes-networking/cni/cni_0.7.1.bb >> index 7a3b87f..7977040 100644 >> --- a/recipes-networking/cni/cni_0.7.1.bb >> +++ b/recipes-networking/cni/cni_0.7.1.bb >> @@ -1,13 +1,5 @@ >> -HOMEPAGE = "https://github.com/containernetworking/cni" >> -SUMMARY = "Container Network Interface - networking for Linux containers" >> -DESCRIPTION = "CNI (Container Network Interface), a Cloud Native Computing \ >> -Foundation project, consists of a specification and libraries for writing \ >> -plugins to configure network interfaces in Linux containers, along with a \ >> -number of supported plugins. CNI concerns itself only with network >> connectivity \ >> -of containers and removing allocated resources when the container is >> deleted. \ >> -Because of this focus, CNI has a wide range of support and the >> specification \ >> -is simple to implement. \ >> -" >> +# This cni version is here to ensure that basic k8s setup with flannel >> could work. >> +require cni.inc >> >> # 0.7.1 >> SRCREV_cni = "4cfb7b568922a3c79a23e438dc52fe537fc9687e" >> @@ -17,63 +9,4 @@ SRC_URI = "\ >> git://github.com/containernetworking/cni.git;branch=master;name=cni \ >> >> git://github.com/containernetworking/plugins.git;branch=v0.7;destsuffix=plugins;name=plugins >> \ >> " >> - >> -RPROVIDES_${PN} += "kubernetes-cni" >> - >> -LICENSE = "Apache-2.0" >> -LIC_FILES_CHKSUM = >> "file://src/import/LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc" >> - >> -GO_IMPORT = "import" >> - >> PV = "0.7.1" >> - >> -inherit go >> -inherit goarch >> - >> -do_compile() { >> - # link fixups for compilation >> - rm -f ${S}/src/import/vendor/src >> - mkdir -p ${S}/src/import/vendor/ >> - ln -sf ./ ${S}/src/import/vendor/src >> - rm -rf ${S}/src/import/plugins >> - rm -rf ${S}/src/import/vendor/github.com/containernetworking/plugins >> - >> - mkdir -p ${S}/src/import/vendor/github.com/containernetworking/cni >> - >> - ln -sf ../../../../libcni >> ${S}/src/import/vendor/github.com/containernetworking/cni/libcni >> - ln -sf ../../../../pkg >> ${S}/src/import/vendor/github.com/containernetworking/cni/pkg >> - ln -sf ../../../../cnitool >> ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool >> - ln -sf ${WORKDIR}/plugins >> ${S}/src/import/vendor/github.com/containernetworking/plugins >> - >> - export >> GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go" >> - export CGO_ENABLED="1" >> - >> - cd ${S}/src/import/vendor/github.com/containernetworking/cni/libcni >> - ${GO} build >> - >> - cd ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool >> - ${GO} build >> - >> - cd ${S}/src/import/vendor/github.com/containernetworking/plugins/ >> - PLUGINS="$(ls -d plugins/meta/*; ls -d plugins/ipam/*; ls -d >> plugins/main/* | grep -v windows)" >> - mkdir -p ${WORKDIR}/plugins/bin/ >> - for p in $PLUGINS; do >> - plugin="$(basename "$p")" >> - echo "building: $p" >> - ${GO} build -o ${WORKDIR}/plugins/bin/$plugin >> github.com/containernetworking/plugins/$p >> - done >> -} >> - >> -do_install() { >> - localbindir="/opt/cni/bin" >> - >> - install -d ${D}${localbindir} >> - install -d ${D}/${sysconfdir}/cni/net.d >> - >> - install -m 755 ${S}/src/import/cnitool/cnitool ${D}/${localbindir} >> - install -m 755 -D ${WORKDIR}/plugins/bin/* ${D}/${localbindir} >> -} >> - >> -FILES_${PN} += "/opt/cni/bin/*" >> - >> -INSANE_SKIP_${PN} += "ldflags already-stripped" >> diff --git a/recipes-networking/cni/cni_git.bb >> b/recipes-networking/cni/cni_git.bb >> index 5348b95..06b37a4 100644 >> --- a/recipes-networking/cni/cni_git.bb >> +++ b/recipes-networking/cni/cni_git.bb >> @@ -1,13 +1,5 @@ >> -HOMEPAGE = "https://github.com/containernetworking/cni" >> -SUMMARY = "Container Network Interface - networking for Linux containers" >> -DESCRIPTION = "CNI (Container Network Interface), a Cloud Native Computing \ >> -Foundation project, consists of a specification and libraries for writing \ >> -plugins to configure network interfaces in Linux containers, along with a \ >> -number of supported plugins. CNI concerns itself only with network >> connectivity \ >> -of containers and removing allocated resources when the container is >> deleted. \ >> -Because of this focus, CNI has a wide range of support and the >> specification \ >> -is simple to implement. \ >> -" >> +# This cni version is supposed to track latest upstream. >> +require cni.inc >> >> SRCREV_cni = "dc71cd2ba60c452c56a0a259f2a23d2afe42b688" >> SRCREV_plugins = "0eddc554c0747200b7b112ce5322dcfa525298cf" >> @@ -15,65 +7,4 @@ SRC_URI = "\ >> git://github.com/containernetworking/cni.git;nobranch=1;name=cni \ >> >> git://github.com/containernetworking/plugins.git;nobranch=1;destsuffix=plugins;name=plugins >> \ >> " >> - >> -RPROVIDES_${PN} += "kubernetes-cni" >> - >> -LICENSE = "Apache-2.0" >> -LIC_FILES_CHKSUM = >> "file://src/import/LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc" >> - >> -GO_IMPORT = "import" >> - >> PV = "0.7.0+git${SRCREV_cni}" >> - >> -inherit go >> -inherit goarch >> - >> -do_compile() { >> - # link fixups for compilation >> - rm -f ${S}/src/import/vendor/src >> - mkdir -p ${S}/src/import/vendor/ >> - ln -sf ./ ${S}/src/import/vendor/src >> - rm -rf ${S}/src/import/plugins >> - rm -rf ${S}/src/import/vendor/github.com/containernetworking/plugins >> - >> - mkdir -p ${S}/src/import/vendor/github.com/containernetworking/cni >> - >> - ln -sf ../../../../libcni >> ${S}/src/import/vendor/github.com/containernetworking/cni/libcni >> - ln -sf ../../../../pkg >> ${S}/src/import/vendor/github.com/containernetworking/cni/pkg >> - ln -sf ../../../../cnitool >> ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool >> - ln -sf ${WORKDIR}/plugins >> ${S}/src/import/vendor/github.com/containernetworking/plugins >> - >> - export >> GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go" >> - export CGO_ENABLED="1" >> - >> - cd ${S}/src/import/vendor/github.com/containernetworking/cni/libcni >> - ${GO} build >> - >> - cd ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool >> - ${GO} build >> - >> - cd ${S}/src/import/vendor/github.com/containernetworking/plugins/ >> - PLUGINS="$(ls -d plugins/meta/*; ls -d plugins/ipam/*; ls -d >> plugins/main/* | grep -v windows)" >> - mkdir -p ${WORKDIR}/plugins/bin/ >> - for p in $PLUGINS; do >> - plugin="$(basename "$p")" >> - echo "building: $p" >> - ${GO} build -o ${WORKDIR}/plugins/bin/$plugin >> github.com/containernetworking/plugins/$p >> - done >> -} >> - >> -do_install() { >> - localbindir="/opt/cni/bin" >> - >> - install -d ${D}${localbindir} >> - install -d ${D}/${sysconfdir}/cni/net.d >> - >> - install -m 755 ${S}/src/import/cnitool/cnitool ${D}/${localbindir} >> - install -m 755 -D ${WORKDIR}/plugins/bin/* ${D}/${localbindir} >> -} >> - >> -FILES_${PN} += "/opt/cni/bin/*" >> - >> -INSANE_SKIP_${PN} += "ldflags already-stripped" >> - >> -deltask compile_ptest_base >> -- >> 2.17.1 >> >> -- >> _______________________________________________ >> meta-virtualization mailing list >> [email protected] >> https://lists.yoctoproject.org/listinfo/meta-virtualization > > > > -- > - Thou shalt not follow the NULL pointer, for chaos and madness await thee at > its end > - "Use the force Harry" - Gandalf, Star Trek II > > -- - Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end - "Use the force Harry" - Gandalf, Star Trek II -- _______________________________________________ meta-virtualization mailing list [email protected] https://lists.yoctoproject.org/listinfo/meta-virtualization
