From 126b37dfe8d315438f50851ad98352182ce3bef7 Mon Sep 17 00:00:00 2001 From: Sachin Gopala Krishna Date: Thu, 15 Jun 2023 12:32:08 -0400 Subject: [PATCH] remove support for versions of K8s lower than 1.24 Remove support for k8s versions 1.23 and lower since they are not supported. This change removes k8s versions 1.21.8, 1.22.5, 1.23.1 from the build Test Plan: Pass: Tested by successfully creating and installing ISO on AIO-SX. Pass: Verify /usr/local/kubernetes/ doesn't contain k8s versions 1.21.8, 1.22.5 and 1.23.1. Pass: Perform platform upgrade, then k8s upgrade to v1.26.1. Story: 2010368 Task: 48240 Depends-On: https://review.opendev.org/c/starlingx/config/+/886188 Change-Id: If3b9934937c542074ebbcb23d49a5fd4c7e69898 Signed-off-by: Sachin Gopala Krishna Signed-off-by: Boovan Rajendran --- centos_iso_image.inc | 9 - centos_pkg_dirs | 3 - centos_tarball-dl.lst | 3 - debian_iso_image.inc | 12 - debian_pkg_dirs | 3 - ...s-make-isolcpus-allocation-SMT-aware.patch | 240 -- .../kubernetes-1.21.8/centos/Readme.rst | 9 - .../kubernetes-1.21.8/centos/build_srpm.data | 6 - .../files/Change-log-level-to-Debug.patch | 65 - ...th-for-coredns-only-for-default-repo.patch | 117 - ...rt-for-kubernetes-to-ignore-isolcpus.patch | 79 - .../centos/files/genmanpages.sh | 84 - ...latform-pods-with-zero-CPU-resources.patch | 108 - .../centos/files/kubeadm.conf | 18 - .../centos/files/kubelet-cgroup-setup.sh | 132 - ...er-disable-CFS-quota-throttling-for-.patch | 256 -- ...er-infrastructure-pods-use-system-re.patch | 139 - ...er-introduce-concept-of-isolated-CPU.patch | 535 ---- ...er-keep-normal-containers-off-reserv.patch | 313 --- ...isolcpus-allocation-when-SMT-enabled.patch | 50 - ...s-make-isolcpus-allocation-SMT-aware.patch | 151 -- .../kubernetes-1.21.8/centos/kubernetes.spec | 2261 ---------------- .../centos/kubernetes.spec.orig | 2282 ----------------- .../debian/deb_folder/changelog | 161 -- .../debian/deb_folder/control | 90 - .../debian/deb_folder/copyright | 470 ---- .../debian/deb_folder/genmanpages.sh | 84 - .../debian/deb_folder/kubeadm.conf | 18 - .../debian/deb_folder/kubelet-cgroup-setup.sh | 132 - .../kubernetes-1.21.8-client.install | 3 - ...kubernetes-1.21.8-client.lintian-overrides | 9 - .../deb_folder/kubernetes-1.21.8-kubeadm.dirs | 1 - .../kubernetes-1.21.8-kubeadm.install | 2 - .../deb_folder/kubernetes-1.21.8-master.dirs | 5 - .../kubernetes-1.21.8-master.install | 8 - ...kubernetes-1.21.8-master.lintian-overrides | 7 - .../deb_folder/kubernetes-1.21.8-misc.install | 11 - .../deb_folder/kubernetes-1.21.8-node.install | 2 - .../kubernetes-1.21.8-node.lintian-overrides | 4 - .../kubernetes-1.21.8-unit-test.install | 2 - ...th-for-coredns-only-for-default-repo.patch | 117 - ...rt-for-kubernetes-to-ignore-isolcpus.patch | 79 - ...latform-pods-with-zero-CPU-resources.patch | 108 - ...er-disable-CFS-quota-throttling-for-.patch | 256 -- ...er-infrastructure-pods-use-system-re.patch | 139 - ...er-introduce-concept-of-isolated-CPU.patch | 535 ---- ...er-keep-normal-containers-off-reserv.patch | 313 --- .../debian/deb_folder/patches/series | 7 - .../kubernetes-1.21.8/debian/deb_folder/rules | 138 - .../debian/deb_folder/source/format | 1 - .../kubernetes-1.21.8/debian/meta_data.yaml | 12 - .../kubernetes-1.22.5/centos/Readme.rst | 4 - .../kubernetes-1.22.5/centos/build_srpm.data | 6 - ...th-for-coredns-only-for-default-repo.patch | 117 - ...rt-for-kubernetes-to-ignore-isolcpus.patch | 79 - ...latform-pods-with-zero-CPU-resources.patch | 108 - .../centos/files/kubeadm.conf | 18 - .../centos/files/kubelet-cgroup-setup.sh | 132 - ...er-disable-CFS-quota-throttling-for-.patch | 297 --- ...er-infrastructure-pods-use-system-re.patch | 160 -- ...er-introduce-concept-of-isolated-CPU.patch | 564 ---- ...er-keep-normal-containers-off-reserv.patch | 319 --- ...isolcpus-allocation-when-SMT-enabled.patch | 50 - ...s-make-isolcpus-allocation-SMT-aware.patch | 151 -- .../centos/files/update-k8s-feature-gates.sh | 196 -- .../kubernetes-1.22.5/centos/kubernetes.spec | 2259 ---------------- .../centos/kubernetes.spec.orig | 2282 ----------------- .../debian/deb_folder/changelog | 161 -- .../debian/deb_folder/control | 90 - .../debian/deb_folder/copyright | 477 ---- .../debian/deb_folder/kubeadm.conf | 18 - .../debian/deb_folder/kubelet-cgroup-setup.sh | 132 - .../kubernetes-1.22.5-client.install | 3 - ...kubernetes-1.22.5-client.lintian-overrides | 9 - .../deb_folder/kubernetes-1.22.5-kubeadm.dirs | 1 - .../kubernetes-1.22.5-kubeadm.install | 2 - .../deb_folder/kubernetes-1.22.5-master.dirs | 5 - .../kubernetes-1.22.5-master.install | 8 - ...kubernetes-1.22.5-master.lintian-overrides | 7 - .../deb_folder/kubernetes-1.22.5-misc.install | 11 - .../deb_folder/kubernetes-1.22.5-node.install | 2 - .../kubernetes-1.22.5-node.lintian-overrides | 4 - .../kubernetes-1.22.5-unit-test.install | 2 - ...th-for-coredns-only-for-default-repo.patch | 117 - ...rt-for-kubernetes-to-ignore-isolcpus.patch | 79 - ...latform-pods-with-zero-CPU-resources.patch | 108 - ...er-disable-CFS-quota-throttling-for-.patch | 297 --- ...er-infrastructure-pods-use-system-re.patch | 160 -- ...er-introduce-concept-of-isolated-CPU.patch | 564 ---- ...er-keep-normal-containers-off-reserv.patch | 319 --- ...isolcpus-allocation-when-SMT-enabled.patch | 50 - ...s-make-isolcpus-allocation-SMT-aware.patch | 151 -- .../debian/deb_folder/patches/series | 9 - .../kubernetes-1.22.5/debian/deb_folder/rules | 140 - .../debian/deb_folder/source/format | 1 - .../kubernetes-1.22.5/debian/meta_data.yaml | 12 - .../kubernetes-1.23.1/centos/Readme.rst | 4 - .../kubernetes-1.23.1/centos/build_srpm.data | 5 - ...th-for-coredns-only-for-default-repo.patch | 113 - ...rt-for-kubernetes-to-ignore-isolcpus.patch | 79 - ...latform-pods-with-zero-CPU-resources.patch | 108 - .../centos/files/kubeadm.conf | 18 - .../centos/files/kubelet-cgroup-setup.sh | 132 - ...er-disable-CFS-quota-throttling-for-.patch | 287 --- ...er-infra-pods-use-system-reserved-CP.patch | 149 -- ...er-introduce-concept-of-isolated-CPU.patch | 562 ---- ...er-keep-normal-containers-off-reserv.patch | 311 --- ...isolcpus-allocation-when-SMT-enabled.patch | 50 - ...s-make-isolcpus-allocation-SMT-aware.patch | 151 -- .../kubernetes-1.23.1/centos/kubernetes.spec | 2254 ---------------- .../centos/kubernetes.spec.orig | 2282 ----------------- .../debian/deb_folder/changelog | 160 -- .../debian/deb_folder/control | 90 - .../debian/deb_folder/copyright | 477 ---- .../debian/deb_folder/kubeadm.conf | 18 - .../debian/deb_folder/kubelet-cgroup-setup.sh | 132 - .../kubernetes-1.23.1-client.install | 3 - ...kubernetes-1.23.1-client.lintian-overrides | 9 - .../deb_folder/kubernetes-1.23.1-kubeadm.dirs | 1 - .../kubernetes-1.23.1-kubeadm.install | 2 - .../deb_folder/kubernetes-1.23.1-master.dirs | 5 - .../kubernetes-1.23.1-master.install | 8 - ...kubernetes-1.23.1-master.lintian-overrides | 7 - .../deb_folder/kubernetes-1.23.1-misc.install | 11 - .../deb_folder/kubernetes-1.23.1-node.install | 2 - .../kubernetes-1.23.1-node.lintian-overrides | 4 - .../kubernetes-1.23.1-unit-test.install | 2 - ...th-for-coredns-only-for-default-repo.patch | 113 - ...rt-for-kubernetes-to-ignore-isolcpus.patch | 79 - ...latform-pods-with-zero-CPU-resources.patch | 108 - ...er-disable-CFS-quota-throttling-for-.patch | 287 --- ...er-infra-pods-use-system-reserved-CP.patch | 150 -- ...er-introduce-concept-of-isolated-CPU.patch | 562 ---- ...er-keep-normal-containers-off-reserv.patch | 311 --- ...isolcpus-allocation-when-SMT-enabled.patch | 50 - ...s-make-isolcpus-allocation-SMT-aware.patch | 151 -- .../debian/deb_folder/patches/series | 9 - .../kubernetes-1.23.1/debian/deb_folder/rules | 138 - .../debian/deb_folder/source/format | 1 - .../kubernetes-1.23.1/debian/meta_data.yaml | 12 - 140 files changed, 28677 deletions(-) delete mode 100644 kubernetes/kubernetes-1.18.1/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/Readme.rst delete mode 100644 kubernetes/kubernetes-1.21.8/centos/build_srpm.data delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/Change-log-level-to-Debug.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/genmanpages.sh delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubeadm.conf delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubelet-cgroup-setup.sh delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-infrastructure-pods-use-system-re.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch delete mode 100644 kubernetes/kubernetes-1.21.8/centos/kubernetes.spec delete mode 100644 kubernetes/kubernetes-1.21.8/centos/kubernetes.spec.orig delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/changelog delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/control delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/copyright delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/genmanpages.sh delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubeadm.conf delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubelet-cgroup-setup.sh delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-client.install delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-client.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-kubeadm.dirs delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-kubeadm.install delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.dirs delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.install delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-misc.install delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-node.install delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-node.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-unit-test.install delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-infrastructure-pods-use-system-re.patch delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/series delete mode 100755 kubernetes/kubernetes-1.21.8/debian/deb_folder/rules delete mode 100644 kubernetes/kubernetes-1.21.8/debian/deb_folder/source/format delete mode 100644 kubernetes/kubernetes-1.21.8/debian/meta_data.yaml delete mode 100644 kubernetes/kubernetes-1.22.5/centos/Readme.rst delete mode 100644 kubernetes/kubernetes-1.22.5/centos/build_srpm.data delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubeadm.conf delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubelet-cgroup-setup.sh delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-infrastructure-pods-use-system-re.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch delete mode 100644 kubernetes/kubernetes-1.22.5/centos/files/update-k8s-feature-gates.sh delete mode 100644 kubernetes/kubernetes-1.22.5/centos/kubernetes.spec delete mode 100644 kubernetes/kubernetes-1.22.5/centos/kubernetes.spec.orig delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/changelog delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/control delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/copyright delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubeadm.conf delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubelet-cgroup-setup.sh delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-client.install delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-client.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-kubeadm.dirs delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-kubeadm.install delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.dirs delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.install delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-misc.install delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-node.install delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-node.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-unit-test.install delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-infrastructure-pods-use-system-re.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubernetes-make-isolcpus-allocation-SMT-aware.patch delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/series delete mode 100755 kubernetes/kubernetes-1.22.5/debian/deb_folder/rules delete mode 100644 kubernetes/kubernetes-1.22.5/debian/deb_folder/source/format delete mode 100644 kubernetes/kubernetes-1.22.5/debian/meta_data.yaml delete mode 100644 kubernetes/kubernetes-1.23.1/centos/Readme.rst delete mode 100644 kubernetes/kubernetes-1.23.1/centos/build_srpm.data delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubeadm.conf delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubelet-cgroup-setup.sh delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch delete mode 100644 kubernetes/kubernetes-1.23.1/centos/kubernetes.spec delete mode 100644 kubernetes/kubernetes-1.23.1/centos/kubernetes.spec.orig delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/changelog delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/control delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/copyright delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubeadm.conf delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubelet-cgroup-setup.sh delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-client.install delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-client.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-kubeadm.dirs delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-kubeadm.install delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.dirs delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.install delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-misc.install delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-node.install delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-node.lintian-overrides delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-unit-test.install delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubernetes-make-isolcpus-allocation-SMT-aware.patch delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/series delete mode 100755 kubernetes/kubernetes-1.23.1/debian/deb_folder/rules delete mode 100644 kubernetes/kubernetes-1.23.1/debian/deb_folder/source/format delete mode 100644 kubernetes/kubernetes-1.23.1/debian/meta_data.yaml diff --git a/centos_iso_image.inc b/centos_iso_image.inc index 499560c23..b08d3bbab 100644 --- a/centos_iso_image.inc +++ b/centos_iso_image.inc @@ -130,15 +130,6 @@ memcached # kubernetes kubernetes-unversioned -kubernetes-1.21.8-node -kubernetes-1.21.8-kubeadm -kubernetes-1.21.8-client -kubernetes-1.22.5-node -kubernetes-1.22.5-kubeadm -kubernetes-1.22.5-client -kubernetes-1.23.1-node -kubernetes-1.23.1-kubeadm -kubernetes-1.23.1-client containerd k8s-pod-recovery k8s-cni-cache-cleanup diff --git a/centos_pkg_dirs b/centos_pkg_dirs index 043cd9fb8..d8f2bd7fe 100644 --- a/centos_pkg_dirs +++ b/centos_pkg_dirs @@ -53,9 +53,6 @@ docker/python-docker kubernetes/containerd kubernetes/cni/plugins kubernetes/cni/bond-cni -kubernetes/kubernetes-1.21.8 -kubernetes/kubernetes-1.22.5 -kubernetes/kubernetes-1.23.1 kubernetes/kubernetes-unversioned kubernetes/docker-distribution kubernetes/etcd diff --git a/centos_tarball-dl.lst b/centos_tarball-dl.lst index 9fe409874..782bc125a 100644 --- a/centos_tarball-dl.lst +++ b/centos_tarball-dl.lst @@ -43,9 +43,6 @@ kexec-tools-2.0.21.tar.xz#kexec-tools-2.0.21#https://www.kernel.org/pub/linux/ut keycodemapdb-16e5b07.tar.gz#keycodemapdb#https://github.com/CendioOssman/keycodemapdb/tarball/16e5b0787687d8904dad2c026107409eb9bfcb95#http## kubectl-cert_manager-linux-amd64.tar.gz#LICENSES#https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/kubectl-cert_manager-linux-amd64.tar.gz#https## kubernetes-contrib-v1.18.1.tar.gz#kubernetes-contrib-1.18.1#https://github.com/kubernetes-retired/contrib/tarball/89f6948e24578fed2a90a87871b2263729f90ac3#http## -kubernetes-v1.21.8.tar.gz#kubernetes-1.21.8#https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.21.8.tar.gz#http## -kubernetes-v1.22.5.tar.gz#kubernetes-1.22.5#https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.22.5.tar.gz#http## -kubernetes-v1.23.1.tar.gz#kubernetes-1.23.1#https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.23.1.tar.gz#http## kvm-unit-tests.git-4ea7633.tar.bz2#kvm-unit-tests#https://git.kernel.org/pub/scm/virt/kvm/kvm-unit-tests.git/snapshot/kvm-unit-tests-20171020.tar.gz#http## ldapscripts-2.0.8.tgz#ldapscripts-2.0.8#https://sourceforge.net/projects/ldapscripts/files/ldapscripts/ldapscripts-2.0.8/ldapscripts-2.0.8.tgz/download#http## libbpf-0.5.0.tar.gz#libbpf-0.5.0#https://github.com/libbpf/libbpf/archive/v0.5.0.tar.gz#https## diff --git a/debian_iso_image.inc b/debian_iso_image.inc index 1f9f3561e..fdc007f66 100644 --- a/debian_iso_image.inc +++ b/debian_iso_image.inc @@ -187,18 +187,6 @@ lvm2 python3-keyrings.alt #kubernetes-x (-master, -misc, -unit-test used only for build) -#kubernetes-1.21.8 -kubernetes-1.21.8-client -kubernetes-1.21.8-kubeadm -kubernetes-1.21.8-node -#kubernetes-1.22.5 -kubernetes-1.22.5-client -kubernetes-1.22.5-kubeadm -kubernetes-1.22.5-node -#kubernetes-1.23.1 -kubernetes-1.23.1-client -kubernetes-1.23.1-kubeadm -kubernetes-1.23.1-node #kubernetes-1.24.4 kubernetes-1.24.4-client kubernetes-1.24.4-kubeadm diff --git a/debian_pkg_dirs b/debian_pkg_dirs index bb34ae530..04483057b 100644 --- a/debian_pkg_dirs +++ b/debian_pkg_dirs @@ -65,9 +65,6 @@ kubernetes/etcd kubernetes/helm kubernetes/k8s-cni-cache-cleanup kubernetes/k8s-pod-recovery -kubernetes/kubernetes-1.21.8 -kubernetes/kubernetes-1.22.5 -kubernetes/kubernetes-1.23.1 kubernetes/kubernetes-1.24.4 kubernetes/kubernetes-1.25.3 kubernetes/kubernetes-1.26.1 diff --git a/kubernetes/kubernetes-1.18.1/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch b/kubernetes/kubernetes-1.18.1/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch deleted file mode 100644 index 03e0a9497..000000000 --- a/kubernetes/kubernetes-1.18.1/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch +++ /dev/null @@ -1,240 +0,0 @@ -From 6bf9795d5e0dfc705299381dc902b22d03ded063 Mon Sep 17 00:00:00 2001 -From: Tao Wang -Date: Tue, 25 Jan 2022 19:23:43 -0500 -Subject: [PATCH] kubernetes: make isolcpus allocation SMT-aware - -Enhance isolcpus support in Kubernetes to allocate isolated SMT -siblings to the same container when SMT/HT is enabled on the host. - -As it stands, the device manager code in Kubernetes is not SMT-aware -(since normally it doesn't deal with CPUs). However, StarlingX -exposes isolated CPUs as devices and if possible we want to allocate -all SMT siblings from a CPU core to the same container in order to -minimize cross- container interference due to resource contention -within the CPU core. - -The solution is basically to take the list of isolated CPUs and -re-order it so that the SMT siblings are next to each other. That -way the existing resource selection code will allocate the siblings -together. As an optimization, if it is known that an odd number -of isolated CPUs are desired, a singleton SMT sibling will be -inserted into the list to avoid breaking up sibling pairs. - -Signed-off-by: Tao Wang ---- - pkg/kubelet/cm/devicemanager/manager.go | 153 ++++++++++++++++++++++-- - 1 file changed, 146 insertions(+), 7 deletions(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 65b91393..76a0ea6e 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -19,10 +19,13 @@ package devicemanager - import ( - "context" - "fmt" -+ "io/ioutil" - "net" - "os" - "path/filepath" - "sort" -+ "strconv" -+ "strings" - "sync" - "time" - -@@ -41,6 +44,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors" - cputopology "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" -+ "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/checkpoint" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" -@@ -635,6 +639,80 @@ func (m *ManagerImpl) UpdateAllocatedDevices() { - m.allocatedDevices = m.podDevices.devices() - } - -+//Given a list of isolated CPUs in 'devices', and the number of desired CPUs in 'needed', -+//return an ordered list of isolated CPUs such that the first 'needed' CPUs in the list -+//contain as many hyperthread sibling pairs as possible. -+func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) { -+ var dev_lst []string -+ var single_lst []string -+ sibling_lst := make([]string, 0, int(devices.Len())) -+ _iterated_cpu := make(map[string]string) -+ -+ get_sibling := func(cpu string, cpu_lst []string) string { -+ if cpu_lst[0] == cpu { -+ return cpu_lst[1] -+ } else { -+ return cpu_lst[0] -+ } -+ } -+ for cpu_id := range devices { -+ // If we've already found cpu_id as a sibling, skip it. -+ if _, ok := _iterated_cpu[cpu_id]; ok { -+ continue -+ } -+ devPath := fmt.Sprintf("/sys/devices/system/cpu/cpu%s/topology/thread_siblings_list", cpu_id) -+ dat, err := ioutil.ReadFile(devPath) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Can't read cpu[%s] thread_siblings_list", cpu_id) -+ } -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cpu_pair_set, err := cpuset.Parse(cpustring) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Unable to parse thread_siblings_list[%s] string to cpuset", cpustring) -+ } -+ var cpu_pair_lst []string -+ for _, v := range cpu_pair_set.ToSlice() { -+ cpu_pair_lst = append(cpu_pair_lst, strconv.Itoa(v)) -+ } -+ sibling_cpu_id := get_sibling(cpu_id, cpu_pair_lst) -+ -+ if _, ok := devices[sibling_cpu_id]; ok { -+ sibling_lst = append(sibling_lst, cpu_id, sibling_cpu_id) -+ _iterated_cpu[sibling_cpu_id] = "" -+ } else { -+ single_lst = append(single_lst, cpu_id) -+ } -+ _iterated_cpu[cpu_id] = "" -+ } -+ -+ if needed%2 == 0 { -+ dev_lst = append(sibling_lst, single_lst...) -+ } else { -+ if len(single_lst) > 1 { -+ _tmp_list := append(sibling_lst, single_lst[1:]...) -+ dev_lst = append(single_lst[0:1], _tmp_list...) -+ } else { -+ if len(single_lst) == 0 { -+ dev_lst = sibling_lst -+ } else { -+ dev_lst = append(single_lst, sibling_lst...) -+ } -+ -+ } -+ } -+ //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ return dev_lst, nil -+} -+ -+func smt_enabled() bool { -+ dat, _ := ioutil.ReadFile("/sys/devices/system/cpu/smt/active") -+ state := strings.TrimSuffix(string(dat), "\n") -+ if state == "0" { -+ return false -+ } -+ return true -+} -+ - // Returns list of device Ids we need to allocate with Allocate rpc call. - // Returns empty list in case we don't need to issue the Allocate rpc call. - func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, required int, reusableDevices sets.String) (sets.String, error) { -@@ -664,13 +742,29 @@ func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, requi - } - devices = sets.NewString() - // Allocates from reusableDevices list first. -- for device := range reusableDevices { -- devices.Insert(device) -- needed-- -- if needed == 0 { -- return devices, nil -+ if resource == "windriver.com/isolcpus" && smt_enabled() { -+ _reusableDevices, err := order_devices_by_sibling(reusableDevices, needed) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ // _reusableDevices is type of slice,So we need a unique loop to process here. -+ for _, device := range _reusableDevices { -+ devices.Insert(device) -+ needed-- -+ if needed == 0 { -+ return devices, nil -+ } -+ } -+ } else { -+ for device := range reusableDevices { -+ devices.Insert(device) -+ needed-- -+ if needed == 0 { -+ return devices, nil -+ } - } - } -+ - // Needs to allocate additional devices. - if m.allocatedDevices[resource] == nil { - m.allocatedDevices[resource] = sets.NewString() -@@ -682,13 +776,25 @@ func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, requi - if available.Len() < needed { - return nil, fmt.Errorf("requested number of devices unavailable for %s. Requested: %d, Available: %d", resource, needed, available.Len()) - } -- // By default, pull devices from the unsorted list of available devices. -- allocated := available.UnsortedList()[:needed] -+ - // If topology alignment is desired, update allocated to the set of devices - // with the best alignment. -+ var allocated []string - hint := m.topologyAffinityStore.GetAffinity(podUID, contName) - if m.deviceHasTopologyAlignment(resource) && hint.NUMANodeAffinity != nil { - allocated = m.takeByTopology(resource, available, hint.NUMANodeAffinity, needed) -+ } else { -+ if resource == "windriver.com/isolcpus" && smt_enabled() { -+ var err error -+ allocated, err = order_devices_by_sibling(available, needed) -+ allocated = allocated[:needed] -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ } else { -+ // By default, pull devices from the unsorted list of available devices. -+ allocated = available.UnsortedList()[:needed] -+ } - } - // Updates m.allocatedDevices with allocated devices to prevent them - // from being allocated to other pods/containers, given that we are -@@ -764,6 +870,39 @@ func (m *ManagerImpl) takeByTopology(resource string, available sets.String, aff - } - } - -+ //Add specific logic to process isolcpus resource. -+ //Try to not sabotage the original logical structure. -+ //Sort the original three lists by sibling: fromAffinity,notFromAffinity,withoutTopology -+ if resource == "windriver.com/isolcpus" && smt_enabled() { -+ var err error -+ _request_device_map := make(sets.String) -+ for _, dev := range fromAffinity { -+ _request_device_map[dev] = sets.Empty{} -+ } -+ fromAffinity, err = order_devices_by_sibling(_request_device_map, request) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ -+ _request_device_map = make(sets.String) -+ for _, dev := range notFromAffinity { -+ _request_device_map[dev] = sets.Empty{} -+ } -+ notFromAffinity, err = order_devices_by_sibling(_request_device_map, request) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ -+ _request_device_map = make(sets.String) -+ for _, dev := range withoutTopology { -+ _request_device_map[dev] = sets.Empty{} -+ } -+ withoutTopology, err = order_devices_by_sibling(_request_device_map, request) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ } -+ - // Concatenate the lists above return the first 'request' devices from it.. - return append(append(fromAffinity, notFromAffinity...), withoutTopology...)[:request] - } --- -2.22.5 - diff --git a/kubernetes/kubernetes-1.21.8/centos/Readme.rst b/kubernetes/kubernetes-1.21.8/centos/Readme.rst deleted file mode 100644 index 6e819fedf..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/Readme.rst +++ /dev/null @@ -1,9 +0,0 @@ -The spec file used here was from the kubernetes 1.10.0 src rpm. -The orig file is included to help show modifications made to that -spec file, to help understand which changes were needed and to -assist with future upversioning. - -The contrib tarball does not have the same versioning as kubernetes and -there is little activity in that repo. - -The version for the contrib tarball is arbitrary. diff --git a/kubernetes/kubernetes-1.21.8/centos/build_srpm.data b/kubernetes/kubernetes-1.21.8/centos/build_srpm.data deleted file mode 100644 index e82b035f2..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/build_srpm.data +++ /dev/null @@ -1,6 +0,0 @@ -VERSION=1.21.8 -TAR_NAME=kubernetes -TAR="$TAR_NAME-v$VERSION.tar.gz" -COPY_LIST="${CGCS_BASE}/downloads/$TAR $FILES_BASE/*" -TIS_PATCH_VER=PKG_GITREVCOUNT -BUILD_IS_BIG=6 diff --git a/kubernetes/kubernetes-1.21.8/centos/files/Change-log-level-to-Debug.patch b/kubernetes/kubernetes-1.21.8/centos/files/Change-log-level-to-Debug.patch deleted file mode 100644 index 9473b0064..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/Change-log-level-to-Debug.patch +++ /dev/null @@ -1,65 +0,0 @@ -From 8f08db9164b9038b2a62ad3d0290d725bc860744 Mon Sep 17 00:00:00 2001 -From: Rishabh Jain -Date: Thu, 24 Jun 2021 14:23:06 +0530 -Subject: [PATCH] Change log level to Debug - - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 2e5b541ef01..5fd0ec9275f 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -375,7 +375,7 @@ func (m *manager) reconcileState() (success []reconciledContainer, failure []rec - for _, pod := range m.activePods() { - pstatus, ok := m.podStatusProvider.GetPodStatus(pod.UID) - if !ok { -- klog.InfoS("ReconcileState: skipping pod; status not found", "pod", klog.KObj(pod)) -+ klog.V(4).InfoS("ReconcileState: skipping pod; status not found", "pod", klog.KObj(pod)) - failure = append(failure, reconciledContainer{pod.Name, "", ""}) - continue - } -@@ -385,21 +385,21 @@ func (m *manager) reconcileState() (success []reconciledContainer, failure []rec - for _, container := range allContainers { - containerID, err := findContainerIDByName(&pstatus, container.Name) - if err != nil { -- klog.InfoS("ReconcileState: skipping container; ID not found in pod status", "pod", klog.KObj(pod), "containerName", container.Name, "err", err) -+ klog.V(4).InfoS("ReconcileState: skipping container; ID not found in pod status", "pod", klog.KObj(pod), "containerName", container.Name, "err", err) - failure = append(failure, reconciledContainer{pod.Name, container.Name, ""}) - continue - } - - cstatus, err := findContainerStatusByName(&pstatus, container.Name) - if err != nil { -- klog.InfoS("ReconcileState: skipping container; container status not found in pod status", "pod", klog.KObj(pod), "containerName", container.Name, "err", err) -+ klog.V(4).InfoS("ReconcileState: skipping container; container status not found in pod status", "pod", klog.KObj(pod), "containerName", container.Name, "err", err) - failure = append(failure, reconciledContainer{pod.Name, container.Name, ""}) - continue - } - - if cstatus.State.Waiting != nil || - (cstatus.State.Waiting == nil && cstatus.State.Running == nil && cstatus.State.Terminated == nil) { -- klog.InfoS("ReconcileState: skipping container; container still in the waiting state", "pod", klog.KObj(pod), "containerName", container.Name, "err", err) -+ klog.V(4).InfoS("ReconcileState: skipping container; container still in the waiting state", "pod", klog.KObj(pod), "containerName", container.Name, "err", err) - failure = append(failure, reconciledContainer{pod.Name, container.Name, ""}) - continue - } -@@ -413,7 +413,7 @@ func (m *manager) reconcileState() (success []reconciledContainer, failure []rec - // was allocated. - _, _, err := m.containerMap.GetContainerRef(containerID) - if err == nil { -- klog.InfoS("ReconcileState: ignoring terminated container", "pod", klog.KObj(pod), "containerID", containerID) -+ klog.V(4).InfoS("ReconcileState: ignoring terminated container", "pod", klog.KObj(pod), "containerID", containerID) - } - m.Unlock() - continue -@@ -428,7 +428,7 @@ func (m *manager) reconcileState() (success []reconciledContainer, failure []rec - cset := m.state.GetCPUSetOrDefault(string(pod.UID), container.Name) - if cset.IsEmpty() { - // NOTE: This should not happen outside of tests. -- klog.InfoS("ReconcileState: skipping container; assigned cpuset is empty", "pod", klog.KObj(pod), "containerName", container.Name) -+ klog.V(4).InfoS("ReconcileState: skipping container; assigned cpuset is empty", "pod", klog.KObj(pod), "containerName", container.Name) - failure = append(failure, reconciledContainer{pod.Name, container.Name, containerID}) - continue - } --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch b/kubernetes/kubernetes-1.21.8/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch deleted file mode 100644 index 8366002e7..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch +++ /dev/null @@ -1,117 +0,0 @@ -From b90e3858a8d319c7526dd8190ee05edce24ba072 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Thu, 9 Sep 2021 13:16:26 -0400 -Subject: [PATCH 7/7] Revert "use subpath for coredns only for default - repository" - -This reverts commit 38a41e1557649a7cc763bf737779db9aa03ec75e. ---- - cmd/kubeadm/app/constants/constants.go | 2 +- - cmd/kubeadm/app/images/images.go | 5 --- - cmd/kubeadm/app/images/images_test.go | 50 -------------------------- - 3 files changed, 1 insertion(+), 56 deletions(-) - -diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go -index aed3a713020..3cb2d11ad45 100644 ---- a/cmd/kubeadm/app/constants/constants.go -+++ b/cmd/kubeadm/app/constants/constants.go -@@ -328,7 +328,7 @@ const ( - CoreDNSDeploymentName = "coredns" - - // CoreDNSImageName specifies the name of the image for CoreDNS add-on -- CoreDNSImageName = "coredns" -+ CoreDNSImageName = "coredns/coredns" - - // CoreDNSVersion is the version of CoreDNS to be deployed if it is used - CoreDNSVersion = "v1.8.0" -diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go -index 7ada3b75018..edf087e9c46 100644 ---- a/cmd/kubeadm/app/images/images.go -+++ b/cmd/kubeadm/app/images/images.go -@@ -21,7 +21,6 @@ import ( - - "k8s.io/klog/v2" - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" - ) -@@ -53,10 +52,6 @@ func GetDNSImage(cfg *kubeadmapi.ClusterConfiguration) string { - if cfg.DNS.ImageRepository != "" { - dnsImageRepository = cfg.DNS.ImageRepository - } -- // Handle the renaming of the official image from "k8s.gcr.io/coredns" to "k8s.gcr.io/coredns/coredns -- if dnsImageRepository == kubeadmapiv1beta2.DefaultImageRepository { -- dnsImageRepository = fmt.Sprintf("%s/coredns", dnsImageRepository) -- } - // DNS uses an imageTag that corresponds to the DNS version matching the Kubernetes version - dnsImageTag := constants.GetDNSVersion(cfg.DNS.Type) - -diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go -index e5b417bcdc7..f5165406e0f 100644 ---- a/cmd/kubeadm/app/images/images_test.go -+++ b/cmd/kubeadm/app/images/images_test.go -@@ -22,7 +22,6 @@ import ( - "testing" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - ) - -@@ -238,52 +237,3 @@ func TestGetAllImages(t *testing.T) { - }) - } - } -- --func TestGetDNSImage(t *testing.T) { -- var tests = []struct { -- expected string -- cfg *kubeadmapi.ClusterConfiguration -- }{ -- { -- expected: "foo.io/coredns:v1.8.0", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: kubeadmapiv1beta2.DefaultImageRepository + "/coredns/coredns:v1.8.0", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: kubeadmapiv1beta2.DefaultImageRepository, -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: "foo.io/coredns/coredns:v1.8.0", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- ImageMeta: kubeadmapi.ImageMeta{ -- ImageRepository: "foo.io/coredns", -- }, -- }, -- }, -- }, -- } -- -- for _, test := range tests { -- actual := GetDNSImage(test.cfg) -- if actual != test.expected { -- t.Errorf( -- "failed to GetDNSImage:\n\texpected: %s\n\t actual: %s", -- test.expected, -- actual, -- ) -- } -- } --} --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch b/kubernetes/kubernetes-1.21.8/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch deleted file mode 100644 index 33d238177..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch +++ /dev/null @@ -1,79 +0,0 @@ -From a0011e7749f7e54d3f1a689e717ded88e284860f Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 23 Oct 2020 17:46:10 -0600 -Subject: [PATCH 6/7] enable support for kubernetes to ignore isolcpus - -The normal mechanisms for allocating isolated CPUs do not allow -a mix of isolated and exclusive CPUs in the same container. In -order to allow this in *very* limited cases where the pod spec -is known in advance we will add the ability to disable the normal -isolcpus behaviour. - -If the file "/etc/kubernetes/ignore_isolcpus" exists, then kubelet -will basically forget everything it knows about isolcpus and just -treat them like regular CPUs. - -The admin user can then rely on the fact that CPU allocation is -deterministic to ensure that the isolcpus they configure end up being -allocated to the correct pods. ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 9 +++++++++ - pkg/kubelet/cm/cpumanager/policy_static.go | 8 ++++++++ - 2 files changed, 17 insertions(+) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 2563f61e7b5..1b226187fef 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -19,6 +19,7 @@ package cpumanager - import ( - "fmt" - "math" -+ "os" - "sync" - "time" - "strings" -@@ -55,6 +56,14 @@ const cpuManagerStateFileName = "cpu_manager_state" - - // get the system-level isolated CPUs - func getIsolcpus() cpuset.CPUSet { -+ -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ klog.Infof("[cpumanager] turning off isolcpus awareness") -+ return cpuset.NewCPUSet() -+ } -+ - dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") - if err != nil { - klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 2ad14a98911..73b74d5c4cc 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "os" - "strconv" - - v1 "k8s.io/api/core/v1" -@@ -613,6 +614,13 @@ func isKubeInfra(pod *v1.Pod) bool { - - // get the isolated CPUs (if any) from the devices associated with a specific container - func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ return cpuset.NewCPUSet() -+ } -+ - // NOTE: This is required for TestStaticPolicyAdd() since makePod() does - // not create UID. We also need a way to properly stub devicemanager. - if len(string(pod.UID)) == 0 { --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/genmanpages.sh b/kubernetes/kubernetes-1.21.8/centos/files/genmanpages.sh deleted file mode 100644 index be2ef8f05..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/genmanpages.sh +++ /dev/null @@ -1,84 +0,0 @@ -MDSFORMANPAGES="kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md" - -# remove comments from man pages -for manpage in ${MDSFORMANPAGES}; do - pos=$(grep -n "<\!-- END MUNGE: UNVERSIONED_WARNING -->" ${manpage} | cut -d':' -f1) - if [ -n ${pos} ]; then - sed -i "1,${pos}{/.*/d}" ${manpage} - fi -done - -# for each man page add NAME and SYNOPSIS section -# kube-apiserver -sed -i -s "s/## kube-apiserver/# NAME\nkube-apiserver \- Provides the API for kubernetes orchestration.\n\n# SYNOPSIS\n**kube-apiserver** [OPTIONS]\n/" kube-apiserver.md - -cat << 'EOF' >> kube-apiserver.md -# EXAMPLES -``` -/usr/bin/kube-apiserver --logtostderr=true --v=0 --etcd_servers=http://127.0.0.1:4001 --insecure_bind_address=127.0.0.1 --insecure_port=8080 --kubelet_port=10250 --service-cluster-ip-range=10.1.1.0/24 --allow_privileged=false -``` -EOF -# kube-controller-manager -sed -i -s "s/## kube-controller-manager/# NAME\nkube-controller-manager \- Enforces kubernetes services.\n\n# SYNOPSIS\n**kube-controller-manager** [OPTIONS]\n/" kube-controller-manager.md - -cat << 'EOF' >> kube-controller-manager.md -# EXAMPLES -``` -/usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=127.0.0.1:8080 -``` -EOF -# kube-proxy -sed -i -s "s/## kube-proxy/# NAME\nkube-proxy \- Provides network proxy services.\n\n# SYNOPSIS\n**kube-proxy** [OPTIONS]\n/" kube-proxy.md - -cat << 'EOF' >> kube-proxy.md -# EXAMPLES -``` -/usr/bin/kube-proxy --logtostderr=true --v=0 --master=http://127.0.0.1:8080 -``` -EOF -# kube-scheduler -sed -i -s "s/## kube-scheduler/# NAME\nkube-scheduler \- Schedules containers on hosts.\n\n# SYNOPSIS\n**kube-scheduler** [OPTIONS]\n/" kube-scheduler.md - -cat << 'EOF' >> kube-scheduler.md -# EXAMPLES -``` -/usr/bin/kube-scheduler --logtostderr=true --v=0 --master=127.0.0.1:8080 -``` -EOF -# kubelet -sed -i -s "s/## kubelet/# NAME\nkubelet \- Processes a container manifest so the containers are launched according to how they are described.\n\n# SYNOPSIS\n**kubelet** [OPTIONS]\n/" kubelet.md - -cat << 'EOF' >> kubelet.md -# EXAMPLES -``` -/usr/bin/kubelet --logtostderr=true --v=0 --api_servers=http://127.0.0.1:8080 --address=127.0.0.1 --port=10250 --hostname_override=127.0.0.1 --allow-privileged=false -``` -EOF - -# for all man-pages -for md in $MDSFORMANPAGES; do - # correct section names - sed -i -s "s/### Synopsis/# DESCRIPTION/" $md - sed -i -s "s/### Options/# OPTIONS/" $md - # add header - sed -i "s/# NAME/% KUBERNETES(1) kubernetes User Manuals\n# NAME/" $md - # modify list of options - # options with no value in "" - sed -i -r 's/(^ )(-[^":][^":]*)(:)(.*)/\*\*\2\*\*\n\t\4\n/' $md - # option with value in "" - sed -i -r 's/(^ )(-[^":][^":]*)("[^"]*")(:)(.*)/\*\*\2\3\*\*\n\t\5\n/' $md - # options in -s, --long - sed -i -r 's/(^ )(-[a-z], -[^":][^":]*)(:)(.*)/\*\*\2\*\*\n\t\4\n/' $md - sed -i -r 's/(^ )(-[a-z], -[^":][^":]*)("[^"]*")(:)(.*)/\*\*\2\3\*\*\n\t\5\n/' $md - # remove ``` - sed -i 's/```//' $md - # remove all lines starting with ###### - sed -i 's/^######.*//' $md - # modify footer - sed -i -r "s/^\[!\[Analytics\].*//" $md - # md does not contain section => taking 1 - name="${md%.md}" - go-md2man -in $md -out man/man1/$name.1 -done - - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch b/kubernetes/kubernetes-1.21.8/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch deleted file mode 100644 index f52fc18b2..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch +++ /dev/null @@ -1,108 +0,0 @@ -From de653bd0823b248d623a39c17a3872e85ce952b0 Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 3 Sep 2021 18:05:15 -0400 -Subject: [PATCH 5/7] kubeadm: create platform pods with zero CPU resources - -We want to specify zero CPU resources when creating the manifests -for the static platform pods, as a workaround for the lack of -separate resource tracking for platform resources. - -We also specify zero CPU resources for the coredns deployment. -manifests.go appears to be the main file for this, not sure if the -others are used but I changed them just in case. - -Signed-off-by: Jim Gauld ---- - cluster/addons/dns/coredns/coredns.yaml.base | 2 +- - cluster/addons/dns/coredns/coredns.yaml.in | 2 +- - cluster/addons/dns/coredns/coredns.yaml.sed | 2 +- - cmd/kubeadm/app/phases/addons/dns/manifests.go | 2 +- - cmd/kubeadm/app/phases/controlplane/manifests.go | 6 +++--- - 5 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/cluster/addons/dns/coredns/coredns.yaml.base b/cluster/addons/dns/coredns/coredns.yaml.base -index 4ee054f8ba5..d2b58f4af0e 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.base -+++ b/cluster/addons/dns/coredns/coredns.yaml.base -@@ -138,7 +138,7 @@ spec: - limits: - memory: __DNS__MEMORY__LIMIT__ - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.in b/cluster/addons/dns/coredns/coredns.yaml.in -index 1f791e447c9..ff03a801646 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.in -+++ b/cluster/addons/dns/coredns/coredns.yaml.in -@@ -138,7 +138,7 @@ spec: - limits: - memory: 'dns_memory_limit' - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.sed b/cluster/addons/dns/coredns/coredns.yaml.sed -index 4d64278aaa4..38fc9196b28 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.sed -+++ b/cluster/addons/dns/coredns/coredns.yaml.sed -@@ -138,7 +138,7 @@ spec: - limits: - memory: $DNS_MEMORY_LIMIT - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/addons/dns/manifests.go b/cmd/kubeadm/app/phases/addons/dns/manifests.go -index 3ac6856bfc6..0763b4c63db 100644 ---- a/cmd/kubeadm/app/phases/addons/dns/manifests.go -+++ b/cmd/kubeadm/app/phases/addons/dns/manifests.go -@@ -95,7 +95,7 @@ spec: - limits: - memory: 170Mi - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/controlplane/manifests.go b/cmd/kubeadm/app/phases/controlplane/manifests.go -index 8181bea63a4..4c4b4448dd4 100644 ---- a/cmd/kubeadm/app/phases/controlplane/manifests.go -+++ b/cmd/kubeadm/app/phases/controlplane/manifests.go -@@ -60,7 +60,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS), - ReadinessProbe: staticpodutil.ReadinessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/readyz", int(endpoint.BindPort), v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("250m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeAPIServer), - map[string]string{kubeadmconstants.KubeAPIServerAdvertiseAddressEndpointAnnotationKey: endpoint.String()}), -@@ -72,7 +72,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeControllerManager)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("200m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeControllerManager), nil), - kubeadmconstants.KubeScheduler: staticpodutil.ComponentPod(v1.Container{ -@@ -83,7 +83,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeScheduler)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("100m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeScheduler), nil), - } --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubeadm.conf b/kubernetes/kubernetes-1.21.8/centos/files/kubeadm.conf deleted file mode 100644 index da0611444..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubeadm.conf +++ /dev/null @@ -1,18 +0,0 @@ -# Note: This dropin only works with kubeadm and kubelet v1.11+ -[Service] -Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" -Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" -# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically -EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env -# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use -# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. -EnvironmentFile=-/etc/sysconfig/kubelet -ExecStart= -ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS -ExecStartPre=-/usr/local/sbin/sanitize_kubelet_reserved_cpus.sh /etc/sysconfig/kubelet -ExecStartPre=-/usr/bin/kubelet-cgroup-setup.sh -ExecStartPost=/bin/bash -c 'echo $MAINPID > /var/run/kubelet.pid;' -ExecStopPost=/bin/rm -f /var/run/kubelet.pid -Restart=always -StartLimitInterval=0 -RestartSec=10 diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cgroup-setup.sh b/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cgroup-setup.sh deleted file mode 100644 index 385314bfe..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cgroup-setup.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 Wind River Systems, Inc. -# -# SPDX-License-Identifier: Apache-2.0 -# -# This script does minimal cgroup setup for kubelet. This creates k8s-infra -# cgroup for a minimal set of resource controllers, and configures cpuset -# attributes to span all online cpus and nodes. This will do nothing if -# the k8s-infra cgroup already exists (i.e., assume already configured). -# NOTE: The creation of directories under /sys/fs/cgroup is volatile, and -# does not persist reboots. The cpuset.mems and cpuset.cpus is later updated -# by puppet kubernetes.pp manifest. -# - -# Define minimal path -PATH=/bin:/usr/bin:/usr/local/bin - -# Log info message to /var/log/daemon.log -function LOG { - logger -p daemon.info "$0($$): $@" -} - -# Log error message to /var/log/daemon.log -function ERROR { - logger -s -p daemon.error "$0($$): ERROR: $@" -} - -# Create minimal cgroup directories and configure cpuset attributes if required -function create_cgroup { - local cg_name=$1 - local cg_nodeset=$2 - local cg_cpuset=$3 - - local CGROUP=/sys/fs/cgroup - local CONTROLLERS_AUTO_DELETED=("pids" "hugetlb") - local CONTROLLERS_PRESERVED=("cpuset" "memory" "cpu,cpuacct" "systemd") - local cnt='' - local CGDIR='' - local RC=0 - - # Ensure that these cgroups are created every time as they are auto deleted - for cnt in ${CONTROLLERS_AUTO_DELETED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - continue - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # These cgroups are preserved so if any of these are encountered additional - # cgroup setup is not required - for cnt in ${CONTROLLERS_PRESERVED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - exit ${RC} - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # Customize cpuset attributes - LOG "Configuring cgroup: ${cg_name}, nodeset: ${cg_nodeset}, cpuset: ${cg_cpuset}" - CGDIR=${CGROUP}/cpuset/${cg_name} - local CGMEMS=${CGDIR}/cpuset.mems - local CGCPUS=${CGDIR}/cpuset.cpus - local CGTASKS=${CGDIR}/tasks - - # Assign cgroup memory nodeset - LOG "Assign nodeset ${cg_nodeset} to ${CGMEMS}" - /bin/echo ${cg_nodeset} > ${CGMEMS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Unable to write to: ${CGMEMS}, rc=${RC}" - exit ${RC} - fi - - # Assign cgroup cpus - LOG "Assign cpuset ${cg_cpuset} to ${CGCPUS}" - /bin/echo ${cg_cpuset} > ${CGCPUS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Assigning: ${cg_cpuset} to ${CGCPUS}, rc=${RC}" - exit ${RC} - fi - - # Set file ownership - chown root:root ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting owner for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - # Set file mode permissions - chmod 644 ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting mode for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - return ${RC} -} - -if [ $UID -ne 0 ]; then - ERROR "Require sudo/root." - exit 1 -fi - -# Configure default kubepods cpuset to span all online cpus and nodes. -ONLINE_NODESET=$(/bin/cat /sys/devices/system/node/online) -ONLINE_CPUSET=$(/bin/cat /sys/devices/system/cpu/online) - -# Configure kubelet cgroup to match cgroupRoot. -create_cgroup 'k8s-infra' ${ONLINE_NODESET} ${ONLINE_CPUSET} - -exit $? - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch b/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch deleted file mode 100644 index 7bfa73162..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch +++ /dev/null @@ -1,256 +0,0 @@ -From 3f69868f7bca99f6875dd4d197b3a974d1b558ed Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Wed, 22 Sep 2021 10:09:06 -0400 -Subject: [PATCH 1/7] kubelet cpumanager disable CFS quota throttling for - Guaranteed pods - -This disables CFS CPU quota to avoid performance degradation due to -Linux kernel CFS quota implementation. Note that 4.18 kernel attempts -to solve the CFS throttling problem, but there are reports that it is -not completely effective. - -This disables CFS quota throttling for Guaranteed pods for both -parent and container cgroups by writing -1 to cgroup cpu.cfs_quota_us. -Disabling has a dramatic latency improvement for HTTP response times. - -This patch is refactored in 1.21.3 due to new internal_container_lifecycle -framework. We leverage the same mechanism to set Linux resources as: -cpu manager: specify the container CPU set during the creation -(commit 38dc7509f862f081828e7d9167107b8c6e98ea23). - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 7 ++++ - pkg/kubelet/cm/cpumanager/fake_cpu_manager.go | 6 +++ - pkg/kubelet/cm/helpers_linux.go | 10 +++++ - pkg/kubelet/cm/helpers_linux_test.go | 42 ++++++++++--------- - .../cm/internal_container_lifecycle_linux.go | 9 ++++ - 5 files changed, 54 insertions(+), 20 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 5a6e5082f15..f7b9c8d07bf 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -72,6 +72,9 @@ type Manager interface { - // State returns a read-only interface to the internal CPU manager state. - State() state.Reader - -+ // GetCPUPolicy returns the assigned CPU manager policy -+ GetCPUPolicy() string -+ - // GetTopologyHints implements the topologymanager.HintProvider Interface - // and is consulted to achieve NUMA aware resource alignment among this - // and other resource controllers. -@@ -291,6 +294,10 @@ func (m *manager) State() state.Reader { - return m.state - } - -+func (m *manager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *manager) GetTopologyHints(pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - // Garbage collect any stranded resources before providing TopologyHints - m.removeStaleState() -diff --git a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -index 2c38b52b374..1cb0ea10923 100644 ---- a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -@@ -28,6 +28,7 @@ import ( - ) - - type fakeManager struct { -+ policy Policy - state state.State - } - -@@ -69,6 +70,10 @@ func (m *fakeManager) State() state.Reader { - return m.state - } - -+func (m *fakeManager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *fakeManager) GetCPUs(podUID, containerName string) cpuset.CPUSet { - klog.InfoS("GetCPUs", "podUID", podUID, "containerName", containerName) - return cpuset.CPUSet{} -@@ -82,6 +87,7 @@ func (m *fakeManager) GetAllocatableCPUs() cpuset.CPUSet { - // NewFakeManager creates empty/fake cpu manager - func NewFakeManager() Manager { - return &fakeManager{ -+ policy: &nonePolicy{}, - state: state.NewMemoryState(), - } - } -diff --git a/pkg/kubelet/cm/helpers_linux.go b/pkg/kubelet/cm/helpers_linux.go -index aa5c37639dc..302284ef408 100644 ---- a/pkg/kubelet/cm/helpers_linux.go -+++ b/pkg/kubelet/cm/helpers_linux.go -@@ -169,6 +169,16 @@ func ResourceConfigForPod(pod *v1.Pod, enforceCPULimits bool, cpuPeriod uint64) - // build the result - result := &ResourceConfig{} - if qosClass == v1.PodQOSGuaranteed { -+ // Disable CFS CPU quota to avoid performance degradation due to -+ // Linux kernel CFS throttle implementation. -+ // NOTE: 4.18 kernel attempts to solve CFS throttling problem, -+ // but there are reports that it is not completely effective. -+ // This will configure cgroup CFS parameters at pod level: -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_period_us -+ cpuQuota = int64(-1) -+ cpuPeriod = uint64(100000) -+ - result.CpuShares = &cpuShares - result.CpuQuota = &cpuQuota - result.CpuPeriod = &cpuPeriod -diff --git a/pkg/kubelet/cm/helpers_linux_test.go b/pkg/kubelet/cm/helpers_linux_test.go -index 56d765fbc22..8c7309937dd 100644 ---- a/pkg/kubelet/cm/helpers_linux_test.go -+++ b/pkg/kubelet/cm/helpers_linux_test.go -@@ -63,8 +63,9 @@ func TestResourceConfigForPod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -203,8 +204,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -217,8 +218,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -231,8 +232,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -245,8 +246,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -@@ -283,8 +284,9 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -423,8 +425,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -437,8 +439,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -451,8 +453,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -465,8 +467,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -diff --git a/pkg/kubelet/cm/internal_container_lifecycle_linux.go b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -index 9cf41620b8c..fa15dbe1671 100644 ---- a/pkg/kubelet/cm/internal_container_lifecycle_linux.go -+++ b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -@@ -19,10 +19,12 @@ limitations under the License. - package cm - - import ( -+ //"fmt" - "strconv" - "strings" - - "k8s.io/api/core/v1" -+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos" - runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" - ) - -@@ -32,6 +34,13 @@ func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, contain - if !allocatedCPUs.IsEmpty() { - containerConfig.Linux.Resources.CpusetCpus = allocatedCPUs.String() - } -+ // Disable cgroup CFS throttle at the container level. -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_period_us -+ if i.cpuManager.GetCPUPolicy() == "static" && v1qos.GetPodQOS(pod) == v1.PodQOSGuaranteed { -+ containerConfig.Linux.Resources.CpuPeriod = int64(100000) -+ containerConfig.Linux.Resources.CpuQuota = int64(-1) -+ } - } - - if i.memoryManager != nil { --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-infrastructure-pods-use-system-re.patch b/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-infrastructure-pods-use-system-re.patch deleted file mode 100644 index c982eac1f..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-infrastructure-pods-use-system-re.patch +++ /dev/null @@ -1,139 +0,0 @@ -From 66f4a61ce77624dcc0b520e01fccacec61dfea37 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Tue, 7 Sep 2021 14:21:03 -0400 -Subject: [PATCH 3/7] kubelet cpumanager infrastructure pods use system - reserved CPUs - -This assigns system infrastructure pods to the "reserved" cpuset -to isolate them from the shared pool of CPUs. - -Infrastructure pods include any pods that belong to the kube-system, -armada, cert-manager, vault, platform-deployment-manager, portieris, -notification, flux-helm or metrics-server namespaces. - -The implementation is a bit simplistic, it is assumed that the -"reserved" cpuset is large enough to handle all infrastructure pods -CPU allocations. - -This also prevents infrastucture pods from using Guaranteed resources. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/policy_static.go | 44 +++++++++++++++++++ - .../cm/cpumanager/policy_static_test.go | 19 +++++++- - 2 files changed, 62 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 94d81796132..b48a5b997a3 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -32,6 +32,11 @@ import ( - // PolicyStatic is the name of the static policy - const PolicyStatic policyName = "static" - -+// Define namespaces used by platform infrastructure pods -+var infraNamespaces = [...]string{ -+ "kube-system", "armada", "cert-manager", "platform-deployment-manager", "portieris", "vault", "notification", "flux-helm", "metrics-server", -+} -+ - // staticPolicy is a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. -@@ -232,6 +237,31 @@ func (p *staticPolicy) updateCPUsToReuse(pod *v1.Pod, container *v1.Container, c - } - - func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Container) error { -+ // Process infra pods before guaranteed pods -+ if isKubeInfra(pod) { -+ // Container belongs in reserved pool. -+ // We don't want to fall through to the p.guaranteedCPUs() clause below so return either nil or error. -+ if _, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ klog.Infof("[cpumanager] static policy: reserved container already present in state, skipping " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } -+ -+ cpuset := p.reserved -+ if cpuset.IsEmpty() { -+ // If this happens then someone messed up. -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ } -+ s.SetCPUSet(string(pod.UID), container.Name, cpuset) -+ klog.Infof("[cpumanager] static policy: reserved: AddContainer " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -+ return nil -+ } -+ - if numCPUs := p.guaranteedCPUs(pod, container); numCPUs != 0 { - klog.InfoS("Static policy: Allocate", "pod", klog.KObj(pod), "containerName", container.Name) - // container belongs in an exclusively allocated pool -@@ -321,6 +351,10 @@ func (p *staticPolicy) guaranteedCPUs(pod *v1.Pod, container *v1.Container) int - if cpuQuantity.Value()*1000 != cpuQuantity.MilliValue() { - return 0 - } -+ // Infrastructure pods use reserved CPUs even if they're in the Guaranteed QoS class -+ if isKubeInfra(pod) { -+ return 0 -+ } - // Safe downcast to do for all systems with < 2.1 billion CPUs. - // Per the language spec, `int` is guaranteed to be at least 32 bits wide. - // https://golang.org/ref/spec#Numeric_types -@@ -523,3 +557,13 @@ func (p *staticPolicy) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, reu - - return hints - } -+ -+// check if a given pod is in a platform infrastructure namespace -+func isKubeInfra(pod *v1.Pod) bool { -+ for _, namespace := range infraNamespaces { -+ if namespace == pod.Namespace { -+ return true -+ } -+ } -+ return false -+} -\ No newline at end of file -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 93a2870532a..90ad98e71bc 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -747,7 +747,8 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - } - - func TestStaticPolicyAddWithResvList(t *testing.T) { -- -+ infraPod := makePod("fakePod", "fakeContainer2", "200m", "200m") -+ infraPod.Namespace = "kube-system" - testCases := []staticPolicyTestWithResvList{ - { - description: "GuPodSingleCore, SingleSocketHT, ExpectError", -@@ -789,6 +790,22 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(4, 5), - }, -+ { -+ description: "InfraPod, SingleSocketHT, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0, 1), -+ }, - } - - testExcl := true --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch b/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch deleted file mode 100644 index ce24ca649..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch +++ /dev/null @@ -1,535 +0,0 @@ -From 81a6d41690c45b168034df04df0199cd5abe60e9 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Wed, 8 Sep 2021 09:28:40 -0400 -Subject: [PATCH 4/7] kubelet cpumanager introduce concept of isolated CPUs - -This introduces the concept of "isolated CPUs", which are CPUs that -have been isolated at the kernel level via the "isolcpus" kernel boot -parameter. - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via -'--system-reserved=cpu' will be used for infrastructure pods while the -isolated CPUs should be reserved via '--kube-reserved=cpu' to cause -kubelet to skip over them for "normal" CPU resource tracking. The -kubelet code will double-check that the specified isolated CPUs match -what the kernel exposes in "/sys/devices/system/cpu/isolated". - -A plugin (outside the scope of this commit) will expose the isolated -CPUs to kubelet via the device plugin API. - -If a pod specifies some number of "isolcpus" resources, the device -manager will allocate them. In this code we check whether such -resources have been allocated, and if so we set the container cpuset to -the isolated CPUs. This does mean that it really only makes sense to -specify "isolcpus" resources for best-effort or burstable pods, not for -guaranteed ones since that would throw off the accounting code. In -order to ensure the accounting still works as designed, if "isolcpus" -are specified for guaranteed pods, the affinity will be set to the -non-isolated CPUs. - -This patch was refactored in 1.21.3 due to upstream API change -node: podresources: make GetDevices() consistent -(commit ad68f9588c72d6477b5a290c548a9031063ac659). - -The routine podIsolCPUs() was refactored in 1.21.3 since the API -p.deviceManager.GetDevices() is returning multiple devices with -a device per cpu. The resultant cpuset needs to be the aggregate. - -Signed-off-by: Jim Gauld -Co-authored-by: Chris Friesen ---- - pkg/kubelet/cm/container_manager_linux.go | 1 + - pkg/kubelet/cm/cpumanager/cpu_manager.go | 31 ++++++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 13 ++- - pkg/kubelet/cm/cpumanager/policy_static.go | 85 +++++++++++++++++-- - .../cm/cpumanager/policy_static_test.go | 44 ++++++++-- - 5 files changed, 156 insertions(+), 18 deletions(-) - -diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go -index e7bed73fc69..d74a6339939 100644 ---- a/pkg/kubelet/cm/container_manager_linux.go -+++ b/pkg/kubelet/cm/container_manager_linux.go -@@ -337,6 +337,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I - cm.GetNodeAllocatableReservation(), - nodeConfig.KubeletRootDir, - cm.topologyManager, -+ cm.deviceManager, - ) - if err != nil { - klog.ErrorS(err, "Failed to initialize cpu manager") -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 5b82e5b02ac..2563f61e7b5 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -21,6 +21,8 @@ import ( - "math" - "sync" - "time" -+ "strings" -+ "io/ioutil" - - cadvisorapi "github.com/google/cadvisor/info/v1" - v1 "k8s.io/api/core/v1" -@@ -34,6 +36,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" - "k8s.io/kubernetes/pkg/kubelet/status" - ) -@@ -50,6 +53,25 @@ type policyName string - // cpuManagerStateFileName is the file name where cpu manager stores its state - const cpuManagerStateFileName = "cpu_manager_state" - -+// get the system-level isolated CPUs -+func getIsolcpus() cpuset.CPUSet { -+ dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -+ return cpuset.NewCPUSet() -+ } -+ -+ // The isolated cpus string ends in a newline -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cset, err := cpuset.Parse(cpustring) -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to parse sysfs isolcpus string to cpuset") -+ return cpuset.NewCPUSet() -+ } -+ -+ return cset -+} -+ - // Manager interface provides methods for Kubelet to manage pod cpus. - type Manager interface { - // Start is called during Kubelet initialization. -@@ -143,7 +165,7 @@ func (s *sourcesReadyStub) AddSource(source string) {} - func (s *sourcesReadyStub) AllReady() bool { return true } - - // NewManager creates new cpu manager based on provided policy --func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store) (Manager, error) { -+func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store, deviceManager devicemanager.Manager) (Manager, error) { - var topo *topology.CPUTopology - var policy Policy - -@@ -181,8 +203,11 @@ func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo - // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. - // This variable is primarily to make testing easier. - excludeReserved := true -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, excludeReserved) -- -+ // isolCPUs is the set of kernel-isolated CPUs. They should be a subset of specificCPUs or -+ // of the CPUs that NewStaticPolicy() will pick if numReservedCPUs is set. It's only in the -+ // argument list here for ease of testing, it's really internal to the policy. -+ isolCPUs := getIsolcpus() -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, isolCPUs, affinity, deviceManager, excludeReserved) - if err != nil { - return nil, fmt.Errorf("new static policy error: %v", err) - } -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index a2e73de6875..4c021634d6f 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -38,6 +38,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - ) - - type mockState struct { -@@ -215,6 +216,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ -@@ -230,7 +232,9 @@ func TestCPUManagerAdd(t *testing.T) { - }, - 0, - cpuset.NewCPUSet(), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), -+ testDM, - testExcl) - testCases := []struct { - description string -@@ -480,8 +484,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - } - - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -635,7 +640,8 @@ func TestCPUManagerGenerate(t *testing.T) { - } - defer os.RemoveAll(sDir) - -- mgr, err := NewManager(testCase.cpuPolicyName, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager()) -+ testDM, err := devicemanager.NewManagerStub() -+ mgr, err := NewManager(testCase.cpuPolicyName, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager(), testDM) - if testCase.expectedError != nil { - if !strings.Contains(err.Error(), testCase.expectedError.Error()) { - t.Errorf("Unexpected error message. Have: %s wants %s", err.Error(), testCase.expectedError.Error()) -@@ -990,6 +996,7 @@ func TestReconcileState(t *testing.T) { - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1004,7 +1011,9 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - }, - 1, - cpuset.NewCPUSet(0), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), -+ testDM, - testExcl) - testCases := []struct { - description string -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index b48a5b997a3..2ad14a98911 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "strconv" - - v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" -@@ -27,6 +28,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - ) - - // PolicyStatic is the name of the static policy -@@ -80,6 +82,10 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // subset of reserved CPUs with isolcpus attribute -+ isolcpus cpuset.CPUSet -+ // parent containerManager, used to get device list -+ deviceManager devicemanager.Manager - // If true, default CPUSet should exclude reserved CPUs - excludeReserved bool - // topology manager reference to get container Topology affinity -@@ -94,7 +100,7 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, excludeReserved bool) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, isolCPUs cpuset.CPUSet, affinity topologymanager.Store, deviceManager devicemanager.Manager, excludeReserved bool) (Policy, error) { - allCPUs := topology.CPUDetails.CPUs() - var reserved cpuset.CPUSet - if reservedCPUs.Size() > 0 { -@@ -115,9 +121,17 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - - klog.InfoS("Reserved CPUs not available for exclusive assignment", "reservedSize", reserved.Size(), "reserved", reserved) - -+ if !isolCPUs.IsSubsetOf(reserved) { -+ klog.Errorf("[cpumanager] isolCPUs %v is not a subset of reserved %v", isolCPUs, reserved) -+ reserved = reserved.Union(isolCPUs) -+ klog.Warningf("[cpumanager] mismatch isolCPUs %v, force reserved %v", isolCPUs, reserved) -+ } -+ - return &staticPolicy{ - topology: topology, - reserved: reserved, -+ isolcpus: isolCPUs, -+ deviceManager: deviceManager, - excludeReserved: excludeReserved, - affinity: affinity, - cpusToReuse: make(map[string]cpuset.CPUSet), -@@ -154,8 +168,8 @@ func (p *staticPolicy) validateState(s state.State) error { - } else { - s.SetDefaultCPUSet(allCPUs) - } -- klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -- allCPUs, p.reserved, s.GetDefaultCPUSet()) -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, isolcpus:%v, default:%v\n", -+ allCPUs, p.reserved, p.isolcpus, s.GetDefaultCPUSet()) - return nil - } - -@@ -248,12 +262,12 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - return nil - } - -- cpuset := p.reserved -+ cpuset := p.reserved.Clone().Difference(p.isolcpus) - if cpuset.IsEmpty() { - // If this happens then someone messed up. - return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus " + -- "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", -- pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v, isolcpus:%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved, p.isolcpus) - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - klog.Infof("[cpumanager] static policy: reserved: AddContainer " + -@@ -284,8 +298,37 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - p.updateCPUsToReuse(pod, container, cpuset) -+ klog.Infof("[cpumanager] guaranteed: AddContainer " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); numCPUS=%d, cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, numCPUs, cpuset) -+ return nil -+ } - -+ if isolcpus := p.podIsolCPUs(pod, container); isolcpus.Size() > 0 { -+ // container has requested isolated CPUs -+ if set, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ if set.Equals(isolcpus) { -+ klog.Infof("[cpumanager] isolcpus container already present in state, skipping " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } else { -+ klog.Infof("[cpumanager] isolcpus container state has cpus %v, should be %v" + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ isolcpus, set, pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ } -+ } -+ // Note that we do not do anything about init containers here. -+ // It looks like devices are allocated per-pod based on effective requests/limits -+ // and extra devices from initContainers are not freed up when the regular containers start. -+ // TODO: confirm this is still true for 1.20 -+ s.SetCPUSet(string(pod.UID), container.Name, isolcpus) -+ klog.Infof("[cpumanager] isolcpus: AddContainer " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, isolcpus) -+ return nil - } -+ - // container belongs in the shared pool (nothing to do; use default cpuset) - return nil - } -@@ -566,4 +609,34 @@ func isKubeInfra(pod *v1.Pod) bool { - } - } - return false -+} -+ -+// get the isolated CPUs (if any) from the devices associated with a specific container -+func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // NOTE: This is required for TestStaticPolicyAdd() since makePod() does -+ // not create UID. We also need a way to properly stub devicemanager. -+ if len(string(pod.UID)) == 0 { -+ return cpuset.NewCPUSet() -+ } -+ resContDevices := p.deviceManager.GetDevices(string(pod.UID), container.Name) -+ cpuSet := cpuset.NewCPUSet() -+ for resourceName, resourceDevs := range resContDevices { -+ // this resource name needs to match the isolcpus device plugin -+ if resourceName == "windriver.com/isolcpus" { -+ for devID, _ := range resourceDevs { -+ cpuStrList := []string{devID} -+ if len(cpuStrList) > 0 { -+ // loop over the list of strings, convert each one to int, add to cpuset -+ for _, cpuStr := range cpuStrList { -+ cpu, err := strconv.Atoi(cpuStr) -+ if err != nil { -+ panic(err) -+ } -+ cpuSet = cpuSet.Union(cpuset.NewCPUSet(cpu)) -+ } -+ } -+ } -+ } -+ } -+ return cpuSet - } -\ No newline at end of file -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 90ad98e71bc..8511d5635bd 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -27,6 +27,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - ) - - type staticPolicyTest struct { -@@ -45,8 +46,9 @@ type staticPolicyTest struct { - } - - func TestStaticPolicyName(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testExcl) -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -56,6 +58,7 @@ func TestStaticPolicyName(t *testing.T) { - } - - func TestStaticPolicyStart(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "non-corrupted state", -@@ -131,7 +134,7 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.excludeReserved) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testCase.excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: testCase.stAssignments, -@@ -179,6 +182,7 @@ func TestStaticPolicyAdd(t *testing.T) { - largeTopoSock0CPUSet := largeTopoSock0Builder.Result() - largeTopoSock1CPUSet := largeTopoSock1Builder.Result() - -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "GuPodSingleCore, SingleSocketHT, ExpectError", -@@ -447,7 +451,7 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.excludeReserved) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testCase.excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -490,6 +494,7 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func TestStaticPolicyRemove(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - excludeReserved := false - testCases := []staticPolicyTest{ - { -@@ -549,7 +554,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), excludeReserved) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -571,6 +576,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - func TestTopologyAwareAllocateCPUs(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - excludeReserved := false - testCases := []struct { - description string -@@ -640,7 +646,7 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), excludeReserved) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -673,6 +679,7 @@ type staticPolicyTestWithResvList struct { - topo *topology.CPUTopology - numReservedCPUs int - reserved cpuset.CPUSet -+ isolcpus cpuset.CPUSet - stAssignments state.ContainerCPUAssignments - stDefaultCPUSet cpuset.CPUSet - pod *v1.Pod -@@ -713,9 +720,10 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - }, - } - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testExcl) -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testExcl) - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -755,6 +763,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), -@@ -767,6 +776,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), -@@ -779,6 +789,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -795,6 +806,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -806,11 +818,29 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(0, 1), - }, -+ { -+ description: "InfraPod, SingleSocketHT, Isolcpus, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0), -+ }, - } - - testExcl := true -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, testCase.isolcpus, topologymanager.NewFakeManager(), testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch b/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch deleted file mode 100644 index 3a513fe7a..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch +++ /dev/null @@ -1,313 +0,0 @@ -From 38ecddc618a62bc1b73bafd530b45e9bd8cac19e Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Tue, 7 Sep 2021 13:22:41 -0400 -Subject: [PATCH 2/7] kubelet cpumanager keep normal containers off reserved - CPUs - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via '--system-reserved=cpu' -or '--kube-reserved=cpu' will be ignored by kubernetes itself. A small -tweak to the default CPU affinity ensures that "normal" Kubernetes -pods won't run on the reserved CPUs. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 6 +++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 11 ++++-- - pkg/kubelet/cm/cpumanager/policy_static.go | 29 ++++++++++++--- - .../cm/cpumanager/policy_static_test.go | 35 +++++++++++++------ - 4 files changed, 62 insertions(+), 19 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index f7b9c8d07bf..5b82e5b02ac 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -178,7 +178,11 @@ func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo - // exclusively allocated. - reservedCPUsFloat := float64(reservedCPUs.MilliValue()) / 1000 - numReservedCPUs := int(math.Ceil(reservedCPUsFloat)) -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity) -+ // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. -+ // This variable is primarily to make testing easier. -+ excludeReserved := true -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, excludeReserved) -+ - if err != nil { - return nil, fmt.Errorf("new static policy error: %v", err) - } -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index 51c6ad99251..a2e73de6875 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -215,6 +215,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -229,7 +230,8 @@ func TestCPUManagerAdd(t *testing.T) { - }, - 0, - cpuset.NewCPUSet(), -- topologymanager.NewFakeManager()) -+ topologymanager.NewFakeManager(), -+ testExcl) - testCases := []struct { - description string - updateErr error -@@ -477,8 +479,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - }, - } - -+ testExcl := false - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -986,6 +989,7 @@ func TestReconcileState(t *testing.T) { - // above test cases are without kubelet --reserved-cpus cmd option - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1000,7 +1004,8 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - }, - 1, - cpuset.NewCPUSet(0), -- topologymanager.NewFakeManager()) -+ topologymanager.NewFakeManager(), -+ testExcl) - testCases := []struct { - description string - updateErr error -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index ec25a15a3c2..94d81796132 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -75,6 +75,8 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // If true, default CPUSet should exclude reserved CPUs -+ excludeReserved bool - // topology manager reference to get container Topology affinity - affinity topologymanager.Store - // set of CPUs to reuse across allocations in a pod -@@ -87,7 +89,7 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, excludeReserved bool) (Policy, error) { - allCPUs := topology.CPUDetails.CPUs() - var reserved cpuset.CPUSet - if reservedCPUs.Size() > 0 { -@@ -111,6 +113,7 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - return &staticPolicy{ - topology: topology, - reserved: reserved, -+ excludeReserved: excludeReserved, - affinity: affinity, - cpusToReuse: make(map[string]cpuset.CPUSet), - }, nil -@@ -139,7 +142,15 @@ func (p *staticPolicy) validateState(s state.State) error { - } - // state is empty initialize - allCPUs := p.topology.CPUDetails.CPUs() -- s.SetDefaultCPUSet(allCPUs) -+ if p.excludeReserved { -+ // Exclude reserved CPUs from the default CPUSet to keep containers off them -+ // unless explicitly affined. -+ s.SetDefaultCPUSet(allCPUs.Difference(p.reserved)) -+ } else { -+ s.SetDefaultCPUSet(allCPUs) -+ } -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -+ allCPUs, p.reserved, s.GetDefaultCPUSet()) - return nil - } - -@@ -147,9 +158,11 @@ func (p *staticPolicy) validateState(s state.State) error { - // 1. Check if the reserved cpuset is not part of default cpuset because: - // - kube/system reserved have changed (increased) - may lead to some containers not being able to start - // - user tampered with file -- if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -- return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -- p.reserved.String(), tmpDefaultCPUset.String()) -+ if !p.excludeReserved { -+ if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -+ return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -+ p.reserved.String(), tmpDefaultCPUset.String()) -+ } - } - - // 2. Check if state for static policy is consistent -@@ -178,6 +191,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } - } - totalKnownCPUs = totalKnownCPUs.UnionAll(tmpCPUSets) -+ if p.excludeReserved { -+ totalKnownCPUs = totalKnownCPUs.Union(p.reserved) -+ } - if !totalKnownCPUs.Equals(p.topology.CPUDetails.CPUs()) { - return fmt.Errorf("current set of available CPUs \"%s\" doesn't match with CPUs in state \"%s\"", - p.topology.CPUDetails.CPUs().String(), totalKnownCPUs.String()) -@@ -248,6 +264,9 @@ func (p *staticPolicy) RemoveContainer(s state.State, podUID string, containerNa - klog.InfoS("Static policy: RemoveContainer", "podUID", podUID, "containerName", containerName) - if toRelease, ok := s.GetCPUSet(podUID, containerName); ok { - s.Delete(podUID, containerName) -+ if p.excludeReserved { -+ toRelease = toRelease.Difference(p.reserved) -+ } - // Mutate the shared pool, adding released cpus. - s.SetDefaultCPUSet(s.GetDefaultCPUSet().Union(toRelease)) - } -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index c54997787b4..93a2870532a 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -33,6 +33,7 @@ type staticPolicyTest struct { - description string - topo *topology.CPUTopology - numReservedCPUs int -+ excludeReserved bool - podUID string - containerName string - stAssignments state.ContainerCPUAssignments -@@ -44,7 +45,8 @@ type staticPolicyTest struct { - } - - func TestStaticPolicyName(t *testing.T) { -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ testExcl := false -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -74,6 +76,15 @@ func TestStaticPolicyStart(t *testing.T) { - stDefaultCPUSet: cpuset.NewCPUSet(), - expCSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), - }, -+ { -+ description: "empty cpuset exclude reserved", -+ topo: topoDualSocketHT, -+ numReservedCPUs: 2, -+ excludeReserved: true, -+ stAssignments: state.ContainerCPUAssignments{}, -+ stDefaultCPUSet: cpuset.NewCPUSet(), -+ expCSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 7, 8, 9, 10, 11), -+ }, - { - description: "reserved cores 0 & 6 are not present in available cpuset", - topo: topoDualSocketHT, -@@ -120,7 +131,7 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: testCase.stAssignments, -@@ -436,7 +447,7 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -479,6 +490,7 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func TestStaticPolicyRemove(t *testing.T) { -+ excludeReserved := false - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -537,7 +549,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -559,6 +571,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - func TestTopologyAwareAllocateCPUs(t *testing.T) { -+ excludeReserved := false - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -627,7 +640,7 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -699,9 +712,10 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -+ testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager()) -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testExcl) - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -741,7 +755,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), - expCPUAlloc: false, -@@ -753,7 +767,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), - expErr: nil, - expCPUAlloc: true, -@@ -769,7 +783,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), - }, - }, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 4, 5), -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), - pod: makePod("fakePod", "fakeContainer3", "2000m", "2000m"), - expErr: nil, - expCPUAlloc: true, -@@ -777,8 +791,9 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - }, - } - -+ testExcl := true - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager()) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch b/kubernetes/kubernetes-1.21.8/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch deleted file mode 100644 index a58e47d5b..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch +++ /dev/null @@ -1,50 +0,0 @@ -From ba9ab333c8b7dca5252e604837914293dc232732 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Fri, 11 Feb 2022 11:06:35 -0500 -Subject: [PATCH] kubelet: sort isolcpus allocation when SMT enabled - -The existing device manager code returns CPUs as devices in unsorted -order. This numerically sorts isolcpus allocations when SMT/HT is -enabled on the host. This logs SMT pairs, singletons, and algorithm -order details to make the algorithm understandable. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/devicemanager/manager.go | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 609da8ed86b..a4b247714f7 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -686,7 +686,16 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - return cpu_lst[0] - } - } -+ //Make post-analysis of selection algorithm obvious by numerical sorting -+ //the available isolated cpu_id. -+ cpu_ids := make([]int, 0, int(devices.Len())) - for cpu_id := range devices { -+ cpu_id_, _ := strconv.Atoi(cpu_id) -+ cpu_ids = append(cpu_ids, cpu_id_) -+ } -+ sort.Ints(cpu_ids) -+ for _, _cpu_id := range cpu_ids { -+ cpu_id := strconv.Itoa(_cpu_id) - // If we've already found cpu_id as a sibling, skip it. - if _, ok := _iterated_cpu[cpu_id]; ok { - continue -@@ -728,7 +737,9 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - } - } - } -- //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ //This algorithm will get some attention. Show minimal details. -+ klog.Infof("order_devices_by_sibling: needed=%d, smtpairs=%v, singletons=%v, order=%v", -+ needed, sibling_lst, single_lst, dev_lst) - return dev_lst, nil - } - func smt_enabled() bool { --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.21.8/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch b/kubernetes/kubernetes-1.21.8/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch deleted file mode 100644 index dbc28d503..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 95b7b6e1ddb25511c67a3d4018f62df1e76ee7bc Mon Sep 17 00:00:00 2001 -From: Tao Wang -Date: Tue, 25 Jan 2022 19:25:45 -0500 -Subject: [PATCH] kubernetes: make isolcpus allocation SMT-aware - -Enhance isolcpus support in Kubernetes to allocate isolated SMT -siblings to the same container when SMT/HT is enabled on the host. - -As it stands, the device manager code in Kubernetes is not SMT-aware -(since normally it doesn't deal with CPUs). However, StarlingX -exposes isolated CPUs as devices and if possible we want to allocate -all SMT siblings from a CPU core to the same container in order to -minimize cross- container interference due to resource contention -within the CPU core. - -The solution is basically to take the list of isolated CPUs and -re-order it so that the SMT siblings are next to each other. That -way the existing resource selection code will allocate the siblings -together. As an optimization, if it is known that an odd number -of isolated CPUs are desired, a singleton SMT sibling will be -inserted into the list to avoid breaking up sibling pairs. - -Signed-off-by: Tao Wang ---- - pkg/kubelet/cm/devicemanager/manager.go | 84 ++++++++++++++++++++++++- - 1 file changed, 83 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 60de14a9..609da8ed 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -19,11 +19,14 @@ package devicemanager - import ( - "context" - "fmt" -+ "io/ioutil" - "net" - "os" - "path/filepath" - "runtime" - "sort" -+ "strconv" -+ "strings" - "sync" - "time" - -@@ -41,6 +44,7 @@ import ( - "k8s.io/kubernetes/pkg/features" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors" -+ "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/checkpoint" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" -@@ -667,6 +671,75 @@ func (m *ManagerImpl) UpdateAllocatedDevices() { - m.allocatedDevices = m.podDevices.devices() - } - -+//Given a list of isolated CPUs in 'devices', and the number of desired CPUs in 'needed', -+//return an ordered list of isolated CPUs such that the first 'needed' CPUs in the list -+//contain as many hyperthread sibling pairs as possible. -+func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) { -+ var dev_lst []string -+ var single_lst []string -+ sibling_lst := make([]string, 0, int(devices.Len())) -+ _iterated_cpu := make(map[string]string) -+ get_sibling := func(cpu string, cpu_lst []string) string { -+ if cpu_lst[0] == cpu { -+ return cpu_lst[1] -+ } else { -+ return cpu_lst[0] -+ } -+ } -+ for cpu_id := range devices { -+ // If we've already found cpu_id as a sibling, skip it. -+ if _, ok := _iterated_cpu[cpu_id]; ok { -+ continue -+ } -+ devPath := fmt.Sprintf("/sys/devices/system/cpu/cpu%s/topology/thread_siblings_list", cpu_id) -+ dat, err := ioutil.ReadFile(devPath) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Can't read cpu[%s] thread_siblings_list", cpu_id) -+ } -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cpu_pair_set, err := cpuset.Parse(cpustring) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Unable to parse thread_siblings_list[%s] string to cpuset", cpustring) -+ } -+ var cpu_pair_lst []string -+ for _, v := range cpu_pair_set.ToSlice() { -+ cpu_pair_lst = append(cpu_pair_lst, strconv.Itoa(v)) -+ } -+ sibling_cpu_id := get_sibling(cpu_id, cpu_pair_lst) -+ if _, ok := devices[sibling_cpu_id]; ok { -+ sibling_lst = append(sibling_lst, cpu_id, sibling_cpu_id) -+ _iterated_cpu[sibling_cpu_id] = "" -+ } else { -+ single_lst = append(single_lst, cpu_id) -+ } -+ _iterated_cpu[cpu_id] = "" -+ } -+ if needed%2 == 0 { -+ dev_lst = append(sibling_lst, single_lst...) -+ } else { -+ if len(single_lst) > 1 { -+ _tmp_list := append(sibling_lst, single_lst[1:]...) -+ dev_lst = append(single_lst[0:1], _tmp_list...) -+ } else { -+ if len(single_lst) == 0 { -+ dev_lst = sibling_lst -+ } else { -+ dev_lst = append(single_lst, sibling_lst...) -+ } -+ } -+ } -+ //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ return dev_lst, nil -+} -+func smt_enabled() bool { -+ dat, _ := ioutil.ReadFile("/sys/devices/system/cpu/smt/active") -+ state := strings.TrimSuffix(string(dat), "\n") -+ if state == "0" { -+ return false -+ } -+ return true -+} -+ - // Returns list of device Ids we need to allocate with Allocate rpc call. - // Returns empty list in case we don't need to issue the Allocate rpc call. - func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, required int, reusableDevices sets.String) (sets.String, error) { -@@ -702,7 +775,16 @@ func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, requi - // Create a closure to help with device allocation - // Returns 'true' once no more devices need to be allocated. - allocateRemainingFrom := func(devices sets.String) bool { -- for device := range devices.Difference(allocated) { -+ availableDevices := devices.Difference(allocated).List() -+ // If we're dealing with isolcpus and SMT is enabled, reorder to group SMT siblings together. -+ if resource == "windriver.com/isolcpus" && len(devices) > 0 && smt_enabled() { -+ var err error -+ availableDevices, err = order_devices_by_sibling(devices.Difference(allocated), needed) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ } -+ for _, device := range availableDevices { - m.allocatedDevices[resource].Insert(device) - allocated.Insert(device) - needed-- --- -2.22.5 - diff --git a/kubernetes/kubernetes-1.21.8/centos/kubernetes.spec b/kubernetes/kubernetes-1.21.8/centos/kubernetes.spec deleted file mode 100644 index d1077998c..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/kubernetes.spec +++ /dev/null @@ -1,2261 +0,0 @@ -%if 0%{?fedora} -%global with_devel 1 -%global with_bundled 0 -%global with_debug 1 -%else -%global with_devel 0 -%global with_bundled 1 -%global with_debug 0 -%endif - -%if 0%{?with_debug} -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%else -%global debug_package %{nil} -%endif - -%global provider github -%global provider_tld com -%global project kubernetes -%global repo kubernetes -# https://github.com/kubernetes/kubernetes - -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global import_path k8s.io/kubernetes -%global commit 1.21.8 - -%global kube_version 1.21.8 -%global kube_git_version v%{kube_version} - -%global go_version 1.16.12 -%global go_path /usr/lib/golang-%{go_version}-%{go_version}/bin - -# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work -%global _buildshell /bin/bash -%global _checkshell /bin/bash - -# Used to simplify the paths for install and files -%global _stage1 %{_exec_prefix}/local/kubernetes/%{kube_version}/stage1 -%global _stage2 %{_exec_prefix}/local/kubernetes/%{kube_version}/stage2 - -############################################## -Name: kubernetes-%{kube_version} -Version: %{kube_version} -Release: 1%{?_tis_dist}.%{tis_patch_ver} -Summary: Container cluster management -License: ASL 2.0 -URL: https://%{import_path} -ExclusiveArch: x86_64 aarch64 ppc64le s390x -Source0: %{project}-v%{kube_version}.tar.gz -Source4: kubeadm.conf -Source5: kubelet-cgroup-setup.sh - -Source33: genmanpages.sh - -Patch1: kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch -Patch2: kubelet-cpumanager-keep-normal-containers-off-reserv.patch -Patch3: kubelet-cpumanager-infrastructure-pods-use-system-re.patch -Patch4: kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch -Patch5: kubeadm-create-platform-pods-with-zero-CPU-resources.patch -Patch6: enable-support-for-kubernetes-to-ignore-isolcpus.patch -Patch7: Revert-use-subpath-for-coredns-only-for-default-repo.patch -Patch8: Change-log-level-to-Debug.patch -Patch9: kubernetes-make-isolcpus-allocation-SMT-aware.patch -Patch10: kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch - -# It obsoletes cadvisor but needs its source code (literally integrated) -Obsoletes: cadvisor - -# kubernetes is decomposed into master and node subpackages -# require both of them for updates -Requires: kubernetes-%{kube_version}-master -Requires: kubernetes-%{kube_version}-node - -%description -%{summary} - -%if 0%{?with_devel} -%package devel -Summary: %{summary} -BuildArch: noarch - -Provides: golang(%{import_path}/cmd/genutils) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubectl/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/normalization) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/install) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/conversion-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/deepcopy-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/generator) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/go-to-protobuf/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/import-boss/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/namer) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/parser) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/set-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/types) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/install) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/pkg/federation-controller/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/admission) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/annotations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/endpoints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta/metatypes) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest/resttest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing/compat) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery/registered) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v0) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v2alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/audit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator/bearertoken) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/union) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/handlers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/chaosclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/leaderelection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/record) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/restclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/testing/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/transport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/dynamic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/adapters/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/auth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient/simple) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/azure) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/cloudstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/gce) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/mesos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/openstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/ovirt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/rackspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/vsphere) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/daemon) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/disruption) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework/informers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector/metaonly) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podgc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/route) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/statusupdater) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion/queryparams) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/dns) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fieldpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fields) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/openapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/healthz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/httplog) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/rollout) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/set) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/templates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/editor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/jsonmerge) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/metricsutil) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/client) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cm) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/custommetrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockershim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockertools) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/envvars) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/events) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/eviction) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/images) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/kuberuntime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/leaky) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hairpin) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/kubenet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/mock_network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pleg) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/results) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/qos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/remote) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt/mock_os) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rktshim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/status) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/format) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/ioutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/queue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/sliceutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubemark) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master/ports) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/http) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/tcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/healthcheck) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/userspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/evaluator/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/subjectaccessreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/cachesize) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/componentstatus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/experimental/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rangeallocation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/registrytest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/tokenreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/recognizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/streaming) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/versioning) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontext) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/seccomp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/selection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ssh) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/etcdtest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing/testingcert) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend/factory) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ui) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/async) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/bandwidth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chmod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chown) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/clock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/codeinspector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/configz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crlf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crypto) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/dbus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/diff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/ebtables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/env) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flowcontrol) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flushwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/framer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap/exponentialbackoff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/hash) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/homedir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream/spdy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/integer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/interrupt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/intstr) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/io) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/jsonpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/keymutex) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/limitwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/logs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/maps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/mount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/oom) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/parsers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/procfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/resourcecontainer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rlimit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/slice) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strategicpatch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strings) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/system) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/term) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/threading) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/uuid) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation/field) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wait) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/workqueue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wsstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/verflag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/aws_ebs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_dd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_file) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cephfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cinder) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/downwardapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/empty_dir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/fc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flexvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flocker) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/gce_pd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/git_repo) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/glusterfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/host_path) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/iscsi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/nfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/quobyte) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/rbd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/nestedpendingoperations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/operationexecutor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/volumehelper) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/vsphere_volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/versioned) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/admit) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/alwayspullimages) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/antiaffinity) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/deny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/exec) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/initialresources) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/limitranger) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/autoprovision) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/exists) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/persistentvolume/label) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/securitycontext/scdeny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/storageclass/default) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/allow) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/keystone) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/passwordfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/basicauth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/union) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/x509) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokenfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokentest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/predicates) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities/util) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider/defaults) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/factory) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/schedulercache) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/webhook) = %{version}-%{release} - -%description devel -Libraries for building packages importing k8s.io/kubernetes. -Currently, the devel is not suitable for development. -It is meant only as a buildtime dependency for other projects. - -This package contains library source intended for -building other packages which use %{project}/%{repo}. -%endif - -############################################## -%package unit-test -Summary: %{summary} - for running unit tests - -# below Rs used for testing -Requires: golang-%{go_version} -Requires: etcd >= 2.0.9 -Requires: hostname -Requires: rsync -Requires: NetworkManager - -%description unit-test -%{summary} - for running unit tests - -############################################## -%package master -Summary: Kubernetes services for master host - -# Build with the recommended golang for this Kubernetes version -BuildRequires: golang-%{go_version} -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: kubernetes-%{kube_version}-client - -%description master -Kubernetes services for master host - -############################################## -%package node -Summary: Kubernetes services for node host - -%if 0%{?fedora} >= 27 -Requires: (docker or docker-ce) -Suggests: docker-ce -%else -Requires: docker-ce -%endif -Requires: conntrack-tools - -BuildRequires: golang-%{go_version} -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: socat -Requires: kubernetes-%{kube_version}-client - -%description node -Kubernetes services for node host - -############################################## -%package kubeadm -Summary: Kubernetes tool for standing up clusters -Requires: kubernetes-%{kube_version}-client -Requires: containernetworking-cni - -%description kubeadm -Kubernetes tool for standing up clusters - -############################################## -%package client -Summary: Kubernetes client tools - -BuildRequires: golang-%{go_version} -BuildRequires: go-bindata - -%description client -Kubernetes client tools like kubectl - -############################################## -%package kube-misc -Summary: dummy package -%description kube-misc -Kubernetes dummy package for misc stuff we don't want to -install in production. - -############################################## - -%prep -%setup -q -n %{repo}-%{commit} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 - -#src/k8s.io/kubernetes/pkg/util/certificates -# Patch the code to remove eliptic.P224 support -for dir in vendor/github.com/google/certificate-transparency/go/x509 pkg/util/certificates; do - if [ -d "${dir}" ]; then - pushd ${dir} - sed -i "/^[^=]*$/ s/oidNamedCurveP224/oidNamedCurveP256/g" *.go - sed -i "/^[^=]*$/ s/elliptic\.P224/elliptic.P256/g" *.go - popd - fi -done - -# Move all the code under src/k8s.io/kubernetes directory -mkdir -p src/k8s.io/kubernetes -mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. - -############### - -%build -export PATH=%{go_path}:$PATH -export PBR_VERSION=%{version} -pushd src/k8s.io/kubernetes/ -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=%{commit} -export KUBE_GIT_VERSION=%{kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace - -# Verify the go version we will build against -go version - -# https://bugzilla.redhat.com/show_bug.cgi?id=1392922#c1 -%ifarch ppc64le -export GOLDFLAGS='-linkmode=external' -%endif - -# uncomment these two lines to build unoptimized binaries for debugging. -# export GOLDFLAGS="" -# export GOGCFLAGS="-N -l" -make WHAT="cmd/kube-proxy cmd/kube-apiserver cmd/kube-controller-manager cmd/kubelet cmd/kubeadm cmd/kube-scheduler cmd/kubectl" - -# convert md to man -./hack/generate-docs.sh || true -pushd docs -pushd admin -cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. -popd -cp %{SOURCE33} genmanpages.sh -#bash genmanpages.sh -popd -popd - -%install -# go_path required for setup_env golang version check -export PATH=%{go_path}:$PATH -export PBR_VERSION=%{version} -pushd src/k8s.io/kubernetes/ -. hack/lib/init.sh -kube::golang::setup_env - -%ifarch ppc64le -output_path="_output/local/go/bin" -%else -output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" -%endif - -install -m 755 -d %{buildroot}%{_bindir} -install -m 755 -d %{buildroot}%{_stage1}%{_bindir} -install -m 755 -d %{buildroot}%{_stage2}%{_bindir} - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kubeadm" -install -p -m 755 -t %{buildroot}%{_stage1}%{_bindir} ${output_path}/kubeadm -install -d -m 0755 %{buildroot}%{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d -install -p -m 0644 -t %{buildroot}%{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE4} - -echo "+++ INSTALLING kubelet-cgroup-setup.sh" -install -p -m 0700 -t %{buildroot}%{_stage2}%{_bindir} %{SOURCE5} - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kube-controller-manager" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-controller-manager - -echo "+++ INSTALLING kube-scheduler" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-scheduler - -echo "+++ INSTALLING kube-proxy" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-proxy - -echo "+++ INSTALLING kubelet" -install -p -m 754 -t %{buildroot}%{_stage2}%{_bindir} ${output_path}/kubelet - -echo "+++ INSTALLING kubectl" -install -p -m 754 -t %{buildroot}%{_stage2}%{_bindir} ${output_path}/kubectl - -# install the bash completion -install -d -m 0755 %{buildroot}%{_stage2}%{_datadir}/bash-completion/completions/ -%{buildroot}%{_stage2}%{_bindir}/kubectl completion bash > %{buildroot}%{_stage2}%{_datadir}/bash-completion/completions/kubectl - -# install specific cluster addons for optional use -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons -# Addon: volumesnapshots -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/crd -install -m 0644 -t %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/crd cluster/addons/volumesnapshots/crd/* -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller -install -m 0644 -t %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller cluster/addons/volumesnapshots/volume-snapshot-controller/* - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 -rm -Rf %{buildroot}%{_mandir}/man1/cloud-controller-manager.* -# from k8s tarball copied docs/man/man1/*.1 - -# source codes for building projects -%if 0%{?with_devel} -install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ -echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list -# find all *.go but no *_test.go files and generate devel.file-list -for file in $(find . -iname "*.go" \! -iname "*_test.go") ; do - echo "%%dir %%{gopath}/src/%%{import_path}/$(dirname $file)" >> devel.file-list - install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$(dirname $file) - cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file - echo "%%{gopath}/src/%%{import_path}/$file" >> devel.filelist -done -%endif - - -%if 0%{?with_devel} -sort -u -o devel.file-list devel.file-list -%endif - -popd - -%if 0%{?with_devel} -mv src/k8s.io/kubernetes/devel.file-list . -%endif - -mv src/k8s.io/kubernetes/*.md . -mv src/k8s.io/kubernetes/LICENSE . - - -# place files for unit-test rpm -install -d -m 0755 %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -# basically, everything from the root directory is needed -# unit-tests needs source code -# integration tests needs docs and other files -# test-cmd.sh atm needs cluster, examples and other -cp -a src %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -rm -rf %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/_output -cp -a *.md %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/ - -%check -# Fedora, RHEL7 and CentOS are tested via unit-test subpackage -if [ 1 != 1 ]; then -echo "******Testing the commands*****" -hack/test-cmd.sh -echo "******Benchmarking kube********" -hack/benchmark-go.sh - -# In Fedora 20 and RHEL7 the go cover tools isn't available correctly -%if 0%{?fedora} >= 21 -echo "******Testing the go code******" -hack/test-go.sh -echo "******Testing integration******" -hack/test-integration.sh --use_go_build -%endif -fi - -############################################## -%files -# empty as it depends on master and node - -############################################## -%files master -%license LICENSE -%doc *.md -%attr(754, -, root) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver -%{_bindir}/kube-controller-manager -%{_bindir}/kube-scheduler -%dir %{_sysconfdir}/%{name} -%dir %{_sysconfdir}/%{name}/addons -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots/crd -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshots.yaml -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller -%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller/volume-snapshot-controller-deployment.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller/rbac-volume-snapshot-controller.yaml - -############################################## -%files node -%license LICENSE -%{_stage2}%{_bindir}/kubelet -%{_stage2}%{_bindir}/kubelet-cgroup-setup.sh - -############################################## -%files kubeadm -%license LICENSE -%{_stage1}%{_bindir}/kubeadm -%dir %{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d -%config(noreplace) %{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf - -############################################## -%files client -%license LICENSE -%{_stage2}%{_bindir}/kubectl -%{_stage2}%{_datadir}/bash-completion/completions/kubectl - -############################################## -%files unit-test -%{_sharedstatedir}/kubernetes-unit-test/ - -%if 0%{?with_devel} -%files devel -f devel.file-list -%doc *.md -%dir %{gopath}/src/k8s.io -%endif - -############################################## -%files kube-misc -%{_mandir}/man1/kube-apiserver.1* -%{_mandir}/man1/kube-controller-manager.1* -%{_mandir}/man1/kube-scheduler.1* -%{_mandir}/man1/kube-proxy.1* -%{_bindir}/kube-proxy -%{_mandir}/man1/kubelet.1* -%{_mandir}/man1/kubeadm.1* -%{_mandir}/man1/kubeadm-* -%{_mandir}/man1/kubectl.1* -%{_mandir}/man1/kubectl-* - -############################################## - -%pre master - -%post master -%systemd_post kube-apiserver kube-scheduler kube-controller-manager - -%preun master -%systemd_preun kube-apiserver kube-scheduler kube-controller-manager - -%postun master -%systemd_postun - - -%pre node - -%post node - -%preun node - -%postun node -%systemd_postun - -############################################ -%changelog -* Tue Mar 27 2018 Spyros Trigazis - 1.10.0-1 -- Bump to upstream v1.10.0 - -* Thu Mar 22 2018 Spyros Trigazis - 1.9.6-1 -- Bump to upstream v1.9.6 - -* Tue Mar 20 2018 Jan Chaloupka - 1.9.5-1 -- Bump to upstream v1.9.5 - resolves: #1554420 - -* Sun Feb 11 2018 Spyros Trigazis - 1.9.3-1 -- Bump to upstream v1.9.3 - -* Fri Feb 09 2018 Jan Chaloupka - 1.9.1-5 -- Add --fail-swap-on=false flag to the /etc/kubernetes/kubelet - resolves: #1542476 - -* Thu Feb 08 2018 Igor Gnatenko - 1.9.1-4 -- Escape macro in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 1.9.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Jan 15 2018 Jan Chaloupka - 1.9.1-2 -- If docker is not available, try docker-ce instead (use boolean dependencies) - resolves: #1534508 - -* Fri Jan 12 2018 Spyros Trigazis - 1.9.1-1 -- Update to upstream v1.9.1 - resolves #1533794 - -* Tue Oct 24 2017 Jan Chaloupka - 1.8.1-1 -- Update to upstream v1.8.1 - resolves: #1497135 - -* Mon Oct 02 2017 Jan Chaloupka - 1.8.0-1 -- Update to upstream v1.8.0 - related: #1497625 - -* Mon Oct 02 2017 Jan Chaloupka - 1.7.7-1 -- Update to upstream v1.7.7 - resolves: #1497625 - -* Mon Sep 18 2017 Jan Chaloupka - 1.7.6-1 -- Update to upstream v1.7.6 - resolves: #1492551 - -* Mon Sep 11 2017 Jan Chaloupka - 1.7.5-1 -- Update to upstream v1.7.5 - resolves: #1490316 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.4-1 -- Fix the version - related: #1482874 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.3-2 -- Update to upstream v1.7.4 - resolves: #1482874 - -* Tue Aug 08 2017 Jan Chaloupka - 1.7.3-1 -- Update to upstream v1.7.3 - resolves: #1479685 - -* Thu Aug 03 2017 Fedora Release Engineering - 1.7.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Sun Jul 30 2017 Florian Weimer - 1.7.2-3 -- Rebuild with binutils fix for ppc64le (#1475636) - -* Wed Jul 26 2017 Fedora Release Engineering - 1.7.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.2-1 -- Update to upstream v1.7.2 - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.1-2 -- Sync kubeadm.conf with upstream service configuration (set Restart,StartLimitInterval,RestartSec) - -* Fri Jul 14 2017 Jan Chaloupka - 1.7.1-1 -- Update to upstream v1.7.1 - resolves: #1471767 - -* Sat Jul 08 2017 Jan Chaloupka - 1.6.7-1 -- Update to upstream v1.6.7 - resolves: #1468823 - resolves: #1468752 - -* Fri May 19 2017 Timothy St. Clair - 1.6.4-1 -- Add kubeadm subpackage to enable upstream deployments - -* Thu May 18 2017 Jan Chaloupka - 1.6.3-1 -- Update to upstream v1.6.3 - resolves: #1452101 - -* Fri May 12 2017 Jan Chaloupka - 1.6.2-2 -- Extend archs with s390x - resolves: #1400000 - -* Tue May 02 2017 Jan Chaloupka - 1.6.2-1 -- Update to upstream v1.6.2 - resolves: #1447338 - -* Tue Apr 11 2017 Jan Chaloupka - 1.6.1-1 -- Update to upstream v1.6.1 - related: #1422889 - -* Fri Mar 31 2017 Jan Chaloupka - 1.5.6-1 -- Update to upstream v1.5.6 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.5-4 -- Update to upstream v1.5.5 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.4-3 -- re-enable debug-info - related: #1422889 - -* Thu Mar 09 2017 Jan Chaloupka - 1.5.4-2 -- Bump to upstream 7243c69eb523aa4377bce883e7c0dd76b84709a1 - related: #1422889 - -* Thu Feb 16 2017 Jan Chaloupka - 1.5.3-1 -- Update to upstream v1.5.3 - resolves: #1422889 - -* Fri Feb 10 2017 Fedora Release Engineering - 1.5.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Wed Jan 18 2017 Jan Chaloupka - 1.5.2-2 -- fix rootScopeNaming generate selfLink - resolves: #1413997 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.2-1 -- Bump version as well - related: #1412996 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.1-2 -- Bump to upstream 1.5.2 - resolves: #1412996 - -* Thu Jan 05 2017 Jan Chaloupka - 1.5.1-1 -- Bump to upstream 1.5.1 - resolves: #1410186 - -* Wed Jan 04 2017 Jan Chaloupka - 1.4.7-2 -- Generate the md files before they are converted to man pages - resolves: #1409943 - -* Mon Dec 12 2016 Jan Chaloupka - 1.4.7-1 -- Bump to upstream v1.4.7 - resolves: #1403823 - New conntrack-tools dependency of kube-proxy - Build kubernetes on ppc64le with linkmode=external - resolves: #1392922 - -* Mon Nov 14 2016 jchaloup - 1.4.5-3 -- Patch unit-test subpackage to run tests over k8s distro binaries - -* Wed Nov 09 2016 jchaloup - 1.4.5-2 -- Add missing if devel around generated devel.file-list - related: #1390074 - -* Tue Nov 08 2016 jchaloup - 1.4.5-1 -- Bump to upstream v1.4.5 (flip back to upstream based Kubernetes) - related: #1390074 - -* Mon Oct 31 2016 jchaloup - 1.4.0-0.1.beta3.git52492b4 -- Update to origin v1.4.0-alpha.0 (ppc64le and arm unbuildable with the current golang version) - resolves: #1390074 - -* Mon Oct 24 2016 jchaloup - 1.3.0-0.4.git52492b4 -- Update to origin v1.3.1 - resolves: #1388092 - -* Thu Sep 08 2016 jchaloup - 1.3.0-0.3.rc1.git507d3a7 -- Update to origin v1.3.0-rc1 - resolves: #1374361 - -* Thu Aug 11 2016 Dennis Gilmore -1.3.0-0.2.git4a3f9c5 -- enable armv7hl and aarch64 - -* Tue Aug 09 2016 jchaloup - 1.3.0-0.1.git4a3f9c5 -- Update to origin v1.3.0-alpha.3 - resolves: #1365601 - -* Thu Jul 21 2016 Fedora Release Engineering - 1.2.0-0.27.git4a3f9c5 -- https://fedoraproject.org/wiki/Changes/golang1.7 - -* Sun Jul 17 2016 jchaloup - 1.2.0-0.26.git4a3f9c5 -- Update to origin v1.2.1 - resolves: #1357261 - -* Wed Jul 13 2016 jchaloup - 1.2.0-0.25.git4a3f9c5 -- Enable CPU and Memory accounting on a node - -* Wed Jun 29 2016 jchaloup - 1.2.0-0.24.git4a3f9c5 -- Be more verbose about devel subpackage - resolves: #1269449 - -* Tue Jun 28 2016 jchaloup - 1.2.0-0.23.git4a3f9c5 -- Own /run/kubernetes directory - resolves: #1264699 - -* Sat May 28 2016 jchaloup - 1.2.0-0.22.git4a3f9c5 -- Bump to origin v1.2.0 - resolves: #1340643 - -* Wed May 04 2016 jchaloup - 1.2.0-0.21.git4a3f9c5 -- Extend uni-test subpackage to run other tests - -* Mon Apr 25 2016 jchaloup - 1.2.0-0.20.git4a3f9c5 -- Update support for ppc64le to use go compiler - related: #1306214 - -* Thu Apr 21 2016 jchaloup - 1.2.0-0.19.git4a3f9c5 -- Fix support for ppc64le - related: #1306214 - -* Tue Apr 19 2016 jchaloup - 1.2.0-0.18.git4a3f9c5 -- Bump to origin v1.1.6 - resolves: #1328357 - -* Mon Apr 11 2016 jchaloup - 1.2.0-0.17.alpha6.git4a3f9c5 -- Don't disable extensions/v1beta1 by default to conform with upstream documentation - -* Wed Mar 30 2016 jchaloup - 1.2.0-0.16.alpha6.git4a3f9c5 - Update to origin's v1.1.5 - Build on ppc64le as well - resolves: #1306214 - -* Tue Mar 08 2016 jchaloup - 1.2.0-0.15.alpha6.gitf0cd09a -- hyperkube.server: don't parse args for any command - -* Fri Mar 04 2016 jchaloup - 1.2.0-0.14.alpha6.gitf0cd09a -- Disable extensions/v1beta1 implicitly - -* Tue Mar 01 2016 jchaloup - 1.2.0-0.13.alpha6.gitf0cd09a -- Hyperkube checks flags of individual commands/servers even if it does not define their flags. - Thus resulting in 'uknown shorthand flag' error - -* Mon Feb 29 2016 jchaloup - 1.2.0-0.12.alpha6.gitf0cd09a -- Disable v1beta3 -- hyperkube-kubectl-dont shift os.Args - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.11.alpha6.gitf0cd09a -- add kube- prefix to controller-manager, proxy and scheduler - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.10.alpha6.gitf0cd09a -- Hardlink kube-controller-manager, kuber-scheduler, kubectl, kubelet and kube-proxy into hyperkube -- Keep kube-apiserver binary as it is (it has different permission and capabilities) - -* Thu Feb 25 2016 jchaloup - 1.2.0-0.9.alpha6.gitf0cd09a -- Fix Content-Type of docker client response - resolves: #1311861 - -* Mon Feb 22 2016 Fedora Release Engineering - 1.2.0-0.8.alpha6.gitf0cd09a -- https://fedoraproject.org/wiki/Changes/golang1.6 - -* Mon Feb 22 2016 jchaloup - 1.2.0-0.7.alpha6.git4c8e6f4 -- Bump to origin 1.1.3 - kube-version-change command replaced with kubectl convert (check out docs/admin/cluster-management.md) - related: 1295066 - -* Thu Feb 04 2016 Fedora Release Engineering - 1.2.0-0.6.alpha1.git4c8e6f4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jan 21 2016 jchaloup - 1.2.0-0.5.alpha1.git4c8e6f4 -- Bump to upstream e1d9873c1d5711b83fd3dd7eefe83a88ceb92c08 - related: #1291860 - -* Thu Jan 07 2016 jchaloup - 1.2.0-0.4.alpha1.git4c8e6f4 -- Move definition of all version, git and commit macros at one place - resolves: #1291860 - -* Fri Jan 01 2016 jchaloup - 1.2.0-0.3.alpha1.git4c8e6f4 -- Bump to upstream bf56e235826baded1772fb340266b8419c3e8f30 - Rebase to origin's "v1.1.0.1 - Security Update to v1.1" release - resolves: #1295066 - -* Thu Nov 26 2015 jchaloup - 1.2.0-0.2.alpha1.git4c8e6f4 -- Bump to origin upstream a41c9ff38d52fd508481c3c2bac13d52871fde02 -- Build kubernetes from origin's Godeps using hack/build-go.sh - origin's Godeps = kubernetes upstream + additional patches - -* Tue Oct 20 2015 jchaloup - 1.2.0-0.1.alpha1.git4c8e6f4 -- Bump to upstream 403de3874fba420fd096f2329b45fe2f5ae97e46 - related: #1211266 - -* Wed Oct 14 2015 jchaloup - 1.1.0-0.41.alpha1.gite9a6ef1 -- Bump to origin upstream e9a6ef1cd4c29d45730289a497d18b19d7ba450d - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.40.alpha1.git5f38cb0 -- Add missing short option for --server of kubectl -- Update unit-test-subpackage (only test-cmd.sh atm) - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.39.alpha1.git5f38cb0 -- Add normalization of flags - related: #1211266 - -* Fri Oct 02 2015 jchaloup - 1.1.0-0.38.alpha1.git5f38cb0 -- Restore unit-test subpackage (not yet tested) - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.37.alpha1.git5f38cb0 -- Do not unset default cluster, otherwise k8s ends with error when no cluster set - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.36.alpha0.git5f38cb0 -- Bump to o4n 5f38cb0e98c9e854cafba9c7f98dafd51e955ad8 - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.35.alpha1.git2695cdc -- Update git version of k8s and o4n, add macros - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.34.alpha1.git2695cdc -- Built k8s from o4n tarball -- Bump to upstream 2695cdcd29a8f11ef60278758e11f4817daf3c7c - related: #1211266 - -* Tue Sep 22 2015 jchaloup - 1.1.0-0.33.alpha1.git09cf38e -- Bump to upstream 09cf38e9a80327e2d41654db277d00f19e2c84d0 - related: #1211266 - -* Thu Sep 17 2015 jchaloup - 1.1.0-0.32.alpha1.git400e685 -- Bump to upstream 400e6856b082ecf4b295568acda68d630fc000f1 - related: #1211266 - -* Wed Sep 16 2015 jchaloup - 1.1.0-0.31.gitd549fc4 -- Bump to upstream d549fc400ac3e5901bd089b40168e1e6fb17341d - related: #1211266 - -* Tue Sep 15 2015 jchaloup - 1.1.0-0.30.gitc9570e3 -- Bump to upstream c9570e34d03c6700d83f796c0125d17c5064e57d - related: #1211266 - -* Mon Sep 14 2015 jchaloup - 1.1.0-0.29.git86b4e77 -- Bump to upstream 86b4e777e1947c1bc00e422306a3ca74cbd54dbe - related: #1211266 - -* Thu Sep 10 2015 jchaloup - 1.1.0-0.28.gitf867ba3 -- Bump to upstream f867ba3ba13e3dad422efd21c74f52b9762de37e - related: #1211266 - -* Wed Sep 09 2015 jchaloup - 1.1.0-0.27.git0f4fa4e -- Bump to upstream 0f4fa4ed25ae9a9d1824fe55aeefb4d4ebfecdfd - related: #1211266 - -* Tue Sep 08 2015 jchaloup - 1.1.0-0.26.git196f58b -- Bump to upstream 196f58b9cb25a2222c7f9aacd624737910b03acb - related: #1211266 - -* Mon Sep 07 2015 jchaloup - 1.1.0-0.25.git96e0ed5 -- Bump to upstream 96e0ed5749608d4cc32f61b3674deb04c8fa90ad - related: #1211266 - -* Sat Sep 05 2015 jchaloup - 1.1.0-0.24.git2e2def3 -- Bump to upstream 2e2def36a904fe9a197da5fc70e433e2e884442f - related: #1211266 - -* Fri Sep 04 2015 jchaloup - 1.1.0-0.23.gite724a52 -- Bump to upstream e724a5210adf717f62a72162621ace1e08730c75 - related: #1211266 - -* Thu Sep 03 2015 jchaloup - 1.1.0-0.22.gitb6f2f39 -- Bump to upstream b6f2f396baec5105ff928cf61903c2c368259b21 - related: #1211266 - -* Wed Sep 02 2015 jchaloup - 1.1.0-0.21.gitb4a3698 -- Bump to upstream b4a3698faed81410468eccf9f328ca6df3d0cca3 - related: #1211266 - -* Tue Sep 01 2015 jchaloup - 1.1.0-0.20.git2f9652c -- Bump to upstream 2f9652c7f1d4b8f333c0b5c8c1270db83b913436 - related: #1211266 - -* Mon Aug 31 2015 jchaloup - 1.1.0-0.19.git66a644b -- Bump to upstream 66a644b275ede9ddb98eb3f76e8d1840cafc2147 - related: #1211266 - -* Thu Aug 27 2015 jchaloup - 1.1.0-0.18.gitab73849 -- Bump to upstream ab7384943748312f5e9294f42d42ed3983c7c96c - related: #1211266 - -* Wed Aug 26 2015 jchaloup - 1.1.0-0.17.git00e3442 -- Bump to upstream 00e34429e0242323ed34347cf0ab65b3d62b21f7 - related: #1211266 - -* Tue Aug 25 2015 jchaloup - 1.1.0-0.16.gita945785 -- Bump to upstream a945785409d5b68f3a2721d2209300edb5abf1ce - related: #1211266 - -* Mon Aug 24 2015 jchaloup - 1.1.0-0.15.git5fe7029 -- Bump to upstream 5fe7029e688e1e5873a0b95a622edda5b5156d2b - related: #1211266 - -* Fri Aug 21 2015 jchaloup - 1.1.0-0.14.gitb6f18c7 -- Bump to upstream b6f18c7ce08714c8d4f6019463879a164a41750e - related: #1211266 - -* Thu Aug 20 2015 jchaloup - 1.1.0-0.13.git44fa48e -- Bump to upstream 44fa48e5af44d3e988fa943d96a2de732d8cc666 - related: #1211266 - -* Wed Aug 19 2015 jchaloup - 1.1.0-0.12.gitb5a4a54 -- Bump to upstream b5a4a548df0cffb99bdcc3b9b9e48d4025d0541c - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.11.git919c7e9 -- Bump to upstream 919c7e94e23d2dcd5bdd96896e0a7990f9ae3338 - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.10.git280b66c -- Bump to upstream 280b66c9012c21e253acd4e730f8684c39ca08ec - related: #1211266 - -* Mon Aug 17 2015 jchaloup - 1.1.0-0.9.git081d9c6 -- Bump to upstream 081d9c64d25c20ec16035036536511811118173d - related: #1211266 - -* Fri Aug 14 2015 jchaloup - 1.1.0-0.8.git8dcbeba -- Bump to upstream 8dcbebae5ef6a7191d9dfb65c68833c6852a21ad - related: #1211266 - -* Thu Aug 13 2015 jchaloup - 1.1.0-0.7.git968cbbe -- Bump to upstream 968cbbee5d4964bd916ba379904c469abb53d623 - related: #1211266 - -* Wed Aug 12 2015 jchaloup - 1.1.0-0.6.gitc91950f -- Bump to upstream c91950f01cb14ad47486dfcd2fdfb4be3ee7f36b - related: #1211266 - -* Tue Aug 11 2015 jchaloup - 1.1.0-0.5.gite44c8e6 -- Bump to upstream e44c8e6661c931f7fd434911b0d3bca140e1df3a - related: #1211266 - -* Mon Aug 10 2015 jchaloup - 1.1.0-0.4.git2bfa9a1 -- Bump to upstream 2bfa9a1f98147cfdc2e9f4cf50e2c430518d91eb - related: #1243827 - -* Thu Aug 06 2015 jchaloup - 1.1.0-0.3.git4c42e13 -- Bump to upstream 4c42e1302d3b351f3cb6074d32aa420bbd45e07d -- Change import path prefix to k8s.io/kubernetes - related: #1243827 - -* Wed Aug 05 2015 jchaloup - 1.1.0-0.2.git159ba48 -- Bump to upstream 159ba489329e9f6ce422541e13f97e1166090ec8 - related: #1243827 - -* Sat Aug 01 2015 jchaloup - 1.1.0-0.1.git6129d3d -- Bump to upstream 6129d3d4eb80714286650818081a64ce2699afed - related: #1243827 - -* Fri Jul 31 2015 jchaloup - 1.0.0-0.18.gitff058a1 -- Bump to upstream ff058a1afeb63474f7a35805941f3b07c27aae0f - related: #1243827 - -* Thu Jul 30 2015 jchaloup - 1.0.0-0.17.git769230e -- Bump to upstream 769230e735993bb0bf924279a40593c147c9a6ab - related: #1243827 - -* Wed Jul 29 2015 jchaloup - 1.0.0-0.16.gitdde7222 -- Bump to upstream dde72229dc9cbbdacfb2e44b22d9d5b357027020 - related: #1243827 - -* Tue Jul 28 2015 jchaloup - 1.0.0-0.15.gitc5bffaa -- Bump to upstream c5bffaaf3166513da6259c44a5d1ba8e86bea5ce - related: #1243827 - -* Sat Jul 25 2015 jchaloup - 1.0.0-0.14.git5bd82ff -- Bump to upstream 5bd82ffe6da8f4e72e71b362635e558bfc412106 - related: #1243827 - -* Fri Jul 24 2015 jchaloup - 1.0.0-0.13.git291acd1 -- Bump to upstream 291acd1a09ac836ec7524b060a19a6498d9878dd - related: #1243827 - -* Thu Jul 23 2015 jchaloup - 1.0.0-0.12.gitfbed349 -- Bump to upstream fbed3492bfa09e59b1c423fdd7c1ecad333a06ef - related: #1243827 - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.11.gitfbc85e9 -- Add runtime dependency of kubernetes-node on socat (so kubectl port-forward works on AH) - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.10.gitfbc85e9 -- Update the build script for go1.5 as well -- Bump to upstream fbc85e9838f25547be94fbffeeb92a756d908ca0 - related: #1243827 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.9.git2d88675 -- Bump to upstream 2d88675f2203d316d4bac312c7ccad12991b56c2 -- Change KUBE_ETCD_SERVERS to listen on 2379 ports instead of 4001 - resolves: #1243827 -- Add kubernetes-client to provide kubectl command - resolves: #1241469 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.8.gitb2dafda -- Fix dependency and tests for go-1.5 -- with_debug off as the builds ends with error "ELFRESERVE too small: ..." - -* Sat Jul 18 2015 Eric Paris - 1.0.0-0.7.gitb2dafda -- Update apiserver binary gid - -* Fri Jul 17 2015 jchaloup - 1.0.0-0.6.gitb2dafda -- Bump to upstream b2dafdaef5aceafad503ab56254b60f80da9e980 - related: #1211266 - -* Thu Jul 16 2015 jchaloup - 1.0.0-0.5.git596a8a4 -- Bump to upstream 596a8a40d12498b5335140f50753980bfaea4f6b - related: #1211266 - -* Wed Jul 15 2015 jchaloup - 1.0.0-0.4.git6ba532b -- Bump to upstream 6ba532b218cb5f5ea3f0e8dce5395182f388536c - related: #1211266 - -* Tue Jul 14 2015 jchaloup - 1.0.0-0.3.gitc616182 -- Bump to upstream c6161824db3784e6156131307a5e94647e5557fd - related: #1211266 - -* Mon Jul 13 2015 jchaloup - 1.0.0-0.2.git2c27b1f -- Bump to upstream 2c27b1fa64f4e70f04575d1b217494f49332390e - related: #1211266 - -* Sat Jul 11 2015 jchaloup - 1.0.0-0.1.git1b37059 -- Bump to upstream 1b370599ccf271741e657335c4943cb8c7dba28b - related: #1211266 - -* Fri Jul 10 2015 jchaloup - 0.21.1-0.2.gitccc4cfc -- Bump to upstream ccc4cfc7e11e0f127ac1cea045017dd799be3c63 - related: #1211266 - -* Thu Jul 09 2015 jchaloup - 0.21.1-0.1.git41f8907 -- Update generating of man pages from md (add genmanpages.sh) -- Bump to upstream 41f89075396329cd46c58495c7d3f7e13adcaa96 - related: #1211266 - -* Wed Jul 08 2015 jchaloup - 0.20.2-0.5.git77be29e -- Bump to upstream 77be29e3da71f0a136b6aa4048b2f0575c2598e4 - related: #1211266 - -* Tue Jul 07 2015 jchaloup - 0.20.2-0.4.git639a7da -- Bump to upstream 639a7dac50a331414cc6c47083323388da0d8756 - related: #1211266 - -* Mon Jul 06 2015 jchaloup - 0.20.2-0.3.gitbb6f2f7 -- Bump to upstream bb6f2f7ad90596d624d84cc691eec0f518e90cc8 - related: #1211266 - -* Fri Jul 03 2015 jchaloup - 0.20.2-0.2.git974377b -- Bump to upstream 974377b3064ac59b6e5694bfa568d67128026171 - related: #1211266 - -* Thu Jul 02 2015 jchaloup - 0.20.2-0.1.gitef41ceb -- Bump to upstream ef41ceb3e477ceada84c5522f429f02ab0f5948e - related: #1211266 - -* Tue Jun 30 2015 jchaloup - 0.20.0-0.3.git835eded -- Bump to upstream 835eded2943dfcf13a89518715e4be842a6a3ac0 -- Generate missing man pages - related: #1211266 - -* Mon Jun 29 2015 jchaloup - 0.20.0-0.2.git1c0b765 -- Bump to upstream 1c0b765df6dabfe9bd0e20489ed3bd18e6b3bda8 - Comment out missing man pages - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.20.0-0.1.git8ebd896 -- Bump to upstream 8ebd896351513d446d56bc5785c070d2909226a3 - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.19.3-0.6.git712f303 -- Bump to upstream 712f303350b35e70a573f3cb19193c8ec7ee7544 - related: #1211266 - -* Thu Jun 25 2015 jchaloup - 0.19.3-0.5.git2803b86 -- Bump to upstream 2803b86a42bf187afa816a7ce14fec754cc2af51 - related: #1211266 - -* Wed Jun 24 2015 Eric Paris - 0.19.3-0.4.git5b4dc4e -- Set CAP_NET_BIND_SERVICE on the kube-apiserver so it can use 443 - -* Wed Jun 24 2015 jchaloup - 0.19.3-0.3.git5b4dc4e -- Bump to upstream 5b4dc4edaa14e1ab4e3baa19df0388fa54dab344 - pkg/cloudprovider/* packages does not conform to golang language specification - related: #1211266 - -* Tue Jun 23 2015 jchaloup - 0.19.3-0.2.gita2ce3ea -- Bump to upstream a2ce3ea5293553b1fe0db3cbc6d53bdafe061d79 - related: #1211266 - -* Mon Jun 22 2015 jchaloup - 0.19.1-0.1.gitff0546d -- Bump to upstream ff0546da4fc23598de59db9f747c535545036463 - related: #1211266 - -* Fri Jun 19 2015 jchaloup - 0.19.0-0.7.gitb2e9fed -- Bump to upstream b2e9fed3490274509506285bdba309c50afb5c39 - related: #1211266 - -* Thu Jun 18 2015 jchaloup - 0.19.0-0.6.gitf660940 -- Bump to upstream f660940dceb3fe6ffb1b14ba495a47d91b5cd910 - related: #1211266 - -* Wed Jun 17 2015 jchaloup - 0.19.0-0.5.git43889c6 -- Bump to upstream 43889c612c4d396dcd8fbf3fbd217e106eaf5bce - related: #1211266 - -* Tue Jun 16 2015 jchaloup - 0.19.0-0.4.gita8269e3 -- Bump to upstream a8269e38c9e2bf81ba18cd6420e2309745d5b0b9 - related: #1211266 - -* Sun Jun 14 2015 jchaloup - 0.19.0-0.3.git5e5c1d1 -- Bump to upstream 5e5c1d10976f2f26d356ca60ef7d0d715c9f00a2 - related: #1211266 - -* Fri Jun 12 2015 jchaloup - 0.19.0-0.2.git0ca96c3 -- Bump to upstream 0ca96c3ac8b47114169f3b716ae4521ed8c7657c - related: #1211266 - -* Thu Jun 11 2015 jchaloup - 0.19.0-0.1.git5a02fc0 -- Bump to upstream 5a02fc07d8a943132b9e68fe7169778253318487 - related: #1211266 - -* Wed Jun 10 2015 jchaloup - 0.18.2-0.3.git0dfb681 -- Bump to upstream 0dfb681ba5d5dba535895ace9d650667904b5df7 - related: #1211266 - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.2.gitb68e08f -- golang-cover is not needed - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.1.gitb68e08f -- Bump to upstream b68e08f55f5ae566c4ea3905d0993a8735d6d34f - related: #1211266 - -* Sat Jun 06 2015 jchaloup - 0.18.1-0.3.git0f1c4c2 -- Bump to upstream 0f1c4c25c344f70c3592040b2ef092ccdce0244f - related: #1211266 - -* Fri Jun 05 2015 jchaloup - 0.18.1-0.2.git7309e1f -- Bump to upstream 7309e1f707ea5dd08c51f803037d7d22c20e2b92 - related: #1211266 - -* Thu Jun 04 2015 jchaloup - 0.18.1-0.1.gita161edb -- Bump to upstream a161edb3960c01ff6e14813858c2eeb85910009b - related: #1211266 - -* Wed Jun 03 2015 jchaloup - 0.18.0-0.3.gitb5a91bd -- Bump to upstream b5a91bda103ed2459f933959241a2b57331747ba -- Don't run %%check section (kept only for local run). Tests are now handled via CI. - related: #1211266 - -* Tue Jun 02 2015 jchaloup - 0.18.0-0.2.git5520386 -- Bump to upstream 5520386b180d3ddc4fa7b7dfe6f52642cc0c25f3 - related: #1211266 - -* Mon Jun 01 2015 jchaloup - 0.18.0-0.1.git0bb78fe -- Bump to upstream 0bb78fe6c53ce38198cc3805c78308cdd4805ac8 - related: #1211266 - -* Fri May 29 2015 jchaloup - 0.17.1-6 -- Bump to upstream ed4898d98c46869e9cbdb44186dfdeda9ff80cc2 - related: #1211266 - -* Thu May 28 2015 jchaloup - 0.17.1-5 -- Bump to upstream 6fa2777e26559fc008eacac83eb165d25bd9a7de - related: #1211266 - -* Tue May 26 2015 jchaloup - 0.17.1-4 -- Bump to upstream 01fcb58673001e56c69e128ab57e0c3f701aeea5 - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-3 -- Decompose package into master and node subpackage. - Thanks to Avesh for testing and patience. - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-2 -- Bump to upstream cf7b0bdc2a41d38613ac7f8eeea91cae23553fa2 - related: #1211266 - -* Fri May 22 2015 jchaloup - 0.17.1-1 -- Bump to upstream d9d12fd3f7036c92606fc3ba9046b365212fcd70 - related: #1211266 - -* Wed May 20 2015 jchaloup - 0.17.0-12 -- Bump to upstream a76bdd97100c66a46e2b49288540dcec58a954c4 - related: #1211266 - -* Tue May 19 2015 jchaloup - 0.17.0-11 -- Bump to upstream 10339d72b66a31592f73797a9983e7c207481b22 - related: #1211266 - -* Mon May 18 2015 jchaloup - 0.17.0-10 -- Bump to upstream efb42b302d871f7217394205d84e5ae82335d786 - related: #1211266 - -* Sat May 16 2015 jchaloup - 0.17.0-9 -- Bump to upstream d51e131726b925e7088b90915e99042459b628e0 - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-8 -- Bump to upstream 1ee33ac481a14db7b90e3bbac8cec4ceea822bfb - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-7 -- Bump to upstream d3c6fb0d6a13c0177dcd67556d72963c959234ea - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-6 -- Bump to upstream f57f31783089f41c0bdca8cb87a1001ca94e1a45 - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-5 -- Bump to upstream c90d381d0d5cf8ab7b8412106f5a6991d7e13c7d - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-4 -- Bump to upstream 5010b2dde0f9b9eb820fe047e3b34bc9fa6324de -- Add debug info - related: #1211266 - -* Wed May 13 2015 jchaloup - 0.17.0-3 -- Bump to upstream ec19d41b63f5fe7b2c939e7738a41c0fbe65d796 - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-2 -- Provide /usr/bin/kube-version-change binary - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-1 -- Bump to upstream 962f10ee580eea30e5f4ea725c4e9e3743408a58 - related: #1211266 - -* Mon May 11 2015 jchaloup - 0.16.2-7 -- Bump to upstream 63182318c5876b94ac9b264d1224813b2b2ab541 - related: #1211266 - -* Fri May 08 2015 jchaloup - 0.16.2-6 -- Bump to upstream d136728df7e2694df9e082902f6239c11b0f2b00 -- Add NetworkManager as dependency for /etc/resolv.conf - related: #1211266 - -* Thu May 07 2015 jchaloup - 0.16.2-5 -- Bump to upstream ca0f678b9a0a6dc795ac7a595350d0dbe9d0ac3b - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-4 -- Add docs to kubernetes-unit-test - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-3 -- Bump to upstream 3a24c0e898cb3060d7905af6df275a3be562451d - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-2 -- Add api and README.md to kubernetes-unit-test - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-1 -- Bump to upstream 72048a824ca16c3921354197953fabecede5af47 - related: #1211266 - -* Mon May 04 2015 jchaloup - 0.16.1-2 -- Bump to upstream 1dcd80cdf3f00409d55cea1ef0e7faef0ae1d656 - related: #1211266 - -* Sun May 03 2015 jchaloup - 0.16.1-1 -- Bump to upstream 86751e8c90a3c0e852afb78d26cb6ba8cdbc37ba - related: #1211266 - -* Fri May 01 2015 jchaloup - 0.16.0-2 -- Bump to upstream 72708d74b9801989ddbdc8403fc5ba4aafb7c1ef - related: #1211266 - -* Wed Apr 29 2015 jchaloup - 0.16.0-1 -- Bump to upstream 7dcce2eeb7f28643d599c8b6a244523670d17c93 - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-10 -- Add unit-test subpackage - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-9 -- Bump to upstream 99fc906f78cd2bcb08536c262867fa6803f816d5 - related: #1211266 - -* Mon Apr 27 2015 jchaloup - 0.15.0-8 -- Bump to upstream 051dd96c542799dfab39184d2a7c8bacf9e88d85 - related: #1211266 - -* Fri Apr 24 2015 jchaloup - 0.15.0-7 -- Bump to upstream 9f753c2592481a226d72cea91648db8fb97f0da8 - related: #1211266 - -* Thu Apr 23 2015 jchaloup - 0.15.0-6 -- Bump to upstream cf824ae5e07965ba0b4b15ee88e08e2679f36978 - related: #1211266 - -* Tue Apr 21 2015 jchaloup - 0.15.0-5 -- Bump to upstream 21788d8e6606038a0a465c97f5240b4e66970fbb - related: #1211266 - -* Mon Apr 20 2015 jchaloup - 0.15.0-4 -- Bump to upstream eb1ea269954da2ce557f3305fa88d42e3ade7975 - related: #1211266 - -* Fri Apr 17 2015 jchaloup - 0.15.0-3 -- Obsolete cadvisor as it is integrated in kubelet - related: #1211266 - -* Wed Apr 15 2015 jchaloup - 0.15.0-0.2.git0ea87e4 -- Bump to upstream 0ea87e486407298dc1e3126c47f4076b9022fb09 - related: #1211266 - -* Tue Apr 14 2015 jchaloup - 0.15.0-0.1.gitd02139d -- Bump to upstream d02139d2b454ecc5730cc535d415c1963a7fb2aa - related: #1211266 - -* Sun Apr 12 2015 jchaloup - 0.14.2-0.2.gitd577db9 -- Bump to upstream d577db99873cbf04b8e17b78f17ec8f3a27eca30 - -* Wed Apr 08 2015 jchaloup - 0.14.2-0.1.git2719194 -- Bump to upstream 2719194154ffd38fd1613699a9dd10a00909957e - Use etcd-2.0.8 and higher - -* Tue Apr 07 2015 jchaloup - 0.14.1-0.2.gitd2f4734 -- Bump to upstream d2f473465738e6b6f7935aa704319577f5e890ba - -* Thu Apr 02 2015 jchaloup - 0.14.1-0.1.gita94ffc8 -- Bump to upstream a94ffc8625beb5e2a39edb01edc839cb8e59c444 - -* Wed Apr 01 2015 jchaloup - 0.14.0-0.2.git8168344 -- Bump to upstream 81683441b96537d4b51d146e39929b7003401cd5 - -* Tue Mar 31 2015 jchaloup - 0.14.0-0.1.git9ed8761 -- Bump to upstream 9ed87612d07f75143ac96ad90ff1ff68f13a2c67 -- Remove [B]R from devel branch until the package has stable API - -* Mon Mar 30 2015 jchaloup - 0.13.2-0.6.git8a7a127 -- Bump to upstream 8a7a127352263439e22253a58628d37a93fdaeb2 - -* Fri Mar 27 2015 jchaloup - 0.13.2-0.5.git8d94c43 -- Bump to upstream 8d94c43e705824f23791b66ad5de4ea095d5bb32 - resolves: #1205362 - -* Wed Mar 25 2015 jchaloup - 0.13.2-0.4.git455fe82 -- Bump to upstream 455fe8235be8fd9ba0ce21bf4f50a69d42e18693 - -* Mon Mar 23 2015 jchaloup - 0.13.2-0.3.gitef75888 -- Remove runtime dependency on etcd - resolves: #1202923 - -* Sun Mar 22 2015 jchaloup - 0.13.2-0.2.gitef75888 -- Bump to upstream ef758881d108bb53a128126c503689104d17f477 - -* Fri Mar 20 2015 jchaloup - 0.13.2-0.1.gita8f2cee -- Bump to upstream a8f2cee8c5418676ee33a311fad57d6821d3d29a - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.9.git53b25a7 -- Bump to upstream 53b25a7890e31bdec6f2a95b32200d6cc27ae2ca - fix kube-proxy.service and kubelet - resolves: #1200919 #1200924 - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.8.git39dceb1 -- Bump to upstream 39dceb13a511a83963a766a439cb386d10764310 - -* Thu Mar 12 2015 Eric Paris - 0.12.0-0.7.gita3fd0a9 -- Move from /etc/tmpfiles.d to %%{_tmpfilesdir} - resolves: #1200969 - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.6.gita3fd0a9 -- Place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /etc/tmpfiles.d/kubernetes.conf - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.5.gita3fd0a9 -- Bump to upstream a3fd0a9fd516bb6033f32196ae97aaecf8c096b1 - -* Tue Mar 10 2015 jchaloup - 0.12.0-0.4.gita4d871a -- Bump to upstream a4d871a10086436557f804930812f2566c9d4d39 - -* Fri Mar 06 2015 jchaloup - 0.12.0-0.3.git2700871 -- Bump to upstream 2700871b049d5498167671cea6de8317099ad406 - -* Thu Mar 05 2015 jchaloup - 0.12.0-0.2.git8b627f5 -- Bump to upstream 8b627f516fd3e4f62da90d401ceb3d38de6f8077 - -* Tue Mar 03 2015 jchaloup - 0.12.0-0.1.gitecca426 -- Bump to upstream ecca42643b91a7117de8cd385b64e6bafecefd65 - -* Mon Mar 02 2015 jchaloup - 0.11.0-0.5.git6c5b390 -- Bump to upstream 6c5b390160856cd8334043344ef6e08568b0a5c9 - -* Sat Feb 28 2015 jchaloup - 0.11.0-0.4.git0fec31a -- Bump to upstream 0fec31a11edff14715a1efb27f77262a7c3770f4 - -* Fri Feb 27 2015 jchaloup - 0.11.0-0.3.git08402d7 -- Bump to upstream 08402d798c8f207a2e093de5a670c5e8e673e2de - -* Wed Feb 25 2015 jchaloup - 0.11.0-0.2.git86434b4 -- Bump to upstream 86434b4038ab87ac40219562ad420c3cc58c7c6b - -* Tue Feb 24 2015 jchaloup - 0.11.0-0.1.git754a2a8 -- Bump to upstream 754a2a8305c812121c3845d8293efdd819b6a704 - turn off integration tests until "FAILED: unexpected endpoints: - timed out waiting for the condition" problem is resolved - Adding back devel subpackage ([B]R list outdated) - -* Fri Feb 20 2015 jchaloup - 0.10.1-0.3.git4c87805 -- Bump to upstream 4c87805870b1b22e463c4bd711238ef68c77f0af - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.2.git6f84bda -- Bump to upstream 6f84bdaba853872dbac69c84d3ab4b6964e85d8c - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.1.git7d6130e -- Bump to upstream 7d6130edcdfabd7dd2e6a06fdc8fe5e333f07f5c - -* Sat Feb 07 2015 jchaloup - 0.9.1-0.7.gitc9c98ab -- Bump to upstream c9c98ab19eaa6f0b2ea17152c9a455338853f4d0 - Since some dependencies are broken, we can not build Kubernetes from Fedora deps. - Switching to vendored source codes until Go draft is resolved - -* Wed Feb 04 2015 jchaloup - 0.9.1-0.6.git7f5ed54 -- Bump to upstream 7f5ed541f794348ae6279414cf70523a4d5133cc - -* Tue Feb 03 2015 jchaloup - 0.9.1-0.5.git2ac6bbb -- Bump to upstream 2ac6bbb7eba7e69eac71bd9acd192cda97e67641 - -* Mon Feb 02 2015 jchaloup - 0.9.1-0.4.gite335e2d -- Bump to upstream e335e2d3e26a9a58d3b189ccf41ceb3770d1bfa9 - -* Fri Jan 30 2015 jchaloup - 0.9.1-0.3.git55793ac -- Bump to upstream 55793ac2066745f7243c666316499e1a8cf074f0 - -* Thu Jan 29 2015 jchaloup - 0.9.1-0.2.gitca6de16 -- Bump to upstream ca6de16df7762d4fc9b4ad44baa78d22e3f30742 - -* Tue Jan 27 2015 jchaloup - 0.9.1-0.1.git3623a01 -- Bump to upstream 3623a01bf0e90de6345147eef62894057fe04b29 -- update tests for etcd-2.0 - -* Thu Jan 22 2015 jchaloup - 0.8.2-571.gitb2f287c -+- Bump to upstream b2f287c259d856f4c08052a51cd7772c563aff77 - -* Thu Jan 22 2015 Eric Paris - 0.8.2-570.gitb2f287c -- patch kubelet service file to use docker.service not docker.socket - -* Wed Jan 21 2015 jchaloup - 0.8.2-0.1.git5b04640 -- Bump to upstream 5b046406a957a1e7eda7c0c86dd7a89e9c94fc5f - -* Sun Jan 18 2015 jchaloup - 0.8.0-126.0.git68298f0 -- Add some missing dependencies -- Add devel subpackage - -* Fri Jan 09 2015 Eric Paris - 0.8.0-125.0.git68298f0 -- Bump to upstream 68298f08a4980f95dfbf7b9f58bfec1808fb2670 - -* Tue Dec 16 2014 Eric Paris - 0.7.0-18.0.git52e165a -- Bump to upstream 52e165a4fd720d1703ebc31bd6660e01334227b8 - -* Mon Dec 15 2014 Eric Paris - 0.6-297.0.git5ef34bf -- Bump to upstream 5ef34bf52311901b997119cc49eff944c610081b - -* Wed Dec 03 2014 Eric Paris -- Replace patch to use old googlecode/go.net/ with BuildRequires on golang.org/x/net/ - -* Tue Dec 02 2014 Eric Paris - 0.6-4.0.git993ef88 -- Bump to upstream 993ef88eec9012b221f79abe8f2932ee97997d28 - -* Mon Dec 01 2014 Eric Paris - 0.5-235.0.git6aabd98 -- Bump to upstream 6aabd9804fb75764b70e9172774002d4febcae34 - -* Wed Nov 26 2014 Eric Paris - 0.5-210.0.gitff1e9f4 -- Bump to upstream ff1e9f4c191342c24974c030e82aceaff8ea9c24 - -* Tue Nov 25 2014 Eric Paris - 0.5-174.0.git64e07f7 -- Bump to upstream 64e07f7fe03d8692c685b09770c45f364967a119 - -* Mon Nov 24 2014 Eric Paris - 0.5-125.0.git162e498 -- Bump to upstream 162e4983b947d2f6f858ca7607869d70627f5dff - -* Fri Nov 21 2014 Eric Paris - 0.5-105.0.git3f74a1e -- Bump to upstream 3f74a1e9f56b3c3502762930c0c551ccab0557ea - -* Thu Nov 20 2014 Eric Paris - 0.5-65.0.gitc6158b8 -- Bump to upstream c6158b8aa9c40fbf1732650a8611429536466b21 -- include go-restful build requirement - -* Tue Nov 18 2014 Eric Paris - 0.5-14.0.gitdf0981b -- Bump to upstream df0981bc01c5782ad30fc45cb6f510f365737fc1 - -* Tue Nov 11 2014 Eric Paris - 0.4-680.0.git30fcf24 -- Bump to upstream 30fcf241312f6d0767c7d9305b4c462f1655f790 - -* Mon Nov 10 2014 Eric Paris - 0.4-633.0.git6c70227 -- Bump to upstream 6c70227a2eccc23966d32ea6d558ee05df46e400 - -* Fri Nov 07 2014 Eric Paris - 0.4-595.0.gitb695650 -- Bump to upstream b6956506fa2682afa93770a58ea8c7ba4b4caec1 - -* Thu Nov 06 2014 Eric Paris - 0.4-567.0.git3b1ef73 -- Bump to upstream 3b1ef739d1fb32a822a22216fb965e22cdd28e7f - -* Thu Nov 06 2014 Eric Paris - 0.4-561.0.git06633bf -- Bump to upstream 06633bf4cdc1ebd4fc848f85025e14a794b017b4 -- Make spec file more RHEL/CentOS friendly - -* Tue Nov 04 2014 Eric Paris - 0.4-0.0.git4452163 -- rebase to v0.4 -- include man pages - -* Tue Oct 14 2014 jchaloup - 0.3-0.3.git98ac8e1 -- create /var/lib/kubelet -- Use bash completions from upstream -- Bump to upstream 98ac8e178fcf1627399d659889bcb5fe25abdca4 -- all by Eric Paris - -* Mon Sep 29 2014 Jan Chaloupka - 0.3-0.2.git88fdb65 -- replace * with coresponding files -- remove dependency on gcc - -* Wed Sep 24 2014 Eric Paris - 0.1-0.4.git6ebe69a -- prefer autosetup instead of setup (revert setup change in 0-0.3.git) -https://fedoraproject.org/wiki/Autosetup_packaging_draft -- revert version number to 0.1 - -* Mon Sep 08 2014 Lokesh Mandvekar - 0-0.3.git6ebe69a -- gopath defined in golang package already -- package owns /etc/kubernetes -- bash dependency implicit -- keep buildroot/$RPM_BUILD_ROOT macros consistent -- replace with macros wherever possible -- set version, release and source tarball prep as per -https://fedoraproject.org/wiki/Packaging:SourceURL#Github - -* Mon Sep 08 2014 Eric Paris -- make services restart automatically on error - -* Sat Sep 06 2014 Eric Paris -- update to upstream -- redo build to use project scripts -- use project scripts in %%check -- rework deletion of third_party packages to easily detect changes -- run apiserver and controller-manager as non-root - -* Mon Aug 11 2014 Adam Miller -- update to upstream -- decouple the rest of third_party - -* Thu Aug 7 2014 Eric Paris -- update to head -- update package to include config files - -* Wed Jul 16 2014 Colin Walters -- Initial package diff --git a/kubernetes/kubernetes-1.21.8/centos/kubernetes.spec.orig b/kubernetes/kubernetes-1.21.8/centos/kubernetes.spec.orig deleted file mode 100644 index fd43ef4cd..000000000 --- a/kubernetes/kubernetes-1.21.8/centos/kubernetes.spec.orig +++ /dev/null @@ -1,2282 +0,0 @@ -%if 0%{?fedora} -%global with_devel 1 -%global with_bundled 0 -%global with_debug 1 -%else -%global with_devel 0 -%global with_bundled 1 -%global with_debug 0 -%endif - -%if 0%{?with_debug} -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%else -%global debug_package %{nil} -%endif - -%global provider github -%global provider_tld com -%global project kubernetes -%global repo kubernetes -# https://github.com/kubernetes/kubernetes - -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global import_path k8s.io/kubernetes -%global commit fc32d2f3698e36b93322a3465f63a14e9f0eaead -%global shortcommit %(c=%{commit}; echo ${c:0:7}) - -%global con_provider github -%global con_provider_tld com -%global con_project kubernetes -%global con_repo contrib -# https://github.com/kubernetes/contrib -%global con_provider_prefix %{con_provider}.%{con_provider_tld}/%{con_project}/%{con_repo} -%global con_commit 5b445f1c53aa8d6457523526340077935f62e691 -%global con_shortcommit %(c=%{con_commit}; echo ${c:0:7}) - -%global kube_version 1.10.0 -%global kube_git_version v%{kube_version} - -# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work -%global _buildshell /bin/bash -%global _checkshell /bin/bash - -############################################## -Name: kubernetes -Version: %{kube_version} -Release: 1%{?dist} -Summary: Container cluster management -License: ASL 2.0 -URL: https://%{import_path} -ExclusiveArch: x86_64 aarch64 ppc64le s390x -Source0: https://%{provider_prefix}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz -Source1: https://%{con_provider_prefix}/archive/%{con_commit}/%{con_repo}-%{con_shortcommit}.tar.gz -Source3: kubernetes-accounting.conf -Source4: kubeadm.conf - -Source33: genmanpages.sh - -Patch3: build-with-debug-info.patch -#Patch4: make-test-cmd-run-over-hyperkube-based-kubectl.patch -#Patch5: make-e2e_node-run-over-distro-bins.patch - -# ppc64le -Patch16: fix-support-for-ppc64le.patch - -Patch20: use_go_build-is-not-fully-propagated-so-make-it-fixe.patch - -# It obsoletes cadvisor but needs its source code (literally integrated) -Obsoletes: cadvisor - -# kubernetes is decomposed into master and node subpackages -# require both of them for updates -Requires: kubernetes-master = %{version}-%{release} -Requires: kubernetes-node = %{version}-%{release} - -%description -%{summary} - -%if 0%{?with_devel} -%package devel -Summary: %{summary} -BuildArch: noarch - -Provides: golang(%{import_path}/cmd/genutils) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubectl/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/normalization) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/install) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/conversion-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/deepcopy-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/generator) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/go-to-protobuf/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/import-boss/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/namer) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/parser) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/set-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/types) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/install) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/pkg/federation-controller/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/admission) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/annotations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/endpoints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta/metatypes) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest/resttest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing/compat) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery/registered) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v0) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v2alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/audit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator/bearertoken) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/union) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/handlers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/chaosclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/leaderelection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/record) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/restclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/testing/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/transport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/dynamic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/adapters/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/auth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient/simple) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/azure) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/cloudstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/gce) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/mesos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/openstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/ovirt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/rackspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/vsphere) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/daemon) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/disruption) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework/informers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector/metaonly) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podgc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/route) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/statusupdater) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion/queryparams) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/dns) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fieldpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fields) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/openapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/healthz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/httplog) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/hyperkube) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/rollout) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/set) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/templates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/editor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/jsonmerge) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/metricsutil) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/client) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cm) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/custommetrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockershim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockertools) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/envvars) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/events) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/eviction) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/images) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/kuberuntime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/leaky) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hairpin) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/kubenet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/mock_network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pleg) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/results) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/qos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/remote) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt/mock_os) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rktshim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/status) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/format) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/ioutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/queue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/sliceutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubemark) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master/ports) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/http) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/tcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/healthcheck) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/userspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/evaluator/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/subjectaccessreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/cachesize) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/componentstatus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/experimental/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rangeallocation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/registrytest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/tokenreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/recognizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/streaming) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/versioning) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontext) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/seccomp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/selection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ssh) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/etcdtest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing/testingcert) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend/factory) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ui) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/async) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/bandwidth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chmod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chown) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/clock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/codeinspector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/configz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crlf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crypto) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/dbus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/diff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/ebtables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/env) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flowcontrol) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flushwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/framer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap/exponentialbackoff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/hash) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/homedir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream/spdy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/integer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/interrupt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/intstr) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/io) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/jsonpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/keymutex) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/limitwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/logs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/maps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/mount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/oom) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/parsers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/procfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/resourcecontainer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rlimit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/slice) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strategicpatch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strings) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/system) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/term) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/threading) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/uuid) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation/field) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wait) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/workqueue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wsstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/verflag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/aws_ebs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_dd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_file) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cephfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cinder) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/downwardapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/empty_dir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/fc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flexvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flocker) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/gce_pd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/git_repo) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/glusterfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/host_path) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/iscsi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/nfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/quobyte) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/rbd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/nestedpendingoperations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/operationexecutor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/volumehelper) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/vsphere_volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/versioned) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/admit) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/alwayspullimages) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/antiaffinity) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/deny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/exec) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/initialresources) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/limitranger) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/autoprovision) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/exists) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/persistentvolume/label) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/securitycontext/scdeny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/storageclass/default) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/allow) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/keystone) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/passwordfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/basicauth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/union) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/x509) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokenfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokentest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/predicates) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities/util) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider/defaults) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/factory) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/schedulercache) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/webhook) = %{version}-%{release} - -%description devel -Libraries for building packages importing k8s.io/kubernetes. -Currently, the devel is not suitable for development. -It is meant only as a buildtime dependency for other projects. - -This package contains library source intended for -building other packages which use %{project}/%{repo}. -%endif - -############################################## -%package unit-test -Summary: %{summary} - for running unit tests - -# below Rs used for testing -Requires: golang >= 1.2-7 -Requires: etcd >= 2.0.9 -Requires: hostname -Requires: rsync -Requires: NetworkManager - -%description unit-test -%{summary} - for running unit tests - -############################################## -%package master -Summary: Kubernetes services for master host - -BuildRequires: golang >= 1.2-7 -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: kubernetes-client = %{version}-%{release} - -# if node is installed with node, version and release must be the same -Conflicts: kubernetes-node < %{version}-%{release} -Conflicts: kubernetes-node > %{version}-%{release} - -%description master -Kubernetes services for master host - -############################################## -%package node -Summary: Kubernetes services for node host - -%if 0%{?fedora} >= 27 -Requires: (docker or docker-ce) -Suggests: docker -%else -Requires: docker -%endif -Requires: conntrack-tools - -BuildRequires: golang >= 1.2-7 -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: socat -Requires: kubernetes-client = %{version}-%{release} - -# if master is installed with node, version and release must be the same -Conflicts: kubernetes-master < %{version}-%{release} -Conflicts: kubernetes-master > %{version}-%{release} - -%description node -Kubernetes services for node host - -############################################## -%package kubeadm -Summary: Kubernetes tool for standing up clusters -Requires: kubernetes-node = %{version}-%{release} -Requires: containernetworking-cni - -%description kubeadm -Kubernetes tool for standing up clusters - -############################################## -%package client -Summary: Kubernetes client tools - -BuildRequires: golang >= 1.2-7 -BuildRequires: go-bindata - -%description client -Kubernetes client tools like kubectl - -############################################## - -%prep -%setup -q -n %{con_repo}-%{con_commit} -T -b 1 -%setup -q -n %{repo}-%{commit} - -%if 0%{?with_debug} -%patch3 -p1 -%endif - -%patch20 -p1 - -# copy contrib folder -mkdir contrib -cp -r ../%{con_repo}-%{con_commit}/init contrib/. - -#src/k8s.io/kubernetes/pkg/util/certificates -# Patch the code to remove eliptic.P224 support -for dir in vendor/github.com/google/certificate-transparency/go/x509 pkg/util/certificates; do - if [ -d "${dir}" ]; then - pushd ${dir} - sed -i "/^[^=]*$/ s/oidNamedCurveP224/oidNamedCurveP256/g" *.go - sed -i "/^[^=]*$/ s/elliptic\.P224/elliptic.P256/g" *.go - popd - fi -done - -# Move all the code under src/k8s.io/kubernetes directory -mkdir -p src/k8s.io/kubernetes -mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. - -# Patch tests to be run over distro bins -#patch4 -p1 -#patch5 -p1 - -%ifarch ppc64le -%patch16 -p1 -%endif - -############### - -%build -pushd src/k8s.io/kubernetes/ -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=%{commit} -export KUBE_GIT_VERSION=%{kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace - -# https://bugzilla.redhat.com/show_bug.cgi?id=1392922#c1 -%ifarch ppc64le -export GOLDFLAGS='-linkmode=external' -%endif -make WHAT="--use_go_build cmd/hyperkube cmd/kube-apiserver cmd/kubeadm" - -# convert md to man -./hack/generate-docs.sh || true -pushd docs -pushd admin -cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. -popd -cp %{SOURCE33} genmanpages.sh -bash genmanpages.sh -popd -popd - -%install -pushd src/k8s.io/kubernetes/ -. hack/lib/init.sh -kube::golang::setup_env - -%ifarch ppc64le -output_path="_output/local/go/bin" -%else -output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" -%endif - -install -m 755 -d %{buildroot}%{_bindir} - -echo "+++ INSTALLING hyperkube" -install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/hyperkube - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kubeadm" -install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubeadm -install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d -install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE4} - -binaries=(kube-controller-manager kube-scheduler kube-proxy kubelet kubectl) -for bin in "${binaries[@]}"; do - echo "+++ HARDLINKING ${bin} to hyperkube" - ln %{buildroot}%{_bindir}/hyperkube %{buildroot}%{_bindir}/${bin} -done - -# install the bash completion -install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/ -%{buildroot}%{_bindir}/kubectl completion bash > %{buildroot}%{_datadir}/bash-completion/completions/kubectl - -# install config files -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name} -install -m 644 -t %{buildroot}%{_sysconfdir}/%{name} contrib/init/systemd/environ/* - -# install service files -install -d -m 0755 %{buildroot}%{_unitdir} -install -m 0644 -t %{buildroot}%{_unitdir} contrib/init/systemd/*.service - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 -rm %{buildroot}%{_mandir}/man1/cloud-controller-manager.* -# from k8s tarball copied docs/man/man1/*.1 - -# install the place the kubelet defaults to put volumes -install -d %{buildroot}%{_sharedstatedir}/kubelet - -# place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /usr/lib/tmpfiles.d/kubernetes.conf -install -d -m 0755 %{buildroot}%{_tmpfilesdir} -install -p -m 0644 -t %{buildroot}/%{_tmpfilesdir} contrib/init/systemd/tmpfiles.d/kubernetes.conf -mkdir -p %{buildroot}/run -install -d -m 0755 %{buildroot}/run/%{name}/ - -# enable CPU and Memory accounting -install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system.conf.d -install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system.conf.d %{SOURCE3} - -# source codes for building projects -%if 0%{?with_devel} -install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ -echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list -# find all *.go but no *_test.go files and generate devel.file-list -for file in $(find . -iname "*.go" \! -iname "*_test.go") ; do - echo "%%dir %%{gopath}/src/%%{import_path}/$(dirname $file)" >> devel.file-list - install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$(dirname $file) - cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file - echo "%%{gopath}/src/%%{import_path}/$file" >> devel.file-list -done -%endif - -%if 0%{?with_devel} -sort -u -o devel.file-list devel.file-list -%endif - -popd - -%if 0%{?with_devel} -mv src/k8s.io/kubernetes/devel.file-list . -%endif - -mv src/k8s.io/kubernetes/*.md . -mv src/k8s.io/kubernetes/LICENSE . - - -# place files for unit-test rpm -install -d -m 0755 %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -# basically, everything from the root directory is needed -# unit-tests needs source code -# integration tests needs docs and other files -# test-cmd.sh atm needs cluster, examples and other -cp -a src %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -rm -rf %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/_output -cp -a *.md %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/ - -%check -# Fedora, RHEL7 and CentOS are tested via unit-test subpackage -if [ 1 != 1 ]; then -echo "******Testing the commands*****" -hack/test-cmd.sh -echo "******Benchmarking kube********" -hack/benchmark-go.sh - -# In Fedora 20 and RHEL7 the go cover tools isn't available correctly -%if 0%{?fedora} >= 21 -echo "******Testing the go code******" -hack/test-go.sh -echo "******Testing integration******" -hack/test-integration.sh --use_go_build -%endif -fi - -############################################## -%files -# empty as it depends on master and node - -############################################## -%files master -%license LICENSE -%doc *.md -%{_mandir}/man1/kube-apiserver.1* -%{_mandir}/man1/kube-controller-manager.1* -%{_mandir}/man1/kube-scheduler.1* -%attr(754, -, kube) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver -%{_bindir}/kube-controller-manager -%{_bindir}/kube-scheduler -%{_bindir}/hyperkube -%{_unitdir}/kube-apiserver.service -%{_unitdir}/kube-controller-manager.service -%{_unitdir}/kube-scheduler.service -%dir %{_sysconfdir}/%{name} -%config(noreplace) %{_sysconfdir}/%{name}/apiserver -%config(noreplace) %{_sysconfdir}/%{name}/scheduler -%config(noreplace) %{_sysconfdir}/%{name}/config -%config(noreplace) %{_sysconfdir}/%{name}/controller-manager -%{_tmpfilesdir}/kubernetes.conf -%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} - -############################################## -%files node -%license LICENSE -%doc *.md -%{_mandir}/man1/kubelet.1* -%{_mandir}/man1/kube-proxy.1* -%{_bindir}/kubelet -%{_bindir}/kube-proxy -%{_bindir}/hyperkube -%{_unitdir}/kube-proxy.service -%{_unitdir}/kubelet.service -%dir %{_sharedstatedir}/kubelet -%dir %{_sysconfdir}/%{name} -%config(noreplace) %{_sysconfdir}/%{name}/config -%config(noreplace) %{_sysconfdir}/%{name}/kubelet -%config(noreplace) %{_sysconfdir}/%{name}/proxy -%config(noreplace) %{_sysconfdir}/systemd/system.conf.d/kubernetes-accounting.conf -%{_tmpfilesdir}/kubernetes.conf -%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} - -############################################## -%files kubeadm -%license LICENSE -%doc *.md -%{_mandir}/man1/kubeadm.1* -%{_mandir}/man1/kubeadm-* -%{_bindir}/kubeadm -%dir %{_sysconfdir}/systemd/system/kubelet.service.d -%config(noreplace) %{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf - -############################################## -%files client -%license LICENSE -%doc *.md -%{_mandir}/man1/kubectl.1* -%{_mandir}/man1/kubectl-* -%{_bindir}/kubectl -%{_bindir}/hyperkube -%{_datadir}/bash-completion/completions/kubectl - -############################################## -%files unit-test -%{_sharedstatedir}/kubernetes-unit-test/ - -%if 0%{?with_devel} -%files devel -f devel.file-list -%doc *.md -%dir %{gopath}/src/k8s.io -%endif - -############################################## - -%pre master -getent group kube >/dev/null || groupadd -r kube -getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \ - -c "Kubernetes user" kube - -%post master -%systemd_post kube-apiserver kube-scheduler kube-controller-manager - -%preun master -%systemd_preun kube-apiserver kube-scheduler kube-controller-manager - -%postun master -%systemd_postun - - -%pre node -getent group kube >/dev/null || groupadd -r kube -getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \ - -c "Kubernetes user" kube - -%post node -%systemd_post kubelet kube-proxy -# If accounting is not currently enabled systemd reexec -if [[ `systemctl show docker kubelet | grep -q -e CPUAccounting=no -e MemoryAccounting=no; echo $?` -eq 0 ]]; then - systemctl daemon-reexec -fi - -%preun node -%systemd_preun kubelet kube-proxy - -%postun node -%systemd_postun - -############################################ -%changelog -* Tue Mar 27 2018 Spyros Trigazis - 1.10.0-1 -- Bump to upstream v1.10.0 - -* Thu Mar 22 2018 Spyros Trigazis - 1.9.6-1 -- Bump to upstream v1.9.6 - -* Tue Mar 20 2018 Jan Chaloupka - 1.9.5-1 -- Bump to upstream v1.9.5 - resolves: #1554420 - -* Sun Feb 11 2018 Spyros Trigazis - 1.9.3-1 -- Bump to upstream v1.9.3 - -* Fri Feb 09 2018 Jan Chaloupka - 1.9.1-5 -- Add --fail-swap-on=false flag to the /etc/kubernetes/kubelet - resolves: #1542476 - -* Thu Feb 08 2018 Igor Gnatenko - 1.9.1-4 -- Escape macro in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 1.9.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Jan 15 2018 Jan Chaloupka - 1.9.1-2 -- If docker is not available, try docker-ce instead (use boolean dependencies) - resolves: #1534508 - -* Fri Jan 12 2018 Spyros Trigazis - 1.9.1-1 -- Update to upstream v1.9.1 - resolves #1533794 - -* Tue Oct 24 2017 Jan Chaloupka - 1.8.1-1 -- Update to upstream v1.8.1 - resolves: #1497135 - -* Mon Oct 02 2017 Jan Chaloupka - 1.8.0-1 -- Update to upstream v1.8.0 - related: #1497625 - -* Mon Oct 02 2017 Jan Chaloupka - 1.7.7-1 -- Update to upstream v1.7.7 - resolves: #1497625 - -* Mon Sep 18 2017 Jan Chaloupka - 1.7.6-1 -- Update to upstream v1.7.6 - resolves: #1492551 - -* Mon Sep 11 2017 Jan Chaloupka - 1.7.5-1 -- Update to upstream v1.7.5 - resolves: #1490316 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.4-1 -- Fix the version - related: #1482874 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.3-2 -- Update to upstream v1.7.4 - resolves: #1482874 - -* Tue Aug 08 2017 Jan Chaloupka - 1.7.3-1 -- Update to upstream v1.7.3 - resolves: #1479685 - -* Thu Aug 03 2017 Fedora Release Engineering - 1.7.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Sun Jul 30 2017 Florian Weimer - 1.7.2-3 -- Rebuild with binutils fix for ppc64le (#1475636) - -* Wed Jul 26 2017 Fedora Release Engineering - 1.7.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.2-1 -- Update to upstream v1.7.2 - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.1-2 -- Sync kubeadm.conf with upstream service configuration (set Restart,StartLimitInterval,RestartSec) - -* Fri Jul 14 2017 Jan Chaloupka - 1.7.1-1 -- Update to upstream v1.7.1 - resolves: #1471767 - -* Sat Jul 08 2017 Jan Chaloupka - 1.6.7-1 -- Update to upstream v1.6.7 - resolves: #1468823 - resolves: #1468752 - -* Fri May 19 2017 Timothy St. Clair - 1.6.4-1 -- Add kubeadm subpackage to enable upstream deployments - -* Thu May 18 2017 Jan Chaloupka - 1.6.3-1 -- Update to upstream v1.6.3 - resolves: #1452101 - -* Fri May 12 2017 Jan Chaloupka - 1.6.2-2 -- Extend archs with s390x - resolves: #1400000 - -* Tue May 02 2017 Jan Chaloupka - 1.6.2-1 -- Update to upstream v1.6.2 - resolves: #1447338 - -* Tue Apr 11 2017 Jan Chaloupka - 1.6.1-1 -- Update to upstream v1.6.1 - related: #1422889 - -* Fri Mar 31 2017 Jan Chaloupka - 1.5.6-1 -- Update to upstream v1.5.6 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.5-4 -- Update to upstream v1.5.5 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.4-3 -- re-enable debug-info - related: #1422889 - -* Thu Mar 09 2017 Jan Chaloupka - 1.5.4-2 -- Bump to upstream 7243c69eb523aa4377bce883e7c0dd76b84709a1 - related: #1422889 - -* Thu Feb 16 2017 Jan Chaloupka - 1.5.3-1 -- Update to upstream v1.5.3 - resolves: #1422889 - -* Fri Feb 10 2017 Fedora Release Engineering - 1.5.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Wed Jan 18 2017 Jan Chaloupka - 1.5.2-2 -- fix rootScopeNaming generate selfLink - resolves: #1413997 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.2-1 -- Bump version as well - related: #1412996 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.1-2 -- Bump to upstream 1.5.2 - resolves: #1412996 - -* Thu Jan 05 2017 Jan Chaloupka - 1.5.1-1 -- Bump to upstream 1.5.1 - resolves: #1410186 - -* Wed Jan 04 2017 Jan Chaloupka - 1.4.7-2 -- Generate the md files before they are converted to man pages - resolves: #1409943 - -* Mon Dec 12 2016 Jan Chaloupka - 1.4.7-1 -- Bump to upstream v1.4.7 - resolves: #1403823 - New conntrack-tools dependency of kube-proxy - Build kubernetes on ppc64le with linkmode=external - resolves: #1392922 - -* Mon Nov 14 2016 jchaloup - 1.4.5-3 -- Patch unit-test subpackage to run tests over k8s distro binaries - -* Wed Nov 09 2016 jchaloup - 1.4.5-2 -- Add missing if devel around generated devel.file-list - related: #1390074 - -* Tue Nov 08 2016 jchaloup - 1.4.5-1 -- Bump to upstream v1.4.5 (flip back to upstream based Kubernetes) - related: #1390074 - -* Mon Oct 31 2016 jchaloup - 1.4.0-0.1.beta3.git52492b4 -- Update to origin v1.4.0-alpha.0 (ppc64le and arm unbuildable with the current golang version) - resolves: #1390074 - -* Mon Oct 24 2016 jchaloup - 1.3.0-0.4.git52492b4 -- Update to origin v1.3.1 - resolves: #1388092 - -* Thu Sep 08 2016 jchaloup - 1.3.0-0.3.rc1.git507d3a7 -- Update to origin v1.3.0-rc1 - resolves: #1374361 - -* Thu Aug 11 2016 Dennis Gilmore -1.3.0-0.2.git4a3f9c5 -- enable armv7hl and aarch64 - -* Tue Aug 09 2016 jchaloup - 1.3.0-0.1.git4a3f9c5 -- Update to origin v1.3.0-alpha.3 - resolves: #1365601 - -* Thu Jul 21 2016 Fedora Release Engineering - 1.2.0-0.27.git4a3f9c5 -- https://fedoraproject.org/wiki/Changes/golang1.7 - -* Sun Jul 17 2016 jchaloup - 1.2.0-0.26.git4a3f9c5 -- Update to origin v1.2.1 - resolves: #1357261 - -* Wed Jul 13 2016 jchaloup - 1.2.0-0.25.git4a3f9c5 -- Enable CPU and Memory accounting on a node - -* Wed Jun 29 2016 jchaloup - 1.2.0-0.24.git4a3f9c5 -- Be more verbose about devel subpackage - resolves: #1269449 - -* Tue Jun 28 2016 jchaloup - 1.2.0-0.23.git4a3f9c5 -- Own /run/kubernetes directory - resolves: #1264699 - -* Sat May 28 2016 jchaloup - 1.2.0-0.22.git4a3f9c5 -- Bump to origin v1.2.0 - resolves: #1340643 - -* Wed May 04 2016 jchaloup - 1.2.0-0.21.git4a3f9c5 -- Extend uni-test subpackage to run other tests - -* Mon Apr 25 2016 jchaloup - 1.2.0-0.20.git4a3f9c5 -- Update support for ppc64le to use go compiler - related: #1306214 - -* Thu Apr 21 2016 jchaloup - 1.2.0-0.19.git4a3f9c5 -- Fix support for ppc64le - related: #1306214 - -* Tue Apr 19 2016 jchaloup - 1.2.0-0.18.git4a3f9c5 -- Bump to origin v1.1.6 - resolves: #1328357 - -* Mon Apr 11 2016 jchaloup - 1.2.0-0.17.alpha6.git4a3f9c5 -- Don't disable extensions/v1beta1 by default to conform with upstream documentation - -* Wed Mar 30 2016 jchaloup - 1.2.0-0.16.alpha6.git4a3f9c5 - Update to origin's v1.1.5 - Build on ppc64le as well - resolves: #1306214 - -* Tue Mar 08 2016 jchaloup - 1.2.0-0.15.alpha6.gitf0cd09a -- hyperkube.server: don't parse args for any command - -* Fri Mar 04 2016 jchaloup - 1.2.0-0.14.alpha6.gitf0cd09a -- Disable extensions/v1beta1 implicitly - -* Tue Mar 01 2016 jchaloup - 1.2.0-0.13.alpha6.gitf0cd09a -- Hyperkube checks flags of individual commands/servers even if it does not define their flags. - Thus resulting in 'uknown shorthand flag' error - -* Mon Feb 29 2016 jchaloup - 1.2.0-0.12.alpha6.gitf0cd09a -- Disable v1beta3 -- hyperkube-kubectl-dont shift os.Args - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.11.alpha6.gitf0cd09a -- add kube- prefix to controller-manager, proxy and scheduler - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.10.alpha6.gitf0cd09a -- Hardlink kube-controller-manager, kuber-scheduler, kubectl, kubelet and kube-proxy into hyperkube -- Keep kube-apiserver binary as it is (it has different permission and capabilities) - -* Thu Feb 25 2016 jchaloup - 1.2.0-0.9.alpha6.gitf0cd09a -- Fix Content-Type of docker client response - resolves: #1311861 - -* Mon Feb 22 2016 Fedora Release Engineering - 1.2.0-0.8.alpha6.gitf0cd09a -- https://fedoraproject.org/wiki/Changes/golang1.6 - -* Mon Feb 22 2016 jchaloup - 1.2.0-0.7.alpha6.git4c8e6f4 -- Bump to origin 1.1.3 - kube-version-change command replaced with kubectl convert (check out docs/admin/cluster-management.md) - related: 1295066 - -* Thu Feb 04 2016 Fedora Release Engineering - 1.2.0-0.6.alpha1.git4c8e6f4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jan 21 2016 jchaloup - 1.2.0-0.5.alpha1.git4c8e6f4 -- Bump to upstream e1d9873c1d5711b83fd3dd7eefe83a88ceb92c08 - related: #1291860 - -* Thu Jan 07 2016 jchaloup - 1.2.0-0.4.alpha1.git4c8e6f4 -- Move definition of all version, git and commit macros at one place - resolves: #1291860 - -* Fri Jan 01 2016 jchaloup - 1.2.0-0.3.alpha1.git4c8e6f4 -- Bump to upstream bf56e235826baded1772fb340266b8419c3e8f30 - Rebase to origin's "v1.1.0.1 - Security Update to v1.1" release - resolves: #1295066 - -* Thu Nov 26 2015 jchaloup - 1.2.0-0.2.alpha1.git4c8e6f4 -- Bump to origin upstream a41c9ff38d52fd508481c3c2bac13d52871fde02 -- Build kubernetes from origin's Godeps using hack/build-go.sh - origin's Godeps = kubernetes upstream + additional patches - -* Tue Oct 20 2015 jchaloup - 1.2.0-0.1.alpha1.git4c8e6f4 -- Bump to upstream 403de3874fba420fd096f2329b45fe2f5ae97e46 - related: #1211266 - -* Wed Oct 14 2015 jchaloup - 1.1.0-0.41.alpha1.gite9a6ef1 -- Bump to origin upstream e9a6ef1cd4c29d45730289a497d18b19d7ba450d - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.40.alpha1.git5f38cb0 -- Add missing short option for --server of kubectl -- Update unit-test-subpackage (only test-cmd.sh atm) - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.39.alpha1.git5f38cb0 -- Add normalization of flags - related: #1211266 - -* Fri Oct 02 2015 jchaloup - 1.1.0-0.38.alpha1.git5f38cb0 -- Restore unit-test subpackage (not yet tested) - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.37.alpha1.git5f38cb0 -- Do not unset default cluster, otherwise k8s ends with error when no cluster set - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.36.alpha0.git5f38cb0 -- Bump to o4n 5f38cb0e98c9e854cafba9c7f98dafd51e955ad8 - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.35.alpha1.git2695cdc -- Update git version of k8s and o4n, add macros - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.34.alpha1.git2695cdc -- Built k8s from o4n tarball -- Bump to upstream 2695cdcd29a8f11ef60278758e11f4817daf3c7c - related: #1211266 - -* Tue Sep 22 2015 jchaloup - 1.1.0-0.33.alpha1.git09cf38e -- Bump to upstream 09cf38e9a80327e2d41654db277d00f19e2c84d0 - related: #1211266 - -* Thu Sep 17 2015 jchaloup - 1.1.0-0.32.alpha1.git400e685 -- Bump to upstream 400e6856b082ecf4b295568acda68d630fc000f1 - related: #1211266 - -* Wed Sep 16 2015 jchaloup - 1.1.0-0.31.gitd549fc4 -- Bump to upstream d549fc400ac3e5901bd089b40168e1e6fb17341d - related: #1211266 - -* Tue Sep 15 2015 jchaloup - 1.1.0-0.30.gitc9570e3 -- Bump to upstream c9570e34d03c6700d83f796c0125d17c5064e57d - related: #1211266 - -* Mon Sep 14 2015 jchaloup - 1.1.0-0.29.git86b4e77 -- Bump to upstream 86b4e777e1947c1bc00e422306a3ca74cbd54dbe - related: #1211266 - -* Thu Sep 10 2015 jchaloup - 1.1.0-0.28.gitf867ba3 -- Bump to upstream f867ba3ba13e3dad422efd21c74f52b9762de37e - related: #1211266 - -* Wed Sep 09 2015 jchaloup - 1.1.0-0.27.git0f4fa4e -- Bump to upstream 0f4fa4ed25ae9a9d1824fe55aeefb4d4ebfecdfd - related: #1211266 - -* Tue Sep 08 2015 jchaloup - 1.1.0-0.26.git196f58b -- Bump to upstream 196f58b9cb25a2222c7f9aacd624737910b03acb - related: #1211266 - -* Mon Sep 07 2015 jchaloup - 1.1.0-0.25.git96e0ed5 -- Bump to upstream 96e0ed5749608d4cc32f61b3674deb04c8fa90ad - related: #1211266 - -* Sat Sep 05 2015 jchaloup - 1.1.0-0.24.git2e2def3 -- Bump to upstream 2e2def36a904fe9a197da5fc70e433e2e884442f - related: #1211266 - -* Fri Sep 04 2015 jchaloup - 1.1.0-0.23.gite724a52 -- Bump to upstream e724a5210adf717f62a72162621ace1e08730c75 - related: #1211266 - -* Thu Sep 03 2015 jchaloup - 1.1.0-0.22.gitb6f2f39 -- Bump to upstream b6f2f396baec5105ff928cf61903c2c368259b21 - related: #1211266 - -* Wed Sep 02 2015 jchaloup - 1.1.0-0.21.gitb4a3698 -- Bump to upstream b4a3698faed81410468eccf9f328ca6df3d0cca3 - related: #1211266 - -* Tue Sep 01 2015 jchaloup - 1.1.0-0.20.git2f9652c -- Bump to upstream 2f9652c7f1d4b8f333c0b5c8c1270db83b913436 - related: #1211266 - -* Mon Aug 31 2015 jchaloup - 1.1.0-0.19.git66a644b -- Bump to upstream 66a644b275ede9ddb98eb3f76e8d1840cafc2147 - related: #1211266 - -* Thu Aug 27 2015 jchaloup - 1.1.0-0.18.gitab73849 -- Bump to upstream ab7384943748312f5e9294f42d42ed3983c7c96c - related: #1211266 - -* Wed Aug 26 2015 jchaloup - 1.1.0-0.17.git00e3442 -- Bump to upstream 00e34429e0242323ed34347cf0ab65b3d62b21f7 - related: #1211266 - -* Tue Aug 25 2015 jchaloup - 1.1.0-0.16.gita945785 -- Bump to upstream a945785409d5b68f3a2721d2209300edb5abf1ce - related: #1211266 - -* Mon Aug 24 2015 jchaloup - 1.1.0-0.15.git5fe7029 -- Bump to upstream 5fe7029e688e1e5873a0b95a622edda5b5156d2b - related: #1211266 - -* Fri Aug 21 2015 jchaloup - 1.1.0-0.14.gitb6f18c7 -- Bump to upstream b6f18c7ce08714c8d4f6019463879a164a41750e - related: #1211266 - -* Thu Aug 20 2015 jchaloup - 1.1.0-0.13.git44fa48e -- Bump to upstream 44fa48e5af44d3e988fa943d96a2de732d8cc666 - related: #1211266 - -* Wed Aug 19 2015 jchaloup - 1.1.0-0.12.gitb5a4a54 -- Bump to upstream b5a4a548df0cffb99bdcc3b9b9e48d4025d0541c - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.11.git919c7e9 -- Bump to upstream 919c7e94e23d2dcd5bdd96896e0a7990f9ae3338 - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.10.git280b66c -- Bump to upstream 280b66c9012c21e253acd4e730f8684c39ca08ec - related: #1211266 - -* Mon Aug 17 2015 jchaloup - 1.1.0-0.9.git081d9c6 -- Bump to upstream 081d9c64d25c20ec16035036536511811118173d - related: #1211266 - -* Fri Aug 14 2015 jchaloup - 1.1.0-0.8.git8dcbeba -- Bump to upstream 8dcbebae5ef6a7191d9dfb65c68833c6852a21ad - related: #1211266 - -* Thu Aug 13 2015 jchaloup - 1.1.0-0.7.git968cbbe -- Bump to upstream 968cbbee5d4964bd916ba379904c469abb53d623 - related: #1211266 - -* Wed Aug 12 2015 jchaloup - 1.1.0-0.6.gitc91950f -- Bump to upstream c91950f01cb14ad47486dfcd2fdfb4be3ee7f36b - related: #1211266 - -* Tue Aug 11 2015 jchaloup - 1.1.0-0.5.gite44c8e6 -- Bump to upstream e44c8e6661c931f7fd434911b0d3bca140e1df3a - related: #1211266 - -* Mon Aug 10 2015 jchaloup - 1.1.0-0.4.git2bfa9a1 -- Bump to upstream 2bfa9a1f98147cfdc2e9f4cf50e2c430518d91eb - related: #1243827 - -* Thu Aug 06 2015 jchaloup - 1.1.0-0.3.git4c42e13 -- Bump to upstream 4c42e1302d3b351f3cb6074d32aa420bbd45e07d -- Change import path prefix to k8s.io/kubernetes - related: #1243827 - -* Wed Aug 05 2015 jchaloup - 1.1.0-0.2.git159ba48 -- Bump to upstream 159ba489329e9f6ce422541e13f97e1166090ec8 - related: #1243827 - -* Sat Aug 01 2015 jchaloup - 1.1.0-0.1.git6129d3d -- Bump to upstream 6129d3d4eb80714286650818081a64ce2699afed - related: #1243827 - -* Fri Jul 31 2015 jchaloup - 1.0.0-0.18.gitff058a1 -- Bump to upstream ff058a1afeb63474f7a35805941f3b07c27aae0f - related: #1243827 - -* Thu Jul 30 2015 jchaloup - 1.0.0-0.17.git769230e -- Bump to upstream 769230e735993bb0bf924279a40593c147c9a6ab - related: #1243827 - -* Wed Jul 29 2015 jchaloup - 1.0.0-0.16.gitdde7222 -- Bump to upstream dde72229dc9cbbdacfb2e44b22d9d5b357027020 - related: #1243827 - -* Tue Jul 28 2015 jchaloup - 1.0.0-0.15.gitc5bffaa -- Bump to upstream c5bffaaf3166513da6259c44a5d1ba8e86bea5ce - related: #1243827 - -* Sat Jul 25 2015 jchaloup - 1.0.0-0.14.git5bd82ff -- Bump to upstream 5bd82ffe6da8f4e72e71b362635e558bfc412106 - related: #1243827 - -* Fri Jul 24 2015 jchaloup - 1.0.0-0.13.git291acd1 -- Bump to upstream 291acd1a09ac836ec7524b060a19a6498d9878dd - related: #1243827 - -* Thu Jul 23 2015 jchaloup - 1.0.0-0.12.gitfbed349 -- Bump to upstream fbed3492bfa09e59b1c423fdd7c1ecad333a06ef - related: #1243827 - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.11.gitfbc85e9 -- Add runtime dependency of kubernetes-node on socat (so kubectl port-forward works on AH) - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.10.gitfbc85e9 -- Update the build script for go1.5 as well -- Bump to upstream fbc85e9838f25547be94fbffeeb92a756d908ca0 - related: #1243827 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.9.git2d88675 -- Bump to upstream 2d88675f2203d316d4bac312c7ccad12991b56c2 -- Change KUBE_ETCD_SERVERS to listen on 2379 ports instead of 4001 - resolves: #1243827 -- Add kubernetes-client to provide kubectl command - resolves: #1241469 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.8.gitb2dafda -- Fix dependency and tests for go-1.5 -- with_debug off as the builds ends with error "ELFRESERVE too small: ..." - -* Sat Jul 18 2015 Eric Paris - 1.0.0-0.7.gitb2dafda -- Update apiserver binary gid - -* Fri Jul 17 2015 jchaloup - 1.0.0-0.6.gitb2dafda -- Bump to upstream b2dafdaef5aceafad503ab56254b60f80da9e980 - related: #1211266 - -* Thu Jul 16 2015 jchaloup - 1.0.0-0.5.git596a8a4 -- Bump to upstream 596a8a40d12498b5335140f50753980bfaea4f6b - related: #1211266 - -* Wed Jul 15 2015 jchaloup - 1.0.0-0.4.git6ba532b -- Bump to upstream 6ba532b218cb5f5ea3f0e8dce5395182f388536c - related: #1211266 - -* Tue Jul 14 2015 jchaloup - 1.0.0-0.3.gitc616182 -- Bump to upstream c6161824db3784e6156131307a5e94647e5557fd - related: #1211266 - -* Mon Jul 13 2015 jchaloup - 1.0.0-0.2.git2c27b1f -- Bump to upstream 2c27b1fa64f4e70f04575d1b217494f49332390e - related: #1211266 - -* Sat Jul 11 2015 jchaloup - 1.0.0-0.1.git1b37059 -- Bump to upstream 1b370599ccf271741e657335c4943cb8c7dba28b - related: #1211266 - -* Fri Jul 10 2015 jchaloup - 0.21.1-0.2.gitccc4cfc -- Bump to upstream ccc4cfc7e11e0f127ac1cea045017dd799be3c63 - related: #1211266 - -* Thu Jul 09 2015 jchaloup - 0.21.1-0.1.git41f8907 -- Update generating of man pages from md (add genmanpages.sh) -- Bump to upstream 41f89075396329cd46c58495c7d3f7e13adcaa96 - related: #1211266 - -* Wed Jul 08 2015 jchaloup - 0.20.2-0.5.git77be29e -- Bump to upstream 77be29e3da71f0a136b6aa4048b2f0575c2598e4 - related: #1211266 - -* Tue Jul 07 2015 jchaloup - 0.20.2-0.4.git639a7da -- Bump to upstream 639a7dac50a331414cc6c47083323388da0d8756 - related: #1211266 - -* Mon Jul 06 2015 jchaloup - 0.20.2-0.3.gitbb6f2f7 -- Bump to upstream bb6f2f7ad90596d624d84cc691eec0f518e90cc8 - related: #1211266 - -* Fri Jul 03 2015 jchaloup - 0.20.2-0.2.git974377b -- Bump to upstream 974377b3064ac59b6e5694bfa568d67128026171 - related: #1211266 - -* Thu Jul 02 2015 jchaloup - 0.20.2-0.1.gitef41ceb -- Bump to upstream ef41ceb3e477ceada84c5522f429f02ab0f5948e - related: #1211266 - -* Tue Jun 30 2015 jchaloup - 0.20.0-0.3.git835eded -- Bump to upstream 835eded2943dfcf13a89518715e4be842a6a3ac0 -- Generate missing man pages - related: #1211266 - -* Mon Jun 29 2015 jchaloup - 0.20.0-0.2.git1c0b765 -- Bump to upstream 1c0b765df6dabfe9bd0e20489ed3bd18e6b3bda8 - Comment out missing man pages - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.20.0-0.1.git8ebd896 -- Bump to upstream 8ebd896351513d446d56bc5785c070d2909226a3 - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.19.3-0.6.git712f303 -- Bump to upstream 712f303350b35e70a573f3cb19193c8ec7ee7544 - related: #1211266 - -* Thu Jun 25 2015 jchaloup - 0.19.3-0.5.git2803b86 -- Bump to upstream 2803b86a42bf187afa816a7ce14fec754cc2af51 - related: #1211266 - -* Wed Jun 24 2015 Eric Paris - 0.19.3-0.4.git5b4dc4e -- Set CAP_NET_BIND_SERVICE on the kube-apiserver so it can use 443 - -* Wed Jun 24 2015 jchaloup - 0.19.3-0.3.git5b4dc4e -- Bump to upstream 5b4dc4edaa14e1ab4e3baa19df0388fa54dab344 - pkg/cloudprovider/* packages does not conform to golang language specification - related: #1211266 - -* Tue Jun 23 2015 jchaloup - 0.19.3-0.2.gita2ce3ea -- Bump to upstream a2ce3ea5293553b1fe0db3cbc6d53bdafe061d79 - related: #1211266 - -* Mon Jun 22 2015 jchaloup - 0.19.1-0.1.gitff0546d -- Bump to upstream ff0546da4fc23598de59db9f747c535545036463 - related: #1211266 - -* Fri Jun 19 2015 jchaloup - 0.19.0-0.7.gitb2e9fed -- Bump to upstream b2e9fed3490274509506285bdba309c50afb5c39 - related: #1211266 - -* Thu Jun 18 2015 jchaloup - 0.19.0-0.6.gitf660940 -- Bump to upstream f660940dceb3fe6ffb1b14ba495a47d91b5cd910 - related: #1211266 - -* Wed Jun 17 2015 jchaloup - 0.19.0-0.5.git43889c6 -- Bump to upstream 43889c612c4d396dcd8fbf3fbd217e106eaf5bce - related: #1211266 - -* Tue Jun 16 2015 jchaloup - 0.19.0-0.4.gita8269e3 -- Bump to upstream a8269e38c9e2bf81ba18cd6420e2309745d5b0b9 - related: #1211266 - -* Sun Jun 14 2015 jchaloup - 0.19.0-0.3.git5e5c1d1 -- Bump to upstream 5e5c1d10976f2f26d356ca60ef7d0d715c9f00a2 - related: #1211266 - -* Fri Jun 12 2015 jchaloup - 0.19.0-0.2.git0ca96c3 -- Bump to upstream 0ca96c3ac8b47114169f3b716ae4521ed8c7657c - related: #1211266 - -* Thu Jun 11 2015 jchaloup - 0.19.0-0.1.git5a02fc0 -- Bump to upstream 5a02fc07d8a943132b9e68fe7169778253318487 - related: #1211266 - -* Wed Jun 10 2015 jchaloup - 0.18.2-0.3.git0dfb681 -- Bump to upstream 0dfb681ba5d5dba535895ace9d650667904b5df7 - related: #1211266 - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.2.gitb68e08f -- golang-cover is not needed - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.1.gitb68e08f -- Bump to upstream b68e08f55f5ae566c4ea3905d0993a8735d6d34f - related: #1211266 - -* Sat Jun 06 2015 jchaloup - 0.18.1-0.3.git0f1c4c2 -- Bump to upstream 0f1c4c25c344f70c3592040b2ef092ccdce0244f - related: #1211266 - -* Fri Jun 05 2015 jchaloup - 0.18.1-0.2.git7309e1f -- Bump to upstream 7309e1f707ea5dd08c51f803037d7d22c20e2b92 - related: #1211266 - -* Thu Jun 04 2015 jchaloup - 0.18.1-0.1.gita161edb -- Bump to upstream a161edb3960c01ff6e14813858c2eeb85910009b - related: #1211266 - -* Wed Jun 03 2015 jchaloup - 0.18.0-0.3.gitb5a91bd -- Bump to upstream b5a91bda103ed2459f933959241a2b57331747ba -- Don't run %%check section (kept only for local run). Tests are now handled via CI. - related: #1211266 - -* Tue Jun 02 2015 jchaloup - 0.18.0-0.2.git5520386 -- Bump to upstream 5520386b180d3ddc4fa7b7dfe6f52642cc0c25f3 - related: #1211266 - -* Mon Jun 01 2015 jchaloup - 0.18.0-0.1.git0bb78fe -- Bump to upstream 0bb78fe6c53ce38198cc3805c78308cdd4805ac8 - related: #1211266 - -* Fri May 29 2015 jchaloup - 0.17.1-6 -- Bump to upstream ed4898d98c46869e9cbdb44186dfdeda9ff80cc2 - related: #1211266 - -* Thu May 28 2015 jchaloup - 0.17.1-5 -- Bump to upstream 6fa2777e26559fc008eacac83eb165d25bd9a7de - related: #1211266 - -* Tue May 26 2015 jchaloup - 0.17.1-4 -- Bump to upstream 01fcb58673001e56c69e128ab57e0c3f701aeea5 - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-3 -- Decompose package into master and node subpackage. - Thanks to Avesh for testing and patience. - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-2 -- Bump to upstream cf7b0bdc2a41d38613ac7f8eeea91cae23553fa2 - related: #1211266 - -* Fri May 22 2015 jchaloup - 0.17.1-1 -- Bump to upstream d9d12fd3f7036c92606fc3ba9046b365212fcd70 - related: #1211266 - -* Wed May 20 2015 jchaloup - 0.17.0-12 -- Bump to upstream a76bdd97100c66a46e2b49288540dcec58a954c4 - related: #1211266 - -* Tue May 19 2015 jchaloup - 0.17.0-11 -- Bump to upstream 10339d72b66a31592f73797a9983e7c207481b22 - related: #1211266 - -* Mon May 18 2015 jchaloup - 0.17.0-10 -- Bump to upstream efb42b302d871f7217394205d84e5ae82335d786 - related: #1211266 - -* Sat May 16 2015 jchaloup - 0.17.0-9 -- Bump to upstream d51e131726b925e7088b90915e99042459b628e0 - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-8 -- Bump to upstream 1ee33ac481a14db7b90e3bbac8cec4ceea822bfb - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-7 -- Bump to upstream d3c6fb0d6a13c0177dcd67556d72963c959234ea - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-6 -- Bump to upstream f57f31783089f41c0bdca8cb87a1001ca94e1a45 - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-5 -- Bump to upstream c90d381d0d5cf8ab7b8412106f5a6991d7e13c7d - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-4 -- Bump to upstream 5010b2dde0f9b9eb820fe047e3b34bc9fa6324de -- Add debug info - related: #1211266 - -* Wed May 13 2015 jchaloup - 0.17.0-3 -- Bump to upstream ec19d41b63f5fe7b2c939e7738a41c0fbe65d796 - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-2 -- Provide /usr/bin/kube-version-change binary - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-1 -- Bump to upstream 962f10ee580eea30e5f4ea725c4e9e3743408a58 - related: #1211266 - -* Mon May 11 2015 jchaloup - 0.16.2-7 -- Bump to upstream 63182318c5876b94ac9b264d1224813b2b2ab541 - related: #1211266 - -* Fri May 08 2015 jchaloup - 0.16.2-6 -- Bump to upstream d136728df7e2694df9e082902f6239c11b0f2b00 -- Add NetworkManager as dependency for /etc/resolv.conf - related: #1211266 - -* Thu May 07 2015 jchaloup - 0.16.2-5 -- Bump to upstream ca0f678b9a0a6dc795ac7a595350d0dbe9d0ac3b - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-4 -- Add docs to kubernetes-unit-test - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-3 -- Bump to upstream 3a24c0e898cb3060d7905af6df275a3be562451d - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-2 -- Add api and README.md to kubernetes-unit-test - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-1 -- Bump to upstream 72048a824ca16c3921354197953fabecede5af47 - related: #1211266 - -* Mon May 04 2015 jchaloup - 0.16.1-2 -- Bump to upstream 1dcd80cdf3f00409d55cea1ef0e7faef0ae1d656 - related: #1211266 - -* Sun May 03 2015 jchaloup - 0.16.1-1 -- Bump to upstream 86751e8c90a3c0e852afb78d26cb6ba8cdbc37ba - related: #1211266 - -* Fri May 01 2015 jchaloup - 0.16.0-2 -- Bump to upstream 72708d74b9801989ddbdc8403fc5ba4aafb7c1ef - related: #1211266 - -* Wed Apr 29 2015 jchaloup - 0.16.0-1 -- Bump to upstream 7dcce2eeb7f28643d599c8b6a244523670d17c93 - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-10 -- Add unit-test subpackage - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-9 -- Bump to upstream 99fc906f78cd2bcb08536c262867fa6803f816d5 - related: #1211266 - -* Mon Apr 27 2015 jchaloup - 0.15.0-8 -- Bump to upstream 051dd96c542799dfab39184d2a7c8bacf9e88d85 - related: #1211266 - -* Fri Apr 24 2015 jchaloup - 0.15.0-7 -- Bump to upstream 9f753c2592481a226d72cea91648db8fb97f0da8 - related: #1211266 - -* Thu Apr 23 2015 jchaloup - 0.15.0-6 -- Bump to upstream cf824ae5e07965ba0b4b15ee88e08e2679f36978 - related: #1211266 - -* Tue Apr 21 2015 jchaloup - 0.15.0-5 -- Bump to upstream 21788d8e6606038a0a465c97f5240b4e66970fbb - related: #1211266 - -* Mon Apr 20 2015 jchaloup - 0.15.0-4 -- Bump to upstream eb1ea269954da2ce557f3305fa88d42e3ade7975 - related: #1211266 - -* Fri Apr 17 2015 jchaloup - 0.15.0-3 -- Obsolete cadvisor as it is integrated in kubelet - related: #1211266 - -* Wed Apr 15 2015 jchaloup - 0.15.0-0.2.git0ea87e4 -- Bump to upstream 0ea87e486407298dc1e3126c47f4076b9022fb09 - related: #1211266 - -* Tue Apr 14 2015 jchaloup - 0.15.0-0.1.gitd02139d -- Bump to upstream d02139d2b454ecc5730cc535d415c1963a7fb2aa - related: #1211266 - -* Sun Apr 12 2015 jchaloup - 0.14.2-0.2.gitd577db9 -- Bump to upstream d577db99873cbf04b8e17b78f17ec8f3a27eca30 - -* Wed Apr 08 2015 jchaloup - 0.14.2-0.1.git2719194 -- Bump to upstream 2719194154ffd38fd1613699a9dd10a00909957e - Use etcd-2.0.8 and higher - -* Tue Apr 07 2015 jchaloup - 0.14.1-0.2.gitd2f4734 -- Bump to upstream d2f473465738e6b6f7935aa704319577f5e890ba - -* Thu Apr 02 2015 jchaloup - 0.14.1-0.1.gita94ffc8 -- Bump to upstream a94ffc8625beb5e2a39edb01edc839cb8e59c444 - -* Wed Apr 01 2015 jchaloup - 0.14.0-0.2.git8168344 -- Bump to upstream 81683441b96537d4b51d146e39929b7003401cd5 - -* Tue Mar 31 2015 jchaloup - 0.14.0-0.1.git9ed8761 -- Bump to upstream 9ed87612d07f75143ac96ad90ff1ff68f13a2c67 -- Remove [B]R from devel branch until the package has stable API - -* Mon Mar 30 2015 jchaloup - 0.13.2-0.6.git8a7a127 -- Bump to upstream 8a7a127352263439e22253a58628d37a93fdaeb2 - -* Fri Mar 27 2015 jchaloup - 0.13.2-0.5.git8d94c43 -- Bump to upstream 8d94c43e705824f23791b66ad5de4ea095d5bb32 - resolves: #1205362 - -* Wed Mar 25 2015 jchaloup - 0.13.2-0.4.git455fe82 -- Bump to upstream 455fe8235be8fd9ba0ce21bf4f50a69d42e18693 - -* Mon Mar 23 2015 jchaloup - 0.13.2-0.3.gitef75888 -- Remove runtime dependency on etcd - resolves: #1202923 - -* Sun Mar 22 2015 jchaloup - 0.13.2-0.2.gitef75888 -- Bump to upstream ef758881d108bb53a128126c503689104d17f477 - -* Fri Mar 20 2015 jchaloup - 0.13.2-0.1.gita8f2cee -- Bump to upstream a8f2cee8c5418676ee33a311fad57d6821d3d29a - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.9.git53b25a7 -- Bump to upstream 53b25a7890e31bdec6f2a95b32200d6cc27ae2ca - fix kube-proxy.service and kubelet - resolves: #1200919 #1200924 - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.8.git39dceb1 -- Bump to upstream 39dceb13a511a83963a766a439cb386d10764310 - -* Thu Mar 12 2015 Eric Paris - 0.12.0-0.7.gita3fd0a9 -- Move from /etc/tmpfiles.d to %%{_tmpfilesdir} - resolves: #1200969 - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.6.gita3fd0a9 -- Place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /etc/tmpfiles.d/kubernetes.conf - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.5.gita3fd0a9 -- Bump to upstream a3fd0a9fd516bb6033f32196ae97aaecf8c096b1 - -* Tue Mar 10 2015 jchaloup - 0.12.0-0.4.gita4d871a -- Bump to upstream a4d871a10086436557f804930812f2566c9d4d39 - -* Fri Mar 06 2015 jchaloup - 0.12.0-0.3.git2700871 -- Bump to upstream 2700871b049d5498167671cea6de8317099ad406 - -* Thu Mar 05 2015 jchaloup - 0.12.0-0.2.git8b627f5 -- Bump to upstream 8b627f516fd3e4f62da90d401ceb3d38de6f8077 - -* Tue Mar 03 2015 jchaloup - 0.12.0-0.1.gitecca426 -- Bump to upstream ecca42643b91a7117de8cd385b64e6bafecefd65 - -* Mon Mar 02 2015 jchaloup - 0.11.0-0.5.git6c5b390 -- Bump to upstream 6c5b390160856cd8334043344ef6e08568b0a5c9 - -* Sat Feb 28 2015 jchaloup - 0.11.0-0.4.git0fec31a -- Bump to upstream 0fec31a11edff14715a1efb27f77262a7c3770f4 - -* Fri Feb 27 2015 jchaloup - 0.11.0-0.3.git08402d7 -- Bump to upstream 08402d798c8f207a2e093de5a670c5e8e673e2de - -* Wed Feb 25 2015 jchaloup - 0.11.0-0.2.git86434b4 -- Bump to upstream 86434b4038ab87ac40219562ad420c3cc58c7c6b - -* Tue Feb 24 2015 jchaloup - 0.11.0-0.1.git754a2a8 -- Bump to upstream 754a2a8305c812121c3845d8293efdd819b6a704 - turn off integration tests until "FAILED: unexpected endpoints: - timed out waiting for the condition" problem is resolved - Adding back devel subpackage ([B]R list outdated) - -* Fri Feb 20 2015 jchaloup - 0.10.1-0.3.git4c87805 -- Bump to upstream 4c87805870b1b22e463c4bd711238ef68c77f0af - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.2.git6f84bda -- Bump to upstream 6f84bdaba853872dbac69c84d3ab4b6964e85d8c - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.1.git7d6130e -- Bump to upstream 7d6130edcdfabd7dd2e6a06fdc8fe5e333f07f5c - -* Sat Feb 07 2015 jchaloup - 0.9.1-0.7.gitc9c98ab -- Bump to upstream c9c98ab19eaa6f0b2ea17152c9a455338853f4d0 - Since some dependencies are broken, we can not build Kubernetes from Fedora deps. - Switching to vendored source codes until Go draft is resolved - -* Wed Feb 04 2015 jchaloup - 0.9.1-0.6.git7f5ed54 -- Bump to upstream 7f5ed541f794348ae6279414cf70523a4d5133cc - -* Tue Feb 03 2015 jchaloup - 0.9.1-0.5.git2ac6bbb -- Bump to upstream 2ac6bbb7eba7e69eac71bd9acd192cda97e67641 - -* Mon Feb 02 2015 jchaloup - 0.9.1-0.4.gite335e2d -- Bump to upstream e335e2d3e26a9a58d3b189ccf41ceb3770d1bfa9 - -* Fri Jan 30 2015 jchaloup - 0.9.1-0.3.git55793ac -- Bump to upstream 55793ac2066745f7243c666316499e1a8cf074f0 - -* Thu Jan 29 2015 jchaloup - 0.9.1-0.2.gitca6de16 -- Bump to upstream ca6de16df7762d4fc9b4ad44baa78d22e3f30742 - -* Tue Jan 27 2015 jchaloup - 0.9.1-0.1.git3623a01 -- Bump to upstream 3623a01bf0e90de6345147eef62894057fe04b29 -- update tests for etcd-2.0 - -* Thu Jan 22 2015 jchaloup - 0.8.2-571.gitb2f287c -+- Bump to upstream b2f287c259d856f4c08052a51cd7772c563aff77 - -* Thu Jan 22 2015 Eric Paris - 0.8.2-570.gitb2f287c -- patch kubelet service file to use docker.service not docker.socket - -* Wed Jan 21 2015 jchaloup - 0.8.2-0.1.git5b04640 -- Bump to upstream 5b046406a957a1e7eda7c0c86dd7a89e9c94fc5f - -* Sun Jan 18 2015 jchaloup - 0.8.0-126.0.git68298f0 -- Add some missing dependencies -- Add devel subpackage - -* Fri Jan 09 2015 Eric Paris - 0.8.0-125.0.git68298f0 -- Bump to upstream 68298f08a4980f95dfbf7b9f58bfec1808fb2670 - -* Tue Dec 16 2014 Eric Paris - 0.7.0-18.0.git52e165a -- Bump to upstream 52e165a4fd720d1703ebc31bd6660e01334227b8 - -* Mon Dec 15 2014 Eric Paris - 0.6-297.0.git5ef34bf -- Bump to upstream 5ef34bf52311901b997119cc49eff944c610081b - -* Wed Dec 03 2014 Eric Paris -- Replace patch to use old googlecode/go.net/ with BuildRequires on golang.org/x/net/ - -* Tue Dec 02 2014 Eric Paris - 0.6-4.0.git993ef88 -- Bump to upstream 993ef88eec9012b221f79abe8f2932ee97997d28 - -* Mon Dec 01 2014 Eric Paris - 0.5-235.0.git6aabd98 -- Bump to upstream 6aabd9804fb75764b70e9172774002d4febcae34 - -* Wed Nov 26 2014 Eric Paris - 0.5-210.0.gitff1e9f4 -- Bump to upstream ff1e9f4c191342c24974c030e82aceaff8ea9c24 - -* Tue Nov 25 2014 Eric Paris - 0.5-174.0.git64e07f7 -- Bump to upstream 64e07f7fe03d8692c685b09770c45f364967a119 - -* Mon Nov 24 2014 Eric Paris - 0.5-125.0.git162e498 -- Bump to upstream 162e4983b947d2f6f858ca7607869d70627f5dff - -* Fri Nov 21 2014 Eric Paris - 0.5-105.0.git3f74a1e -- Bump to upstream 3f74a1e9f56b3c3502762930c0c551ccab0557ea - -* Thu Nov 20 2014 Eric Paris - 0.5-65.0.gitc6158b8 -- Bump to upstream c6158b8aa9c40fbf1732650a8611429536466b21 -- include go-restful build requirement - -* Tue Nov 18 2014 Eric Paris - 0.5-14.0.gitdf0981b -- Bump to upstream df0981bc01c5782ad30fc45cb6f510f365737fc1 - -* Tue Nov 11 2014 Eric Paris - 0.4-680.0.git30fcf24 -- Bump to upstream 30fcf241312f6d0767c7d9305b4c462f1655f790 - -* Mon Nov 10 2014 Eric Paris - 0.4-633.0.git6c70227 -- Bump to upstream 6c70227a2eccc23966d32ea6d558ee05df46e400 - -* Fri Nov 07 2014 Eric Paris - 0.4-595.0.gitb695650 -- Bump to upstream b6956506fa2682afa93770a58ea8c7ba4b4caec1 - -* Thu Nov 06 2014 Eric Paris - 0.4-567.0.git3b1ef73 -- Bump to upstream 3b1ef739d1fb32a822a22216fb965e22cdd28e7f - -* Thu Nov 06 2014 Eric Paris - 0.4-561.0.git06633bf -- Bump to upstream 06633bf4cdc1ebd4fc848f85025e14a794b017b4 -- Make spec file more RHEL/CentOS friendly - -* Tue Nov 04 2014 Eric Paris - 0.4-0.0.git4452163 -- rebase to v0.4 -- include man pages - -* Tue Oct 14 2014 jchaloup - 0.3-0.3.git98ac8e1 -- create /var/lib/kubelet -- Use bash completions from upstream -- Bump to upstream 98ac8e178fcf1627399d659889bcb5fe25abdca4 -- all by Eric Paris - -* Mon Sep 29 2014 Jan Chaloupka - 0.3-0.2.git88fdb65 -- replace * with coresponding files -- remove dependency on gcc - -* Wed Sep 24 2014 Eric Paris - 0.1-0.4.git6ebe69a -- prefer autosetup instead of setup (revert setup change in 0-0.3.git) -https://fedoraproject.org/wiki/Autosetup_packaging_draft -- revert version number to 0.1 - -* Mon Sep 08 2014 Lokesh Mandvekar - 0-0.3.git6ebe69a -- gopath defined in golang package already -- package owns /etc/kubernetes -- bash dependency implicit -- keep buildroot/$RPM_BUILD_ROOT macros consistent -- replace with macros wherever possible -- set version, release and source tarball prep as per -https://fedoraproject.org/wiki/Packaging:SourceURL#Github - -* Mon Sep 08 2014 Eric Paris -- make services restart automatically on error - -* Sat Sep 06 2014 Eric Paris -- update to upstream -- redo build to use project scripts -- use project scripts in %%check -- rework deletion of third_party packages to easily detect changes -- run apiserver and controller-manager as non-root - -* Mon Aug 11 2014 Adam Miller -- update to upstream -- decouple the rest of third_party - -* Thu Aug 7 2014 Eric Paris -- update to head -- update package to include config files - -* Wed Jul 16 2014 Colin Walters -- Initial package diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/changelog b/kubernetes/kubernetes-1.21.8/debian/deb_folder/changelog deleted file mode 100644 index 6a6704254..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/changelog +++ /dev/null @@ -1,161 +0,0 @@ -kubernetes-1.21.8 (1.21.8-2) unstable; urgency=medium - - * Updated package name to be able to support multiple kubernetes versions on stx platform - - -- Kaustubh Dhokte Fri, 29 Apr 2022 00:20:53 +0000 - - -kubernetes (1.21.8-1) unstable; urgency=medium - - * Updated for stx debian packaging - - -- Mihnea Saracin Fri, 29 Oct 2021 12:51:12 +0000 - - -kubernetes (1.12.10+dfsg-1) UNRELEASED; urgency=medium - - [ TODO ] [ FIXME ] - * copyright / vendor - * missing-sources - * rules: "make generated_files" - - * New upstream release. - * Patch away deprecated "docker/engine-api". - * rules: - + clean "zz_generated.deepcopy.go" files. - * New patch to fix selinux import. - - -- Dmitry Smirnov Mon, 18 Jun 2018 15:26:23 +1000 - -kubernetes (1.7.16+dfsg-1) unstable; urgency=medium - - [ Michael Stapelberg ] - * Switch to XS-Go-Import-Path - - [ Dmitry Smirnov ] - * Resurrected "mergo.patch" that has been mistakenly removed - (Closes: #878254). - * Re-enabled safeguard test for the above problem. - * New upstream release: - + CVE-2017-1002101 (Closes: #892801) - + CVE-2017-1002102 (Closes: #894051) - * Updated Vcs URLs for Salsa. - * Standards-Version: 4.1.4 - * Build-Depends: - - golang-go - + golang-any - + golang-github-appc-cni-dev - + golang-github-armon-circbuf-dev - + golang-github-azure-azure-sdk-for-go-dev - + golang-github-dgrijalva-jwt-go-v3-dev - + golang-github-docker-distribution-dev - + golang-github-docker-docker-dev - + golang-github-emicklei-go-restful-swagger12-dev - + golang-github-gogo-protobuf-dev - + golang-github-gorilla-websocket-dev - + golang-github-grpc-ecosystem-go-grpc-prometheus-dev - + golang-github-karlseguin-ccache-dev - - golang-github-opencontainers-runc-dev - + golang-github-opencontainers-docker-runc-dev - + golang-github-pmezard-go-difflib-dev - + golang-golang-x-time-dev - + golang-golang-x-tools-dev - + golang-google-grpc-dev - + golang-gopkg-warnings.v0-dev - + golang-goprotobuf-dev - - -- Dmitry Smirnov Sun, 06 May 2018 16:20:21 +1000 - -kubernetes (1.7.7+dfsg-3) unstable; urgency=medium - - * kubernetes-master should depend on etcd (Closes: #855218). - - -- Andrew Shadura Sun, 22 Oct 2017 19:40:46 +0100 - -kubernetes (1.7.7+dfsg-2) unstable; urgency=medium - - * Use CURDIR, not PWD, unbreaks the build at buildds. - - -- Andrew Shadura Fri, 06 Oct 2017 19:25:45 +0200 - -kubernetes (1.7.7+dfsg-1) unstable; urgency=medium - - [ Tim Potter ] - * Open work for new release - * Remove unused Files-Excluded entries from d/copyright - * Remove Skydns B-D as no longer used - * Don't build on ppc64 or ppc64le architectures - - [ Andrew Shadura ] - * New upstream release. - * Refresh patches. - * Update build dependencies. - * Symlink vendor packages to the build directory. - - -- Andrew Shadura Fri, 06 Oct 2017 18:54:06 +0200 - -kubernetes (1.5.5+dfsg-2) unstable; urgency=medium - - * Team upload. - * Don't build on ppc64le due to Go linker problems. See GitHub issue - https://github.com/golang/go/issues/15823. - * Don't build on ppc64 as it's not supported by upstream at the - moment. (Closes: #860505) - - -- Tim Potter Sat, 03 Jun 2017 08:00:51 +1000 - -kubernetes (1.5.5+dfsg-1) unstable; urgency=low - - [ Dmitry Smirnov ] - * Switch to bundled "rkt". - * rules: remove "-p" option from build and test overrides. - * control: drop obsolete "golang-clockwork-dev" alternative. - * New patch to disable test failing on [armel]. - * Upload to unstable. - - [ Tim Potter ] - * New upstream version. [March 2017] - * Big updates to d/rules and d/copyright to update to upstream - changes made since the 1.2.x release. - * Refresh patches to bring up to date with upstream changes since - 1.2.x. - * control: add lsb-base as dependency for sysvinit scripts. - * Suppress spelling-error-in-binary Lintian messages. - - -- Tim Potter Thu, 13 Apr 2017 16:45:57 +1000 - -kubernetes (1.2.5+dfsg-1) experimental; urgency=medium - - * New upstream release [June 2016]. - * Switch to private "github.com/golang/glog" due to log noise. - * Disabled failing tests; no longer ignore failures in tests. - * Build/test using 2 cores only. - * New patch to update appc/cni name space (fixes FTBFS). - * Removed obsolete "spf13-cobra.patch". - - -- Dmitry Smirnov Sun, 03 Jul 2016 04:12:28 +1000 - -kubernetes (1.2.4+dfsg-2) experimental; urgency=medium - - * Added new patch to fix incompatibility with "imdario/mergo" v0.2.2 - (Closes: #825753). - Thanks, Florian Ernst. - * Enable tests but ignore failures for now. - - -- Dmitry Smirnov Fri, 17 Jun 2016 01:41:38 +1000 - -kubernetes (1.2.4+dfsg-1) experimental; urgency=medium - - * New upstream release [May 2016]. - * New patch to print output of "uname -m" on unsupported architectures. - * New "docker.patch" to fix potential FTBFS. - + Build-Depends += "golang-github-docker-distribution-dev". - - -- Dmitry Smirnov Wed, 15 Jun 2016 21:03:01 +1000 - -kubernetes (1.2.3+dfsg-1) experimental; urgency=low - - * Initial release (Closes: #795652). - - -- Dmitry Smirnov Mon, 25 Apr 2016 22:40:12 +1000 - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/control b/kubernetes/kubernetes-1.21.8/debian/deb_folder/control deleted file mode 100644 index 3ecc6d89f..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/control +++ /dev/null @@ -1,90 +0,0 @@ -Source: kubernetes-1.21.8 -Section: admin -Priority: optional -Maintainer: StarlingX Developers -Build-Depends: debhelper-compat (= 13), - build-essential, - bash-completion, - jq, - rsync, - go-bindata, - go-md2man, - golang-1.16 -Standards-Version: 4.4.1 -Homepage: http://kubernetes.io/ - -Package: kubernetes-1.21.8-client -Provides: kubernetes-utils -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends} -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} -Description: Kubernetes Command Line Tool - The Kubernetes command line tool for interacting with the Kubernetes API. - -Package: kubernetes-1.21.8-master -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - adduser, - lsb-base, - etcd -Recommends: ${misc:Recommends}, kubernetes-1.21.8-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes services for master host - Container Cluster Manager from Google. Kubernetes is an open source system - for managing containerized applications across multiple hosts, providing - basic mechanisms for deployment, maintenance, and scaling of applications. - . - Linux kernel version 3.8 or above is required for proper operation of the - daemon process, and that any lower versions may have subtle and/or glaring - issues. - . - This package provides "kube-apiserver", "kube-controller-manager" and - "kube-scheduler" daemons. - -Package: kubernetes-1.21.8-node -Provides: cadvisor -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - adduser, - conntrack, - conntrackd, - docker.io, - lsb-base, - socat, -Recommends: ${misc:Recommends}, kubernetes-1.21.8-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes services for node host - Container Cluster Manager from Google. Kubernetes is an open source system - for managing containerized applications across multiple hosts, providing - basic mechanisms for deployment, maintenance, and scaling of applications. - . - Linux kernel version 3.8 or above is required for proper operation of the - daemon process, and that any lower versions may have subtle and/or glaring - issues. - -Package: kubernetes-1.21.8-kubeadm -Architecture: amd64 -Depends: ${misc:Depends}, containernetworking-plugins -Recommends: ${misc:Recommends}, kubernetes-1.21.8-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes Cluster Bootstrapping Tool - The Kubernetes command line tool for bootstrapping a Kubernetes cluster. - -Package: kubernetes-1.21.8-misc -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends} -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} -Description: dummy package - Kubernetes dummy package for misc stuff we don't want to install in production. - -Package: kubernetes-1.21.8-unit-test -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - hostname, - rsync, - etcd (>= 2.0.9), - network-manager, -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/copyright b/kubernetes/kubernetes-1.21.8/debian/deb_folder/copyright deleted file mode 100644 index 69f09302b..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/copyright +++ /dev/null @@ -1,470 +0,0 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: Kubernetes -Source: https://github.com/kubernetes/kubernetes - -Files: * -Copyright: - 2011-2016 Google Inc - 2014-2018 the Kubernetes Authors -License: Apache-2.0 -Comment: - examples/storage/mysql-galera/README.md - Copyrights in the above file are fragments of the sample output to console. - examples/storage/hazelcast/README.md - Copyrights in the above file are fragments of the sample output to console. - -Files: - vendor/github.com/coreos/rkt/api/v1alpha/* -Copyright: - 2015 The rkt Authors -License: Apache-2.0 - -Files: - third_party/forked/golang/* -Copyright: - 2009, 2012-2013 The Go Authors -License: BSD-3-Clause~Google - -Files: - third_party/protobuf/* -Copyright: 2008 Google Inc. -License: BSD-3-Clause~Google - -Files: - third_party/forked/shell2junit/* -Copyright: 2009 Manolo Carrasco (Manuel Carrasco Moñino) -License: Apache-2.0 - -Files: - third_party/htpasswd/* -Copyright: - 2008 Eli Carter - 2003-2013 Edgewall Software -License: BSD-3-Clause - -Files: - third_party/intemp/* -Copyright: - 2015 Karl Isenberg -License: Apache-2.0 - -Files: - third_party/swagger-ui/* -Copyright: - 2014 Reverb Technologies, Inc. -License: Apache-2.0 - -Files: - debian/missing-sources/backbone.js - third_party/swagger-ui/lib/backbone-min.js -Copyright: - 2010-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -License: Expat - -Files: - debian/missing-sources/handlebars.runtime-v2.0.0.js - third_party/swagger-ui/lib/handlebars*.js -Copyright: - 2011-2014 Yehuda Katz -License: Expat - -Files: - debian/missing-sources/highlight.js - third_party/swagger-ui/lib/highlight*.js -Copyright: - 2006, Ivan Sagalaev -License: BSD-3-Clause - -Files: - debian/missing-sources/jquery.js - third_party/swagger-ui/lib/jquery-1.8.0.min.js -Copyright: - 2012 jQuery Foundation and other contributors -License: Expat - -Files: - debian/missing-sources/jquery.ba-bbq.js - third_party/swagger-ui/lib/jquery.ba-bbq.min.js -Copyright: - 2010 "Cowboy" Ben Alman -License: Expat -Comment: Alternatively can be GPL-licensed. - -Files: - debian/missing-sources/jquery.slideto.js - third_party/swagger-ui/lib/jquery.slideto.min.js -Copyright: - 2015 Joakim Hedlund -License: Expat -Comment: https://github.com/Sleavely/jQuery-slideto/blob/master/LICENSE - -Files: - third_party/swagger-ui/lib/jquery.wiggle.min.js -Copyright: - WonderGroup, Jordan Thomas -License: Expat - -Files: - third_party/swagger-ui/lib/marked.js -Copyright: - 2011-2014 Christopher Jeffrey -License: Expat - -Files: - debian/missing-sources/underscore.js - third_party/swagger-ui/lib/underscore-min.js -Copyright: - 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -License: Expat - -Files: - third_party/swagger-ui/lib/shred.bundle.js - third_party/swagger-ui/lib/shred/content.js -Copyright: - 2012-2015 Panda Strike, LLC and Dan Yoder - Alexandru Marasteanu -License: ISC - -Files: - vendor/bitbucket.org/bertimus9/systemstat/* -Copyright: - 2013 Phillip Bond -License: Expat - -Files: - vendor/bitbucket.org/ww/goautoneg/* -Copyright: - 2011 Open Knowledge Foundation Ltd. -License: BSD-3-Clause~OKF - -Files: - vendor/github.com/Azure/azure-sdk-for-go/* -Copyright: - 2016 Microsoft Corporation -License: Apache-2.0 - -Files: - vendor/github.com/Azure/go-autorest/* -Copyright: - 2015 Microsoft Corporation -License: Apache-2.0 - -Files: - vendor/github.com/chai2010/gettext-go/* -Copyright: - 2013 ChaiShushan -License: BSD-3-Clause~Google - -Files: - vendor/github.com/clusterhq/flocker-go/* -Copyright: - 2014-2016 ClusterHQ -License: Apache-2.0 - -Files: - vendor/github.com/containernetworking/cni/* -Copyright: - 2015-2016 CNI authors -License: Apache-2.0 - -Files: - vendor/github.com/codedellemc/goscaleio/* -Copyright: Dell ??? -License: Apache-2.0 -Comment: https://github.com/thecodeteam/goscaleio/issues/32 - -Files: - vendor/github.com/fatih/camelcase/* -Copyright: 2015 Fatih Arslan -License: Expat - -Files: - vendor/github.com/heketi/heketi/* -Copyright: - 2015-2016 The heketi Authors -License: Apache-2.0 or LGPL-3+ or GPL-2 - -Files: - vendor/github.com/libopenstorage/openstorage/* -Copyright: 2015 Openstorage.org -License: Apache-2.0 - -Files: - vendor/github.com/rancher/go-rancher/* -Copyright: 2014-2015 Rancher Labs, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/rubiojr/go-vhd/* -Copyright: 2015 Sergio Rubio -License: Expat - -Files: - vendor/github.com/satori/uuid/* -Copyright: 2013-2016 Maxim Bublis -License: Expat - -Files: - vendor/github.com/dgrijalva/jwt-go/* -Copyright: - 2012 Dave Grijalva -License: Expat - -Files: - vendor/github.com/docker/distribution/* -Copyright: - 2014-2016 Docker, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/docker/docker/* -Copyright: - 2012-2016 Docker, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/gogo/protobuf/* -Copyright: - 2008 Google Inc. - 2010-2012, The Go Authors. - 2013, Vastech SA (PTY) LTD. -License: BSD-3-Clause - -Files: - vendor/github.com/golang/protobuf/* -Copyright: - 2008-2016, The Go Authors. - 2008 Google Inc. -License: BSD-3-Clause - -Files: - vendor/github.com/square/go-jose/* -Copyright: - 2014-2016 Square Inc. -License: Apache-2.0 - -Files: - vendor/github.com/square/go-jose/json/* -Copyright: - 2012 The Go Authors -License: BSD-3-Clause -Comment: The code is derived from the `encoding/json` package from Go 1.6 - -Files: - vendor/github.com/storageos/go-api/* -Copyright: 2015-2017 StorageOS -License: Expat - -Files: - vendor/github.com/storageos/go-api/client_unix.go - vendor/github.com/storageos/go-api/client_windows.go -Copyright: - 2013-2017 go-dockerclient authors -License: BSD-2-Clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - . - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Files: - vendor/google.golang.org/grpc/* -Copyright: - 2014-2016 Google Inc. -License: BSD-3-Clause - -Files: - debian/* -Copyright: - 2015-2019 Dmitry Smirnov - 2017 Tim Potter -License: GPL-3+ - -Files: debian/patches/* -Copyright: 2015-2016 Dmitry Smirnov -License: GPL-3+ or Apache-2.0 -Comment: patches can be licensed under the same terms as upstream. - -License: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - . - http://www.apache.org/licenses/LICENSE-2.0 - . - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - . - On Debian systems, the complete text of the Apache version 2.0 license - can be found in "/usr/share/common-licenses/Apache-2.0". - -License: BSD-3-Clause~Google - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - . - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: BSD-3-Clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: GPL-3+ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - ․ - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - ․ - The complete text of the GNU General Public License version 3 - can be found in "/usr/share/common-licenses/GPL-3". - -License: BSD-3-Clause~OKF - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - . - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - . - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - . - Neither the name of the Open Knowledge Foundation Ltd. nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior written - permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - the Software, and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - . - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -License: ISC - Permission to use, copy, modify, and/or distribute this software for - any purpose with or without fee is hereby granted, provided that the - above copyright notice and this permission notice appear in all - copies. - . - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - -License: LGPL-3+ - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - ․ - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - ․ - On Debian systems, the complete text of the GNU Lesser General Public - License Version 3 can be found in "/usr/share/common-licenses/LGPL-3". - -License: GPL-2 - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, version 2 of the License. - ․ - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - ․ - On Debian systems, the complete text of the GNU General Public - License Version 2 can be found in "/usr/share/common-licenses/GPL-2". diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/genmanpages.sh b/kubernetes/kubernetes-1.21.8/debian/deb_folder/genmanpages.sh deleted file mode 100644 index be2ef8f05..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/genmanpages.sh +++ /dev/null @@ -1,84 +0,0 @@ -MDSFORMANPAGES="kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md" - -# remove comments from man pages -for manpage in ${MDSFORMANPAGES}; do - pos=$(grep -n "<\!-- END MUNGE: UNVERSIONED_WARNING -->" ${manpage} | cut -d':' -f1) - if [ -n ${pos} ]; then - sed -i "1,${pos}{/.*/d}" ${manpage} - fi -done - -# for each man page add NAME and SYNOPSIS section -# kube-apiserver -sed -i -s "s/## kube-apiserver/# NAME\nkube-apiserver \- Provides the API for kubernetes orchestration.\n\n# SYNOPSIS\n**kube-apiserver** [OPTIONS]\n/" kube-apiserver.md - -cat << 'EOF' >> kube-apiserver.md -# EXAMPLES -``` -/usr/bin/kube-apiserver --logtostderr=true --v=0 --etcd_servers=http://127.0.0.1:4001 --insecure_bind_address=127.0.0.1 --insecure_port=8080 --kubelet_port=10250 --service-cluster-ip-range=10.1.1.0/24 --allow_privileged=false -``` -EOF -# kube-controller-manager -sed -i -s "s/## kube-controller-manager/# NAME\nkube-controller-manager \- Enforces kubernetes services.\n\n# SYNOPSIS\n**kube-controller-manager** [OPTIONS]\n/" kube-controller-manager.md - -cat << 'EOF' >> kube-controller-manager.md -# EXAMPLES -``` -/usr/bin/kube-controller-manager --logtostderr=true --v=0 --master=127.0.0.1:8080 -``` -EOF -# kube-proxy -sed -i -s "s/## kube-proxy/# NAME\nkube-proxy \- Provides network proxy services.\n\n# SYNOPSIS\n**kube-proxy** [OPTIONS]\n/" kube-proxy.md - -cat << 'EOF' >> kube-proxy.md -# EXAMPLES -``` -/usr/bin/kube-proxy --logtostderr=true --v=0 --master=http://127.0.0.1:8080 -``` -EOF -# kube-scheduler -sed -i -s "s/## kube-scheduler/# NAME\nkube-scheduler \- Schedules containers on hosts.\n\n# SYNOPSIS\n**kube-scheduler** [OPTIONS]\n/" kube-scheduler.md - -cat << 'EOF' >> kube-scheduler.md -# EXAMPLES -``` -/usr/bin/kube-scheduler --logtostderr=true --v=0 --master=127.0.0.1:8080 -``` -EOF -# kubelet -sed -i -s "s/## kubelet/# NAME\nkubelet \- Processes a container manifest so the containers are launched according to how they are described.\n\n# SYNOPSIS\n**kubelet** [OPTIONS]\n/" kubelet.md - -cat << 'EOF' >> kubelet.md -# EXAMPLES -``` -/usr/bin/kubelet --logtostderr=true --v=0 --api_servers=http://127.0.0.1:8080 --address=127.0.0.1 --port=10250 --hostname_override=127.0.0.1 --allow-privileged=false -``` -EOF - -# for all man-pages -for md in $MDSFORMANPAGES; do - # correct section names - sed -i -s "s/### Synopsis/# DESCRIPTION/" $md - sed -i -s "s/### Options/# OPTIONS/" $md - # add header - sed -i "s/# NAME/% KUBERNETES(1) kubernetes User Manuals\n# NAME/" $md - # modify list of options - # options with no value in "" - sed -i -r 's/(^ )(-[^":][^":]*)(:)(.*)/\*\*\2\*\*\n\t\4\n/' $md - # option with value in "" - sed -i -r 's/(^ )(-[^":][^":]*)("[^"]*")(:)(.*)/\*\*\2\3\*\*\n\t\5\n/' $md - # options in -s, --long - sed -i -r 's/(^ )(-[a-z], -[^":][^":]*)(:)(.*)/\*\*\2\*\*\n\t\4\n/' $md - sed -i -r 's/(^ )(-[a-z], -[^":][^":]*)("[^"]*")(:)(.*)/\*\*\2\3\*\*\n\t\5\n/' $md - # remove ``` - sed -i 's/```//' $md - # remove all lines starting with ###### - sed -i 's/^######.*//' $md - # modify footer - sed -i -r "s/^\[!\[Analytics\].*//" $md - # md does not contain section => taking 1 - name="${md%.md}" - go-md2man -in $md -out man/man1/$name.1 -done - - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubeadm.conf b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubeadm.conf deleted file mode 100644 index d8b77e9dc..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubeadm.conf +++ /dev/null @@ -1,18 +0,0 @@ -# Note: This dropin only works with kubeadm and kubelet v1.11+ -[Service] -Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" -Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" -# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically -EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env -# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use -# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. -EnvironmentFile=-/etc/default/kubelet -ExecStart= -ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS -ExecStartPre=-/usr/local/sbin/sanitize_kubelet_reserved_cpus.sh /etc/default/kubelet -ExecStartPre=-/usr/bin/kubelet-cgroup-setup.sh -ExecStartPost=/bin/bash -c 'echo $MAINPID > /var/run/kubelet.pid;' -ExecStopPost=/bin/rm -f /var/run/kubelet.pid -Restart=always -StartLimitInterval=0 -RestartSec=10 diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubelet-cgroup-setup.sh b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubelet-cgroup-setup.sh deleted file mode 100644 index 385314bfe..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubelet-cgroup-setup.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 Wind River Systems, Inc. -# -# SPDX-License-Identifier: Apache-2.0 -# -# This script does minimal cgroup setup for kubelet. This creates k8s-infra -# cgroup for a minimal set of resource controllers, and configures cpuset -# attributes to span all online cpus and nodes. This will do nothing if -# the k8s-infra cgroup already exists (i.e., assume already configured). -# NOTE: The creation of directories under /sys/fs/cgroup is volatile, and -# does not persist reboots. The cpuset.mems and cpuset.cpus is later updated -# by puppet kubernetes.pp manifest. -# - -# Define minimal path -PATH=/bin:/usr/bin:/usr/local/bin - -# Log info message to /var/log/daemon.log -function LOG { - logger -p daemon.info "$0($$): $@" -} - -# Log error message to /var/log/daemon.log -function ERROR { - logger -s -p daemon.error "$0($$): ERROR: $@" -} - -# Create minimal cgroup directories and configure cpuset attributes if required -function create_cgroup { - local cg_name=$1 - local cg_nodeset=$2 - local cg_cpuset=$3 - - local CGROUP=/sys/fs/cgroup - local CONTROLLERS_AUTO_DELETED=("pids" "hugetlb") - local CONTROLLERS_PRESERVED=("cpuset" "memory" "cpu,cpuacct" "systemd") - local cnt='' - local CGDIR='' - local RC=0 - - # Ensure that these cgroups are created every time as they are auto deleted - for cnt in ${CONTROLLERS_AUTO_DELETED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - continue - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # These cgroups are preserved so if any of these are encountered additional - # cgroup setup is not required - for cnt in ${CONTROLLERS_PRESERVED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - exit ${RC} - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # Customize cpuset attributes - LOG "Configuring cgroup: ${cg_name}, nodeset: ${cg_nodeset}, cpuset: ${cg_cpuset}" - CGDIR=${CGROUP}/cpuset/${cg_name} - local CGMEMS=${CGDIR}/cpuset.mems - local CGCPUS=${CGDIR}/cpuset.cpus - local CGTASKS=${CGDIR}/tasks - - # Assign cgroup memory nodeset - LOG "Assign nodeset ${cg_nodeset} to ${CGMEMS}" - /bin/echo ${cg_nodeset} > ${CGMEMS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Unable to write to: ${CGMEMS}, rc=${RC}" - exit ${RC} - fi - - # Assign cgroup cpus - LOG "Assign cpuset ${cg_cpuset} to ${CGCPUS}" - /bin/echo ${cg_cpuset} > ${CGCPUS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Assigning: ${cg_cpuset} to ${CGCPUS}, rc=${RC}" - exit ${RC} - fi - - # Set file ownership - chown root:root ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting owner for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - # Set file mode permissions - chmod 644 ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting mode for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - return ${RC} -} - -if [ $UID -ne 0 ]; then - ERROR "Require sudo/root." - exit 1 -fi - -# Configure default kubepods cpuset to span all online cpus and nodes. -ONLINE_NODESET=$(/bin/cat /sys/devices/system/node/online) -ONLINE_CPUSET=$(/bin/cat /sys/devices/system/cpu/online) - -# Configure kubelet cgroup to match cgroupRoot. -create_cgroup 'k8s-infra' ${ONLINE_NODESET} ${ONLINE_CPUSET} - -exit $? - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-client.install b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-client.install deleted file mode 100644 index 017ceaecc..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-client.install +++ /dev/null @@ -1,3 +0,0 @@ -usr/local/kubernetes/1.21.8/stage2/usr/bin/kubectl -usr/local/kubernetes/1.21.8/stage2/usr/share/bash-completion/completions/kubectl - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-client.lintian-overrides b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-client.lintian-overrides deleted file mode 100644 index 160b6783b..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-client.lintian-overrides +++ /dev/null @@ -1,9 +0,0 @@ -## Generated man pages: TODO -manpage-has-bad-whatis-entry usr/share/man/* -manpage-has-errors-from-man usr/share/man/man1/* - -## Bash-completion script does not have to be executable: -script-not-executable usr/share/bash-completion/completions/kubectl - -## Override annoying/useless messages -kubernetes-client: spelling-error-in-binary diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-kubeadm.dirs b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-kubeadm.dirs deleted file mode 100644 index 27b204661..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-kubeadm.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/local/kubernetes/1.21.8/stage2/etc/systemd/system/kubelet.service.d/ diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-kubeadm.install b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-kubeadm.install deleted file mode 100644 index a66cb2506..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-kubeadm.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/local/kubernetes/1.21.8/stage1/usr/bin/kubeadm -usr/local/kubernetes/1.21.8/stage2/etc/systemd/system/kubelet.service.d/kubeadm.conf diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.dirs b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.dirs deleted file mode 100644 index ae3e54bad..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.dirs +++ /dev/null @@ -1,5 +0,0 @@ -etc/kubernetes-1.21.8 -etc/kubernetes-1.21.8/addons -etc/kubernetes-1.21.8/addons/volumesnapshots -etc/kubernetes-1.21.8/addons/volumesnapshots/crd -etc/kubernetes-1.21.8/addons/volumesnapshots/volume-snapshot-controller diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.install b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.install deleted file mode 100644 index c6643e957..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.install +++ /dev/null @@ -1,8 +0,0 @@ -usr/bin/kube-apiserver -usr/bin/kube-controller-manager -usr/bin/kube-scheduler -etc/kubernetes-1.21.8/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml -etc/kubernetes-1.21.8/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml -etc/kubernetes-1.21.8/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshots.yaml -etc/kubernetes-1.21.8/addons/volumesnapshots/volume-snapshot-controller/volume-snapshot-controller-deployment.yaml -etc/kubernetes-1.21.8/addons/volumesnapshots/volume-snapshot-controller/rbac-volume-snapshot-controller.yaml diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.lintian-overrides b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.lintian-overrides deleted file mode 100644 index f73c63ffd..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-master.lintian-overrides +++ /dev/null @@ -1,7 +0,0 @@ -## No manual page for hyperkube -kubernetes-master: binary-without-manpage usr/bin/hyperkube - -## Override annoying/useless messages -kubernetes-master: spelling-error-in-binary -kubernetes-master: manpage-has-errors-from-man usr/share/man/man1/* -kubernetes-master: manpage-has-bad-whatis-entry usr/share/man/man1/* diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-misc.install b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-misc.install deleted file mode 100644 index 8aa6d765e..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-misc.install +++ /dev/null @@ -1,11 +0,0 @@ -#TODO with genmanpages -#usr/share/man/man1/kube-apiserver.1* -#usr/share/man/man1/kube-controller-manager.1* -#usr/share/man/man1/kube-scheduler.1* -#usr/share/man/man1/kube-proxy.1* -usr/bin/kube-proxy -#usr/share/man/man1/kubelet.1* -#usr/share/man/man1/kubeadm.1* -#usr/share/man/man1/kubeadm-* -#usr/share/man/man1/kubectl.1* -#usr/share/man/man1/kubectl-* diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-node.install b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-node.install deleted file mode 100644 index eca404532..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-node.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/local/kubernetes/1.21.8/stage2/usr/bin/kubelet -usr/local/kubernetes/1.21.8/stage2/usr/bin/kubelet-cgroup-setup.sh diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-node.lintian-overrides b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-node.lintian-overrides deleted file mode 100644 index 99d470def..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-node.lintian-overrides +++ /dev/null @@ -1,4 +0,0 @@ -## Override annoying/useless messages -kubernetes-node: spelling-error-in-binary -kubernetes-node: manpage-has-errors-from-man usr/share/man/man1/* -kubernetes-node: manpage-has-bad-whatis-entry usr/share/man/man1/* diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-unit-test.install b/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-unit-test.install deleted file mode 100644 index da8847677..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/kubernetes-1.21.8-unit-test.install +++ /dev/null @@ -1,2 +0,0 @@ -var/lib/kubernetes-unit-test/ - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch b/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch deleted file mode 100644 index 8366002e7..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch +++ /dev/null @@ -1,117 +0,0 @@ -From b90e3858a8d319c7526dd8190ee05edce24ba072 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Thu, 9 Sep 2021 13:16:26 -0400 -Subject: [PATCH 7/7] Revert "use subpath for coredns only for default - repository" - -This reverts commit 38a41e1557649a7cc763bf737779db9aa03ec75e. ---- - cmd/kubeadm/app/constants/constants.go | 2 +- - cmd/kubeadm/app/images/images.go | 5 --- - cmd/kubeadm/app/images/images_test.go | 50 -------------------------- - 3 files changed, 1 insertion(+), 56 deletions(-) - -diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go -index aed3a713020..3cb2d11ad45 100644 ---- a/cmd/kubeadm/app/constants/constants.go -+++ b/cmd/kubeadm/app/constants/constants.go -@@ -328,7 +328,7 @@ const ( - CoreDNSDeploymentName = "coredns" - - // CoreDNSImageName specifies the name of the image for CoreDNS add-on -- CoreDNSImageName = "coredns" -+ CoreDNSImageName = "coredns/coredns" - - // CoreDNSVersion is the version of CoreDNS to be deployed if it is used - CoreDNSVersion = "v1.8.0" -diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go -index 7ada3b75018..edf087e9c46 100644 ---- a/cmd/kubeadm/app/images/images.go -+++ b/cmd/kubeadm/app/images/images.go -@@ -21,7 +21,6 @@ import ( - - "k8s.io/klog/v2" - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" - ) -@@ -53,10 +52,6 @@ func GetDNSImage(cfg *kubeadmapi.ClusterConfiguration) string { - if cfg.DNS.ImageRepository != "" { - dnsImageRepository = cfg.DNS.ImageRepository - } -- // Handle the renaming of the official image from "k8s.gcr.io/coredns" to "k8s.gcr.io/coredns/coredns -- if dnsImageRepository == kubeadmapiv1beta2.DefaultImageRepository { -- dnsImageRepository = fmt.Sprintf("%s/coredns", dnsImageRepository) -- } - // DNS uses an imageTag that corresponds to the DNS version matching the Kubernetes version - dnsImageTag := constants.GetDNSVersion(cfg.DNS.Type) - -diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go -index e5b417bcdc7..f5165406e0f 100644 ---- a/cmd/kubeadm/app/images/images_test.go -+++ b/cmd/kubeadm/app/images/images_test.go -@@ -22,7 +22,6 @@ import ( - "testing" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - ) - -@@ -238,52 +237,3 @@ func TestGetAllImages(t *testing.T) { - }) - } - } -- --func TestGetDNSImage(t *testing.T) { -- var tests = []struct { -- expected string -- cfg *kubeadmapi.ClusterConfiguration -- }{ -- { -- expected: "foo.io/coredns:v1.8.0", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: kubeadmapiv1beta2.DefaultImageRepository + "/coredns/coredns:v1.8.0", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: kubeadmapiv1beta2.DefaultImageRepository, -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: "foo.io/coredns/coredns:v1.8.0", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- ImageMeta: kubeadmapi.ImageMeta{ -- ImageRepository: "foo.io/coredns", -- }, -- }, -- }, -- }, -- } -- -- for _, test := range tests { -- actual := GetDNSImage(test.cfg) -- if actual != test.expected { -- t.Errorf( -- "failed to GetDNSImage:\n\texpected: %s\n\t actual: %s", -- test.expected, -- actual, -- ) -- } -- } --} --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch b/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch deleted file mode 100644 index 33d238177..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch +++ /dev/null @@ -1,79 +0,0 @@ -From a0011e7749f7e54d3f1a689e717ded88e284860f Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 23 Oct 2020 17:46:10 -0600 -Subject: [PATCH 6/7] enable support for kubernetes to ignore isolcpus - -The normal mechanisms for allocating isolated CPUs do not allow -a mix of isolated and exclusive CPUs in the same container. In -order to allow this in *very* limited cases where the pod spec -is known in advance we will add the ability to disable the normal -isolcpus behaviour. - -If the file "/etc/kubernetes/ignore_isolcpus" exists, then kubelet -will basically forget everything it knows about isolcpus and just -treat them like regular CPUs. - -The admin user can then rely on the fact that CPU allocation is -deterministic to ensure that the isolcpus they configure end up being -allocated to the correct pods. ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 9 +++++++++ - pkg/kubelet/cm/cpumanager/policy_static.go | 8 ++++++++ - 2 files changed, 17 insertions(+) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 2563f61e7b5..1b226187fef 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -19,6 +19,7 @@ package cpumanager - import ( - "fmt" - "math" -+ "os" - "sync" - "time" - "strings" -@@ -55,6 +56,14 @@ const cpuManagerStateFileName = "cpu_manager_state" - - // get the system-level isolated CPUs - func getIsolcpus() cpuset.CPUSet { -+ -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ klog.Infof("[cpumanager] turning off isolcpus awareness") -+ return cpuset.NewCPUSet() -+ } -+ - dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") - if err != nil { - klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 2ad14a98911..73b74d5c4cc 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "os" - "strconv" - - v1 "k8s.io/api/core/v1" -@@ -613,6 +614,13 @@ func isKubeInfra(pod *v1.Pod) bool { - - // get the isolated CPUs (if any) from the devices associated with a specific container - func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ return cpuset.NewCPUSet() -+ } -+ - // NOTE: This is required for TestStaticPolicyAdd() since makePod() does - // not create UID. We also need a way to properly stub devicemanager. - if len(string(pod.UID)) == 0 { --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch b/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch deleted file mode 100644 index f52fc18b2..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch +++ /dev/null @@ -1,108 +0,0 @@ -From de653bd0823b248d623a39c17a3872e85ce952b0 Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 3 Sep 2021 18:05:15 -0400 -Subject: [PATCH 5/7] kubeadm: create platform pods with zero CPU resources - -We want to specify zero CPU resources when creating the manifests -for the static platform pods, as a workaround for the lack of -separate resource tracking for platform resources. - -We also specify zero CPU resources for the coredns deployment. -manifests.go appears to be the main file for this, not sure if the -others are used but I changed them just in case. - -Signed-off-by: Jim Gauld ---- - cluster/addons/dns/coredns/coredns.yaml.base | 2 +- - cluster/addons/dns/coredns/coredns.yaml.in | 2 +- - cluster/addons/dns/coredns/coredns.yaml.sed | 2 +- - cmd/kubeadm/app/phases/addons/dns/manifests.go | 2 +- - cmd/kubeadm/app/phases/controlplane/manifests.go | 6 +++--- - 5 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/cluster/addons/dns/coredns/coredns.yaml.base b/cluster/addons/dns/coredns/coredns.yaml.base -index 4ee054f8ba5..d2b58f4af0e 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.base -+++ b/cluster/addons/dns/coredns/coredns.yaml.base -@@ -138,7 +138,7 @@ spec: - limits: - memory: __DNS__MEMORY__LIMIT__ - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.in b/cluster/addons/dns/coredns/coredns.yaml.in -index 1f791e447c9..ff03a801646 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.in -+++ b/cluster/addons/dns/coredns/coredns.yaml.in -@@ -138,7 +138,7 @@ spec: - limits: - memory: 'dns_memory_limit' - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.sed b/cluster/addons/dns/coredns/coredns.yaml.sed -index 4d64278aaa4..38fc9196b28 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.sed -+++ b/cluster/addons/dns/coredns/coredns.yaml.sed -@@ -138,7 +138,7 @@ spec: - limits: - memory: $DNS_MEMORY_LIMIT - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/addons/dns/manifests.go b/cmd/kubeadm/app/phases/addons/dns/manifests.go -index 3ac6856bfc6..0763b4c63db 100644 ---- a/cmd/kubeadm/app/phases/addons/dns/manifests.go -+++ b/cmd/kubeadm/app/phases/addons/dns/manifests.go -@@ -95,7 +95,7 @@ spec: - limits: - memory: 170Mi - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/controlplane/manifests.go b/cmd/kubeadm/app/phases/controlplane/manifests.go -index 8181bea63a4..4c4b4448dd4 100644 ---- a/cmd/kubeadm/app/phases/controlplane/manifests.go -+++ b/cmd/kubeadm/app/phases/controlplane/manifests.go -@@ -60,7 +60,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS), - ReadinessProbe: staticpodutil.ReadinessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/readyz", int(endpoint.BindPort), v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("250m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeAPIServer), - map[string]string{kubeadmconstants.KubeAPIServerAdvertiseAddressEndpointAnnotationKey: endpoint.String()}), -@@ -72,7 +72,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeControllerManager)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("200m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeControllerManager), nil), - kubeadmconstants.KubeScheduler: staticpodutil.ComponentPod(v1.Container{ -@@ -83,7 +83,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeScheduler)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("100m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeScheduler), nil), - } --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch b/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch deleted file mode 100644 index 7bfa73162..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch +++ /dev/null @@ -1,256 +0,0 @@ -From 3f69868f7bca99f6875dd4d197b3a974d1b558ed Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Wed, 22 Sep 2021 10:09:06 -0400 -Subject: [PATCH 1/7] kubelet cpumanager disable CFS quota throttling for - Guaranteed pods - -This disables CFS CPU quota to avoid performance degradation due to -Linux kernel CFS quota implementation. Note that 4.18 kernel attempts -to solve the CFS throttling problem, but there are reports that it is -not completely effective. - -This disables CFS quota throttling for Guaranteed pods for both -parent and container cgroups by writing -1 to cgroup cpu.cfs_quota_us. -Disabling has a dramatic latency improvement for HTTP response times. - -This patch is refactored in 1.21.3 due to new internal_container_lifecycle -framework. We leverage the same mechanism to set Linux resources as: -cpu manager: specify the container CPU set during the creation -(commit 38dc7509f862f081828e7d9167107b8c6e98ea23). - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 7 ++++ - pkg/kubelet/cm/cpumanager/fake_cpu_manager.go | 6 +++ - pkg/kubelet/cm/helpers_linux.go | 10 +++++ - pkg/kubelet/cm/helpers_linux_test.go | 42 ++++++++++--------- - .../cm/internal_container_lifecycle_linux.go | 9 ++++ - 5 files changed, 54 insertions(+), 20 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 5a6e5082f15..f7b9c8d07bf 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -72,6 +72,9 @@ type Manager interface { - // State returns a read-only interface to the internal CPU manager state. - State() state.Reader - -+ // GetCPUPolicy returns the assigned CPU manager policy -+ GetCPUPolicy() string -+ - // GetTopologyHints implements the topologymanager.HintProvider Interface - // and is consulted to achieve NUMA aware resource alignment among this - // and other resource controllers. -@@ -291,6 +294,10 @@ func (m *manager) State() state.Reader { - return m.state - } - -+func (m *manager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *manager) GetTopologyHints(pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - // Garbage collect any stranded resources before providing TopologyHints - m.removeStaleState() -diff --git a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -index 2c38b52b374..1cb0ea10923 100644 ---- a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -@@ -28,6 +28,7 @@ import ( - ) - - type fakeManager struct { -+ policy Policy - state state.State - } - -@@ -69,6 +70,10 @@ func (m *fakeManager) State() state.Reader { - return m.state - } - -+func (m *fakeManager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *fakeManager) GetCPUs(podUID, containerName string) cpuset.CPUSet { - klog.InfoS("GetCPUs", "podUID", podUID, "containerName", containerName) - return cpuset.CPUSet{} -@@ -82,6 +87,7 @@ func (m *fakeManager) GetAllocatableCPUs() cpuset.CPUSet { - // NewFakeManager creates empty/fake cpu manager - func NewFakeManager() Manager { - return &fakeManager{ -+ policy: &nonePolicy{}, - state: state.NewMemoryState(), - } - } -diff --git a/pkg/kubelet/cm/helpers_linux.go b/pkg/kubelet/cm/helpers_linux.go -index aa5c37639dc..302284ef408 100644 ---- a/pkg/kubelet/cm/helpers_linux.go -+++ b/pkg/kubelet/cm/helpers_linux.go -@@ -169,6 +169,16 @@ func ResourceConfigForPod(pod *v1.Pod, enforceCPULimits bool, cpuPeriod uint64) - // build the result - result := &ResourceConfig{} - if qosClass == v1.PodQOSGuaranteed { -+ // Disable CFS CPU quota to avoid performance degradation due to -+ // Linux kernel CFS throttle implementation. -+ // NOTE: 4.18 kernel attempts to solve CFS throttling problem, -+ // but there are reports that it is not completely effective. -+ // This will configure cgroup CFS parameters at pod level: -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_period_us -+ cpuQuota = int64(-1) -+ cpuPeriod = uint64(100000) -+ - result.CpuShares = &cpuShares - result.CpuQuota = &cpuQuota - result.CpuPeriod = &cpuPeriod -diff --git a/pkg/kubelet/cm/helpers_linux_test.go b/pkg/kubelet/cm/helpers_linux_test.go -index 56d765fbc22..8c7309937dd 100644 ---- a/pkg/kubelet/cm/helpers_linux_test.go -+++ b/pkg/kubelet/cm/helpers_linux_test.go -@@ -63,8 +63,9 @@ func TestResourceConfigForPod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -203,8 +204,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -217,8 +218,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -231,8 +232,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -245,8 +246,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -@@ -283,8 +284,9 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -423,8 +425,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -437,8 +439,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -451,8 +453,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -465,8 +467,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -diff --git a/pkg/kubelet/cm/internal_container_lifecycle_linux.go b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -index 9cf41620b8c..fa15dbe1671 100644 ---- a/pkg/kubelet/cm/internal_container_lifecycle_linux.go -+++ b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -@@ -19,10 +19,12 @@ limitations under the License. - package cm - - import ( -+ //"fmt" - "strconv" - "strings" - - "k8s.io/api/core/v1" -+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos" - runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" - ) - -@@ -32,6 +34,13 @@ func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, contain - if !allocatedCPUs.IsEmpty() { - containerConfig.Linux.Resources.CpusetCpus = allocatedCPUs.String() - } -+ // Disable cgroup CFS throttle at the container level. -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_period_us -+ if i.cpuManager.GetCPUPolicy() == "static" && v1qos.GetPodQOS(pod) == v1.PodQOSGuaranteed { -+ containerConfig.Linux.Resources.CpuPeriod = int64(100000) -+ containerConfig.Linux.Resources.CpuQuota = int64(-1) -+ } - } - - if i.memoryManager != nil { --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-infrastructure-pods-use-system-re.patch b/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-infrastructure-pods-use-system-re.patch deleted file mode 100644 index c982eac1f..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-infrastructure-pods-use-system-re.patch +++ /dev/null @@ -1,139 +0,0 @@ -From 66f4a61ce77624dcc0b520e01fccacec61dfea37 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Tue, 7 Sep 2021 14:21:03 -0400 -Subject: [PATCH 3/7] kubelet cpumanager infrastructure pods use system - reserved CPUs - -This assigns system infrastructure pods to the "reserved" cpuset -to isolate them from the shared pool of CPUs. - -Infrastructure pods include any pods that belong to the kube-system, -armada, cert-manager, vault, platform-deployment-manager, portieris, -notification, flux-helm or metrics-server namespaces. - -The implementation is a bit simplistic, it is assumed that the -"reserved" cpuset is large enough to handle all infrastructure pods -CPU allocations. - -This also prevents infrastucture pods from using Guaranteed resources. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/policy_static.go | 44 +++++++++++++++++++ - .../cm/cpumanager/policy_static_test.go | 19 +++++++- - 2 files changed, 62 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 94d81796132..b48a5b997a3 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -32,6 +32,11 @@ import ( - // PolicyStatic is the name of the static policy - const PolicyStatic policyName = "static" - -+// Define namespaces used by platform infrastructure pods -+var infraNamespaces = [...]string{ -+ "kube-system", "armada", "cert-manager", "platform-deployment-manager", "portieris", "vault", "notification", "flux-helm", "metrics-server", -+} -+ - // staticPolicy is a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. -@@ -232,6 +237,31 @@ func (p *staticPolicy) updateCPUsToReuse(pod *v1.Pod, container *v1.Container, c - } - - func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Container) error { -+ // Process infra pods before guaranteed pods -+ if isKubeInfra(pod) { -+ // Container belongs in reserved pool. -+ // We don't want to fall through to the p.guaranteedCPUs() clause below so return either nil or error. -+ if _, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ klog.Infof("[cpumanager] static policy: reserved container already present in state, skipping " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } -+ -+ cpuset := p.reserved -+ if cpuset.IsEmpty() { -+ // If this happens then someone messed up. -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ } -+ s.SetCPUSet(string(pod.UID), container.Name, cpuset) -+ klog.Infof("[cpumanager] static policy: reserved: AddContainer " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -+ return nil -+ } -+ - if numCPUs := p.guaranteedCPUs(pod, container); numCPUs != 0 { - klog.InfoS("Static policy: Allocate", "pod", klog.KObj(pod), "containerName", container.Name) - // container belongs in an exclusively allocated pool -@@ -321,6 +351,10 @@ func (p *staticPolicy) guaranteedCPUs(pod *v1.Pod, container *v1.Container) int - if cpuQuantity.Value()*1000 != cpuQuantity.MilliValue() { - return 0 - } -+ // Infrastructure pods use reserved CPUs even if they're in the Guaranteed QoS class -+ if isKubeInfra(pod) { -+ return 0 -+ } - // Safe downcast to do for all systems with < 2.1 billion CPUs. - // Per the language spec, `int` is guaranteed to be at least 32 bits wide. - // https://golang.org/ref/spec#Numeric_types -@@ -523,3 +557,13 @@ func (p *staticPolicy) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, reu - - return hints - } -+ -+// check if a given pod is in a platform infrastructure namespace -+func isKubeInfra(pod *v1.Pod) bool { -+ for _, namespace := range infraNamespaces { -+ if namespace == pod.Namespace { -+ return true -+ } -+ } -+ return false -+} -\ No newline at end of file -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 93a2870532a..90ad98e71bc 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -747,7 +747,8 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - } - - func TestStaticPolicyAddWithResvList(t *testing.T) { -- -+ infraPod := makePod("fakePod", "fakeContainer2", "200m", "200m") -+ infraPod.Namespace = "kube-system" - testCases := []staticPolicyTestWithResvList{ - { - description: "GuPodSingleCore, SingleSocketHT, ExpectError", -@@ -789,6 +790,22 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(4, 5), - }, -+ { -+ description: "InfraPod, SingleSocketHT, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0, 1), -+ }, - } - - testExcl := true --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch b/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch deleted file mode 100644 index ce24ca649..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch +++ /dev/null @@ -1,535 +0,0 @@ -From 81a6d41690c45b168034df04df0199cd5abe60e9 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Wed, 8 Sep 2021 09:28:40 -0400 -Subject: [PATCH 4/7] kubelet cpumanager introduce concept of isolated CPUs - -This introduces the concept of "isolated CPUs", which are CPUs that -have been isolated at the kernel level via the "isolcpus" kernel boot -parameter. - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via -'--system-reserved=cpu' will be used for infrastructure pods while the -isolated CPUs should be reserved via '--kube-reserved=cpu' to cause -kubelet to skip over them for "normal" CPU resource tracking. The -kubelet code will double-check that the specified isolated CPUs match -what the kernel exposes in "/sys/devices/system/cpu/isolated". - -A plugin (outside the scope of this commit) will expose the isolated -CPUs to kubelet via the device plugin API. - -If a pod specifies some number of "isolcpus" resources, the device -manager will allocate them. In this code we check whether such -resources have been allocated, and if so we set the container cpuset to -the isolated CPUs. This does mean that it really only makes sense to -specify "isolcpus" resources for best-effort or burstable pods, not for -guaranteed ones since that would throw off the accounting code. In -order to ensure the accounting still works as designed, if "isolcpus" -are specified for guaranteed pods, the affinity will be set to the -non-isolated CPUs. - -This patch was refactored in 1.21.3 due to upstream API change -node: podresources: make GetDevices() consistent -(commit ad68f9588c72d6477b5a290c548a9031063ac659). - -The routine podIsolCPUs() was refactored in 1.21.3 since the API -p.deviceManager.GetDevices() is returning multiple devices with -a device per cpu. The resultant cpuset needs to be the aggregate. - -Signed-off-by: Jim Gauld -Co-authored-by: Chris Friesen ---- - pkg/kubelet/cm/container_manager_linux.go | 1 + - pkg/kubelet/cm/cpumanager/cpu_manager.go | 31 ++++++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 13 ++- - pkg/kubelet/cm/cpumanager/policy_static.go | 85 +++++++++++++++++-- - .../cm/cpumanager/policy_static_test.go | 44 ++++++++-- - 5 files changed, 156 insertions(+), 18 deletions(-) - -diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go -index e7bed73fc69..d74a6339939 100644 ---- a/pkg/kubelet/cm/container_manager_linux.go -+++ b/pkg/kubelet/cm/container_manager_linux.go -@@ -337,6 +337,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I - cm.GetNodeAllocatableReservation(), - nodeConfig.KubeletRootDir, - cm.topologyManager, -+ cm.deviceManager, - ) - if err != nil { - klog.ErrorS(err, "Failed to initialize cpu manager") -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 5b82e5b02ac..2563f61e7b5 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -21,6 +21,8 @@ import ( - "math" - "sync" - "time" -+ "strings" -+ "io/ioutil" - - cadvisorapi "github.com/google/cadvisor/info/v1" - v1 "k8s.io/api/core/v1" -@@ -34,6 +36,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" - "k8s.io/kubernetes/pkg/kubelet/status" - ) -@@ -50,6 +53,25 @@ type policyName string - // cpuManagerStateFileName is the file name where cpu manager stores its state - const cpuManagerStateFileName = "cpu_manager_state" - -+// get the system-level isolated CPUs -+func getIsolcpus() cpuset.CPUSet { -+ dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -+ return cpuset.NewCPUSet() -+ } -+ -+ // The isolated cpus string ends in a newline -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cset, err := cpuset.Parse(cpustring) -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to parse sysfs isolcpus string to cpuset") -+ return cpuset.NewCPUSet() -+ } -+ -+ return cset -+} -+ - // Manager interface provides methods for Kubelet to manage pod cpus. - type Manager interface { - // Start is called during Kubelet initialization. -@@ -143,7 +165,7 @@ func (s *sourcesReadyStub) AddSource(source string) {} - func (s *sourcesReadyStub) AllReady() bool { return true } - - // NewManager creates new cpu manager based on provided policy --func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store) (Manager, error) { -+func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store, deviceManager devicemanager.Manager) (Manager, error) { - var topo *topology.CPUTopology - var policy Policy - -@@ -181,8 +203,11 @@ func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo - // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. - // This variable is primarily to make testing easier. - excludeReserved := true -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, excludeReserved) -- -+ // isolCPUs is the set of kernel-isolated CPUs. They should be a subset of specificCPUs or -+ // of the CPUs that NewStaticPolicy() will pick if numReservedCPUs is set. It's only in the -+ // argument list here for ease of testing, it's really internal to the policy. -+ isolCPUs := getIsolcpus() -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, isolCPUs, affinity, deviceManager, excludeReserved) - if err != nil { - return nil, fmt.Errorf("new static policy error: %v", err) - } -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index a2e73de6875..4c021634d6f 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -38,6 +38,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - ) - - type mockState struct { -@@ -215,6 +216,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ -@@ -230,7 +232,9 @@ func TestCPUManagerAdd(t *testing.T) { - }, - 0, - cpuset.NewCPUSet(), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), -+ testDM, - testExcl) - testCases := []struct { - description string -@@ -480,8 +484,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - } - - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -635,7 +640,8 @@ func TestCPUManagerGenerate(t *testing.T) { - } - defer os.RemoveAll(sDir) - -- mgr, err := NewManager(testCase.cpuPolicyName, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager()) -+ testDM, err := devicemanager.NewManagerStub() -+ mgr, err := NewManager(testCase.cpuPolicyName, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager(), testDM) - if testCase.expectedError != nil { - if !strings.Contains(err.Error(), testCase.expectedError.Error()) { - t.Errorf("Unexpected error message. Have: %s wants %s", err.Error(), testCase.expectedError.Error()) -@@ -990,6 +996,7 @@ func TestReconcileState(t *testing.T) { - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1004,7 +1011,9 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - }, - 1, - cpuset.NewCPUSet(0), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), -+ testDM, - testExcl) - testCases := []struct { - description string -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index b48a5b997a3..2ad14a98911 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "strconv" - - v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" -@@ -27,6 +28,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - ) - - // PolicyStatic is the name of the static policy -@@ -80,6 +82,10 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // subset of reserved CPUs with isolcpus attribute -+ isolcpus cpuset.CPUSet -+ // parent containerManager, used to get device list -+ deviceManager devicemanager.Manager - // If true, default CPUSet should exclude reserved CPUs - excludeReserved bool - // topology manager reference to get container Topology affinity -@@ -94,7 +100,7 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, excludeReserved bool) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, isolCPUs cpuset.CPUSet, affinity topologymanager.Store, deviceManager devicemanager.Manager, excludeReserved bool) (Policy, error) { - allCPUs := topology.CPUDetails.CPUs() - var reserved cpuset.CPUSet - if reservedCPUs.Size() > 0 { -@@ -115,9 +121,17 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - - klog.InfoS("Reserved CPUs not available for exclusive assignment", "reservedSize", reserved.Size(), "reserved", reserved) - -+ if !isolCPUs.IsSubsetOf(reserved) { -+ klog.Errorf("[cpumanager] isolCPUs %v is not a subset of reserved %v", isolCPUs, reserved) -+ reserved = reserved.Union(isolCPUs) -+ klog.Warningf("[cpumanager] mismatch isolCPUs %v, force reserved %v", isolCPUs, reserved) -+ } -+ - return &staticPolicy{ - topology: topology, - reserved: reserved, -+ isolcpus: isolCPUs, -+ deviceManager: deviceManager, - excludeReserved: excludeReserved, - affinity: affinity, - cpusToReuse: make(map[string]cpuset.CPUSet), -@@ -154,8 +168,8 @@ func (p *staticPolicy) validateState(s state.State) error { - } else { - s.SetDefaultCPUSet(allCPUs) - } -- klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -- allCPUs, p.reserved, s.GetDefaultCPUSet()) -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, isolcpus:%v, default:%v\n", -+ allCPUs, p.reserved, p.isolcpus, s.GetDefaultCPUSet()) - return nil - } - -@@ -248,12 +262,12 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - return nil - } - -- cpuset := p.reserved -+ cpuset := p.reserved.Clone().Difference(p.isolcpus) - if cpuset.IsEmpty() { - // If this happens then someone messed up. - return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus " + -- "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", -- pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v, isolcpus:%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved, p.isolcpus) - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - klog.Infof("[cpumanager] static policy: reserved: AddContainer " + -@@ -284,8 +298,37 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - p.updateCPUsToReuse(pod, container, cpuset) -+ klog.Infof("[cpumanager] guaranteed: AddContainer " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); numCPUS=%d, cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, numCPUs, cpuset) -+ return nil -+ } - -+ if isolcpus := p.podIsolCPUs(pod, container); isolcpus.Size() > 0 { -+ // container has requested isolated CPUs -+ if set, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ if set.Equals(isolcpus) { -+ klog.Infof("[cpumanager] isolcpus container already present in state, skipping " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } else { -+ klog.Infof("[cpumanager] isolcpus container state has cpus %v, should be %v" + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ isolcpus, set, pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ } -+ } -+ // Note that we do not do anything about init containers here. -+ // It looks like devices are allocated per-pod based on effective requests/limits -+ // and extra devices from initContainers are not freed up when the regular containers start. -+ // TODO: confirm this is still true for 1.20 -+ s.SetCPUSet(string(pod.UID), container.Name, isolcpus) -+ klog.Infof("[cpumanager] isolcpus: AddContainer " + -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, isolcpus) -+ return nil - } -+ - // container belongs in the shared pool (nothing to do; use default cpuset) - return nil - } -@@ -566,4 +609,34 @@ func isKubeInfra(pod *v1.Pod) bool { - } - } - return false -+} -+ -+// get the isolated CPUs (if any) from the devices associated with a specific container -+func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // NOTE: This is required for TestStaticPolicyAdd() since makePod() does -+ // not create UID. We also need a way to properly stub devicemanager. -+ if len(string(pod.UID)) == 0 { -+ return cpuset.NewCPUSet() -+ } -+ resContDevices := p.deviceManager.GetDevices(string(pod.UID), container.Name) -+ cpuSet := cpuset.NewCPUSet() -+ for resourceName, resourceDevs := range resContDevices { -+ // this resource name needs to match the isolcpus device plugin -+ if resourceName == "windriver.com/isolcpus" { -+ for devID, _ := range resourceDevs { -+ cpuStrList := []string{devID} -+ if len(cpuStrList) > 0 { -+ // loop over the list of strings, convert each one to int, add to cpuset -+ for _, cpuStr := range cpuStrList { -+ cpu, err := strconv.Atoi(cpuStr) -+ if err != nil { -+ panic(err) -+ } -+ cpuSet = cpuSet.Union(cpuset.NewCPUSet(cpu)) -+ } -+ } -+ } -+ } -+ } -+ return cpuSet - } -\ No newline at end of file -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 90ad98e71bc..8511d5635bd 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -27,6 +27,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - ) - - type staticPolicyTest struct { -@@ -45,8 +46,9 @@ type staticPolicyTest struct { - } - - func TestStaticPolicyName(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testExcl) -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -56,6 +58,7 @@ func TestStaticPolicyName(t *testing.T) { - } - - func TestStaticPolicyStart(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "non-corrupted state", -@@ -131,7 +134,7 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.excludeReserved) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testCase.excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: testCase.stAssignments, -@@ -179,6 +182,7 @@ func TestStaticPolicyAdd(t *testing.T) { - largeTopoSock0CPUSet := largeTopoSock0Builder.Result() - largeTopoSock1CPUSet := largeTopoSock1Builder.Result() - -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "GuPodSingleCore, SingleSocketHT, ExpectError", -@@ -447,7 +451,7 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.excludeReserved) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testCase.excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -490,6 +494,7 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func TestStaticPolicyRemove(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - excludeReserved := false - testCases := []staticPolicyTest{ - { -@@ -549,7 +554,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), excludeReserved) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -571,6 +576,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - func TestTopologyAwareAllocateCPUs(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - excludeReserved := false - testCases := []struct { - description string -@@ -640,7 +646,7 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), excludeReserved) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -673,6 +679,7 @@ type staticPolicyTestWithResvList struct { - topo *topology.CPUTopology - numReservedCPUs int - reserved cpuset.CPUSet -+ isolcpus cpuset.CPUSet - stAssignments state.ContainerCPUAssignments - stDefaultCPUSet cpuset.CPUSet - pod *v1.Pod -@@ -713,9 +720,10 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - }, - } - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testExcl) -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testDM, testExcl) - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -755,6 +763,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), -@@ -767,6 +776,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), -@@ -779,6 +789,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -795,6 +806,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -806,11 +818,29 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(0, 1), - }, -+ { -+ description: "InfraPod, SingleSocketHT, Isolcpus, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0), -+ }, - } - - testExcl := true -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, testCase.isolcpus, topologymanager.NewFakeManager(), testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch b/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch deleted file mode 100644 index 3a513fe7a..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch +++ /dev/null @@ -1,313 +0,0 @@ -From 38ecddc618a62bc1b73bafd530b45e9bd8cac19e Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Tue, 7 Sep 2021 13:22:41 -0400 -Subject: [PATCH 2/7] kubelet cpumanager keep normal containers off reserved - CPUs - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via '--system-reserved=cpu' -or '--kube-reserved=cpu' will be ignored by kubernetes itself. A small -tweak to the default CPU affinity ensures that "normal" Kubernetes -pods won't run on the reserved CPUs. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 6 +++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 11 ++++-- - pkg/kubelet/cm/cpumanager/policy_static.go | 29 ++++++++++++--- - .../cm/cpumanager/policy_static_test.go | 35 +++++++++++++------ - 4 files changed, 62 insertions(+), 19 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index f7b9c8d07bf..5b82e5b02ac 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -178,7 +178,11 @@ func NewManager(cpuPolicyName string, reconcilePeriod time.Duration, machineInfo - // exclusively allocated. - reservedCPUsFloat := float64(reservedCPUs.MilliValue()) / 1000 - numReservedCPUs := int(math.Ceil(reservedCPUsFloat)) -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity) -+ // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. -+ // This variable is primarily to make testing easier. -+ excludeReserved := true -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, excludeReserved) -+ - if err != nil { - return nil, fmt.Errorf("new static policy error: %v", err) - } -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index 51c6ad99251..a2e73de6875 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -215,6 +215,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -229,7 +230,8 @@ func TestCPUManagerAdd(t *testing.T) { - }, - 0, - cpuset.NewCPUSet(), -- topologymanager.NewFakeManager()) -+ topologymanager.NewFakeManager(), -+ testExcl) - testCases := []struct { - description string - updateErr error -@@ -477,8 +479,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - }, - } - -+ testExcl := false - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -986,6 +989,7 @@ func TestReconcileState(t *testing.T) { - // above test cases are without kubelet --reserved-cpus cmd option - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1000,7 +1004,8 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - }, - 1, - cpuset.NewCPUSet(0), -- topologymanager.NewFakeManager()) -+ topologymanager.NewFakeManager(), -+ testExcl) - testCases := []struct { - description string - updateErr error -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index ec25a15a3c2..94d81796132 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -75,6 +75,8 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // If true, default CPUSet should exclude reserved CPUs -+ excludeReserved bool - // topology manager reference to get container Topology affinity - affinity topologymanager.Store - // set of CPUs to reuse across allocations in a pod -@@ -87,7 +89,7 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, excludeReserved bool) (Policy, error) { - allCPUs := topology.CPUDetails.CPUs() - var reserved cpuset.CPUSet - if reservedCPUs.Size() > 0 { -@@ -111,6 +113,7 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - return &staticPolicy{ - topology: topology, - reserved: reserved, -+ excludeReserved: excludeReserved, - affinity: affinity, - cpusToReuse: make(map[string]cpuset.CPUSet), - }, nil -@@ -139,7 +142,15 @@ func (p *staticPolicy) validateState(s state.State) error { - } - // state is empty initialize - allCPUs := p.topology.CPUDetails.CPUs() -- s.SetDefaultCPUSet(allCPUs) -+ if p.excludeReserved { -+ // Exclude reserved CPUs from the default CPUSet to keep containers off them -+ // unless explicitly affined. -+ s.SetDefaultCPUSet(allCPUs.Difference(p.reserved)) -+ } else { -+ s.SetDefaultCPUSet(allCPUs) -+ } -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -+ allCPUs, p.reserved, s.GetDefaultCPUSet()) - return nil - } - -@@ -147,9 +158,11 @@ func (p *staticPolicy) validateState(s state.State) error { - // 1. Check if the reserved cpuset is not part of default cpuset because: - // - kube/system reserved have changed (increased) - may lead to some containers not being able to start - // - user tampered with file -- if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -- return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -- p.reserved.String(), tmpDefaultCPUset.String()) -+ if !p.excludeReserved { -+ if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -+ return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -+ p.reserved.String(), tmpDefaultCPUset.String()) -+ } - } - - // 2. Check if state for static policy is consistent -@@ -178,6 +191,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } - } - totalKnownCPUs = totalKnownCPUs.UnionAll(tmpCPUSets) -+ if p.excludeReserved { -+ totalKnownCPUs = totalKnownCPUs.Union(p.reserved) -+ } - if !totalKnownCPUs.Equals(p.topology.CPUDetails.CPUs()) { - return fmt.Errorf("current set of available CPUs \"%s\" doesn't match with CPUs in state \"%s\"", - p.topology.CPUDetails.CPUs().String(), totalKnownCPUs.String()) -@@ -248,6 +264,9 @@ func (p *staticPolicy) RemoveContainer(s state.State, podUID string, containerNa - klog.InfoS("Static policy: RemoveContainer", "podUID", podUID, "containerName", containerName) - if toRelease, ok := s.GetCPUSet(podUID, containerName); ok { - s.Delete(podUID, containerName) -+ if p.excludeReserved { -+ toRelease = toRelease.Difference(p.reserved) -+ } - // Mutate the shared pool, adding released cpus. - s.SetDefaultCPUSet(s.GetDefaultCPUSet().Union(toRelease)) - } -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index c54997787b4..93a2870532a 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -33,6 +33,7 @@ type staticPolicyTest struct { - description string - topo *topology.CPUTopology - numReservedCPUs int -+ excludeReserved bool - podUID string - containerName string - stAssignments state.ContainerCPUAssignments -@@ -44,7 +45,8 @@ type staticPolicyTest struct { - } - - func TestStaticPolicyName(t *testing.T) { -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ testExcl := false -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -74,6 +76,15 @@ func TestStaticPolicyStart(t *testing.T) { - stDefaultCPUSet: cpuset.NewCPUSet(), - expCSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), - }, -+ { -+ description: "empty cpuset exclude reserved", -+ topo: topoDualSocketHT, -+ numReservedCPUs: 2, -+ excludeReserved: true, -+ stAssignments: state.ContainerCPUAssignments{}, -+ stDefaultCPUSet: cpuset.NewCPUSet(), -+ expCSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 7, 8, 9, 10, 11), -+ }, - { - description: "reserved cores 0 & 6 are not present in available cpuset", - topo: topoDualSocketHT, -@@ -120,7 +131,7 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: testCase.stAssignments, -@@ -436,7 +447,7 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -479,6 +490,7 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func TestStaticPolicyRemove(t *testing.T) { -+ excludeReserved := false - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -537,7 +549,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -559,6 +571,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - func TestTopologyAwareAllocateCPUs(t *testing.T) { -+ excludeReserved := false - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -627,7 +640,7 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager()) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -699,9 +712,10 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -+ testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager()) -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testExcl) - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -741,7 +755,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), - expCPUAlloc: false, -@@ -753,7 +767,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), - expErr: nil, - expCPUAlloc: true, -@@ -769,7 +783,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), - }, - }, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 4, 5), -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), - pod: makePod("fakePod", "fakeContainer3", "2000m", "2000m"), - expErr: nil, - expCPUAlloc: true, -@@ -777,8 +791,9 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - }, - } - -+ testExcl := true - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager()) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/series b/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/series deleted file mode 100644 index 48df6228c..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/patches/series +++ /dev/null @@ -1,7 +0,0 @@ -kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch -kubelet-cpumanager-keep-normal-containers-off-reserv.patch -kubelet-cpumanager-infrastructure-pods-use-system-re.patch -kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch -kubeadm-create-platform-pods-with-zero-CPU-resources.patch -enable-support-for-kubernetes-to-ignore-isolcpus.patch -Revert-use-subpath-for-coredns-only-for-default-repo.patch diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/rules b/kubernetes/kubernetes-1.21.8/debian/deb_folder/rules deleted file mode 100755 index 02ebbd003..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/rules +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/make -f - -kube_version := 1.21.8 -kube_git_version := v${kube_version} -name := kubernetes-${kube_version} -go_version := 1.16.6 -_stage1 := /usr/local/kubernetes/${kube_version}/stage1 -_stage2 := /usr/local/kubernetes/${kube_version}/stage2 -_bindir := /usr/bin -output_path := src/k8s.io/kubernetes/_output/bin -DEBIAN_DESTDIR := $(CURDIR)/debian/tmp -export DH_VERBOSE = 1 -export PATH := /usr/lib/go-1.16/bin:$(PATH) -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=${kube_version} -export KUBE_GIT_VERSION=${kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace -export PBR_VERSION=${kube_git_version} - - -%: - dh $@ --with=bash-completion --builddirectory=src --without=build-stamp - -override_dh_auto_build: - - mkdir -pv src/k8s.io/kubernetes/ - mv -v $$(ls | grep -v "^src$$" | grep -v "^debian$$") src/k8s.io/kubernetes/. - - go version - which go - - cd src/k8s.io/kubernetes/ && make WHAT="cmd/kube-proxy cmd/kube-apiserver cmd/kube-controller-manager cmd/kubelet cmd/kubeadm cmd/kube-scheduler cmd/kubectl" - - # TODO convert md to man - #./hack/generate-docs.sh || true - #pushd docs ;\ - #pushd admin ;\ - #cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. ;\ - #popd ;\ - #bash genmanpages.sh ;\ - #popd ;\ - #popd ;\ - - -override_dh_install: - - install -m 755 -d ${DEBIAN_DESTDIR}${_bindir} - install -m 755 -d ${DEBIAN_DESTDIR}${_stage1}${_bindir} - install -m 755 -d ${DEBIAN_DESTDIR}${_stage2}${_bindir} - - echo "+++ INSTALLING kube-apiserver" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-apiserver - - echo "+++ INSTALLING kubeadm" - install -p -m 755 -t ${DEBIAN_DESTDIR}${_stage1}${_bindir} ${output_path}/kubeadm - install -d -m 0755 ${DEBIAN_DESTDIR}${_stage2}/etc/systemd/system/kubelet.service.d - install -p -m 0644 -t ${DEBIAN_DESTDIR}${_stage2}/etc/systemd/system/kubelet.service.d debian/kubeadm.conf - - echo "+++ INSTALLING kubelet-cgroup-setup.sh" - install -p -m 0700 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} debian/kubelet-cgroup-setup.sh - - echo "+++ INSTALLING kube-apiserver"\ - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-apiserver - - echo "+++ INSTALLING kube-controller-manager" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-controller-manager - - echo "+++ INSTALLING kube-scheduler" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-scheduler - - echo "+++ INSTALLING kube-proxy" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-proxy - - echo "+++ INSTALLING kubelet" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} ${output_path}/kubelet - - echo "+++ INSTALLING kubectl" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} ${output_path}/kubectl - - # install the bash completion - install -d -m 0755 ${DEBIAN_DESTDIR}${_stage2}/usr/share/bash-completion/completions/ - ${DEBIAN_DESTDIR}${_stage2}${_bindir}/kubectl completion bash > ${DEBIAN_DESTDIR}${_stage2}/usr/share/bash-completion/completions/kubectl - - # install specific cluster addons for optional use - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons - # Addon: volumesnapshots - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/crd - install -m 0644 -t ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/crd src/k8s.io/kubernetes/cluster/addons/volumesnapshots/crd/* - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/volume-snapshot-controller - install -m 0644 -t ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/volume-snapshot-controller src/k8s.io/kubernetes/cluster/addons/volumesnapshots/volume-snapshot-controller/* - - #TODO install manpages - #install -d ${DEBIAN_DESTDIR}/usr/share/man/man1 - #install -p -m 644 docs/man/man1/* ${DEBIAN_DESTDIR}/usr/share/man/man1 - #rm -Rf ${DEBIAN_DESTDIR}/usr/share/man/man1/cloud-controller-manager.* - # from k8s tarball copied docs/man/man1/*.1 - #popd - - #mv src/k8s.io/kubernetes/*.md . - #mv src/k8s.io/kubernetes/LICENSE . - - - # place files for unit-test rpm - install -d -m 0755 ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/ - # basically, everything from the root directory is needed - # unit-tests needs source code - # integration tests needs docs and other files - # test-cmd.sh atm needs cluster, examples and other - cp -a src ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/ - rm -rf ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/src/k8s.io/kubernetes/_output - - #TODO with install manpages - #cp -a *.md ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/src/k8s.io/kubernetes/ - - dh_install - -override_dh_auto_test: - - echo "******Testing the commands*****" - src/k8s.io/kubernetes/hack/test-cmd.sh - - echo "******Benchmarking kube********" - src/k8s.io/kubernetes/hack/benchmark-go.sh - - echo "******Testing the go code******" - src/k8s.io/kubernetes/hack/test-go.sh - - echo "******Testing integration******" - src/k8s.io/kubernetes/hack/test-integration.sh --use_go_build - -override_dh_fixperms: - dh_fixperms -Xkube-apiserver -Xkubeadm -Xkubeadm.conf \ - -Xkubelet-cgroup-setup.sh -Xkube-apiserver \ - -Xkube-controller-manager -Xkube-scheduler \ - -Xkube-proxy -Xkubelet -Xkubectl - -override_dh_usrlocal: diff --git a/kubernetes/kubernetes-1.21.8/debian/deb_folder/source/format b/kubernetes/kubernetes-1.21.8/debian/deb_folder/source/format deleted file mode 100644 index 163aaf8d8..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/deb_folder/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) diff --git a/kubernetes/kubernetes-1.21.8/debian/meta_data.yaml b/kubernetes/kubernetes-1.21.8/debian/meta_data.yaml deleted file mode 100644 index c319fed5b..000000000 --- a/kubernetes/kubernetes-1.21.8/debian/meta_data.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -debver: 1.21.8 -dl_path: - name: kubernetes-1.21.8.tar.gz - url: https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.21.8.tar.gz - md5sum: df0aad94387386d4c8a3412acf196ae3 - sha256sum: b585d37fb145de9b91cc934669e64ffd0743f40298a2de970509ac182c70a67a -revision: - dist: $STX_DIST - GITREVCOUNT: - BASE_SRCREV: 506d721e42b5263fddf30c628c868b0c854dd72a - SRC_DIR: ${MY_REPO}/stx/integ/kubernetes/kubernetes-1.21.8 diff --git a/kubernetes/kubernetes-1.22.5/centos/Readme.rst b/kubernetes/kubernetes-1.22.5/centos/Readme.rst deleted file mode 100644 index abb8d7a4b..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/Readme.rst +++ /dev/null @@ -1,4 +0,0 @@ -The spec file used here was from the kubernetes 1.10.0 src rpm. -The orig file is included to help show modifications made to that -spec file, to help understand which changes were needed and to -assist with future upversioning. diff --git a/kubernetes/kubernetes-1.22.5/centos/build_srpm.data b/kubernetes/kubernetes-1.22.5/centos/build_srpm.data deleted file mode 100644 index d989e8128..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/build_srpm.data +++ /dev/null @@ -1,6 +0,0 @@ -VERSION=1.22.5 -TAR_NAME=kubernetes -TAR="$TAR_NAME-v$VERSION.tar.gz" -COPY_LIST="${CGCS_BASE}/downloads/$TAR $FILES_BASE/*" -TIS_PATCH_VER=PKG_GITREVCOUNT -BUILD_IS_BIG=6 diff --git a/kubernetes/kubernetes-1.22.5/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch b/kubernetes/kubernetes-1.22.5/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch deleted file mode 100644 index c6213de30..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch +++ /dev/null @@ -1,117 +0,0 @@ -From b90e3858a8d319c7526dd8190ee05edce24ba072 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Thu, 9 Sep 2021 13:16:26 -0400 -Subject: [PATCH 7/7] Revert "use subpath for coredns only for default - repository" - -This reverts commit 38a41e1557649a7cc763bf737779db9aa03ec75e. ---- - cmd/kubeadm/app/constants/constants.go | 2 +- - cmd/kubeadm/app/images/images.go | 5 --- - cmd/kubeadm/app/images/images_test.go | 50 -------------------------- - 3 files changed, 1 insertion(+), 56 deletions(-) - -diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go -index b3559734..95338949 100644 ---- a/cmd/kubeadm/app/constants/constants.go -+++ b/cmd/kubeadm/app/constants/constants.go -@@ -322,7 +322,7 @@ const ( - CoreDNSDeploymentName = "coredns" - - // CoreDNSImageName specifies the name of the image for CoreDNS add-on -- CoreDNSImageName = "coredns" -+ CoreDNSImageName = "coredns/coredns" - - // CoreDNSVersion is the version of CoreDNS to be deployed if it is used - CoreDNSVersion = "v1.8.4" -diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go -index 7e97dbc9..187c7189 100644 ---- a/cmd/kubeadm/app/images/images.go -+++ b/cmd/kubeadm/app/images/images.go -@@ -20,7 +20,6 @@ import ( - "fmt" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" - -@@ -48,10 +47,6 @@ func GetDNSImage(cfg *kubeadmapi.ClusterConfiguration) string { - if cfg.DNS.ImageRepository != "" { - dnsImageRepository = cfg.DNS.ImageRepository - } -- // Handle the renaming of the official image from "k8s.gcr.io/coredns" to "k8s.gcr.io/coredns/coredns -- if dnsImageRepository == kubeadmapiv1beta2.DefaultImageRepository { -- dnsImageRepository = fmt.Sprintf("%s/coredns", dnsImageRepository) -- } - // DNS uses an imageTag that corresponds to the DNS version matching the Kubernetes version - dnsImageTag := constants.CoreDNSVersion - -diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go -index 2fd9d3f5..9f363939 100644 ---- a/cmd/kubeadm/app/images/images_test.go -+++ b/cmd/kubeadm/app/images/images_test.go -@@ -22,7 +22,6 @@ import ( - "testing" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - ) - -@@ -226,52 +225,3 @@ func TestGetAllImages(t *testing.T) { - }) - } - } -- --func TestGetDNSImage(t *testing.T) { -- var tests = []struct { -- expected string -- cfg *kubeadmapi.ClusterConfiguration -- }{ -- { -- expected: "foo.io/coredns:v1.8.4", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: kubeadmapiv1beta2.DefaultImageRepository + "/coredns/coredns:v1.8.4", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: kubeadmapiv1beta2.DefaultImageRepository, -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: "foo.io/coredns/coredns:v1.8.4", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- ImageMeta: kubeadmapi.ImageMeta{ -- ImageRepository: "foo.io/coredns", -- }, -- }, -- }, -- }, -- } -- -- for _, test := range tests { -- actual := GetDNSImage(test.cfg) -- if actual != test.expected { -- t.Errorf( -- "failed to GetDNSImage:\n\texpected: %s\n\t actual: %s", -- test.expected, -- actual, -- ) -- } -- } --} --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch b/kubernetes/kubernetes-1.22.5/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch deleted file mode 100644 index 63cdfbdbb..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 087dcfa1a84ec38541fa9870937d76b80a707e2c Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 23 Oct 2020 17:46:10 -0600 -Subject: [PATCH 6/7] enable support for kubernetes to ignore isolcpus - -The normal mechanisms for allocating isolated CPUs do not allow -a mix of isolated and exclusive CPUs in the same container. In -order to allow this in *very* limited cases where the pod spec -is known in advance we will add the ability to disable the normal -isolcpus behaviour. - -If the file "/etc/kubernetes/ignore_isolcpus" exists, then kubelet -will basically forget everything it knows about isolcpus and just -treat them like regular CPUs. - -The admin user can then rely on the fact that CPU allocation is -deterministic to ensure that the isolcpus they configure end up being -allocated to the correct pods. - -Signed-off-by: Daniel Safta ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 8 ++++++++ - pkg/kubelet/cm/cpumanager/policy_static.go | 7 +++++++ - 2 files changed, 15 insertions(+) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 2f5b06dc..d9ec63bb 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -20,6 +20,7 @@ import ( - "fmt" - "io/ioutil" - "math" -+ "os" - "strings" - "sync" - "time" -@@ -55,6 +56,13 @@ const cpuManagerStateFileName = "cpu_manager_state" - - // get the system-level isolated CPUs - func getIsolcpus() cpuset.CPUSet { -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ klog.Infof("[cpumanager] turning off isolcpus awareness") -+ return cpuset.NewCPUSet() -+ } -+ - dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") - if err != nil { - klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 72a99496..ee389a85 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "os" - "strconv" - - v1 "k8s.io/api/core/v1" -@@ -658,6 +659,12 @@ func isKubeInfra(pod *v1.Pod) bool { - - // get the isolated CPUs (if any) from the devices associated with a specific container - func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ return cpuset.NewCPUSet() -+ } -+ - // NOTE: This is required for TestStaticPolicyAdd() since makePod() does - // not create UID. We also need a way to properly stub devicemanager. - if len(string(pod.UID)) == 0 { --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch b/kubernetes/kubernetes-1.22.5/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch deleted file mode 100644 index 14e530c73..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch +++ /dev/null @@ -1,108 +0,0 @@ -From de653bd0823b248d623a39c17a3872e85ce952b0 Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 3 Sep 2021 18:05:15 -0400 -Subject: [PATCH 5/7] kubeadm: create platform pods with zero CPU resources - -We want to specify zero CPU resources when creating the manifests -for the static platform pods, as a workaround for the lack of -separate resource tracking for platform resources. - -We also specify zero CPU resources for the coredns deployment. -manifests.go appears to be the main file for this, not sure if the -others are used but I changed them just in case. - -Signed-off-by: Daniel Safta ---- - cluster/addons/dns/coredns/coredns.yaml.base | 2 +- - cluster/addons/dns/coredns/coredns.yaml.in | 2 +- - cluster/addons/dns/coredns/coredns.yaml.sed | 2 +- - cmd/kubeadm/app/phases/addons/dns/manifests.go | 2 +- - cmd/kubeadm/app/phases/controlplane/manifests.go | 6 +++--- - 5 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/cluster/addons/dns/coredns/coredns.yaml.base b/cluster/addons/dns/coredns/coredns.yaml.base -index 4ee054f8ba5..d2b58f4af0e 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.base -+++ b/cluster/addons/dns/coredns/coredns.yaml.base -@@ -138,7 +138,7 @@ spec: - limits: - memory: __DNS__MEMORY__LIMIT__ - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.in b/cluster/addons/dns/coredns/coredns.yaml.in -index 1f791e447c9..ff03a801646 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.in -+++ b/cluster/addons/dns/coredns/coredns.yaml.in -@@ -138,7 +138,7 @@ spec: - limits: - memory: 'dns_memory_limit' - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.sed b/cluster/addons/dns/coredns/coredns.yaml.sed -index 4d64278aaa4..38fc9196b28 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.sed -+++ b/cluster/addons/dns/coredns/coredns.yaml.sed -@@ -138,7 +138,7 @@ spec: - limits: - memory: $DNS_MEMORY_LIMIT - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/addons/dns/manifests.go b/cmd/kubeadm/app/phases/addons/dns/manifests.go -index 3ac6856bfc6..0763b4c63db 100644 ---- a/cmd/kubeadm/app/phases/addons/dns/manifests.go -+++ b/cmd/kubeadm/app/phases/addons/dns/manifests.go -@@ -95,7 +95,7 @@ spec: - limits: - memory: 170Mi - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/controlplane/manifests.go b/cmd/kubeadm/app/phases/controlplane/manifests.go -index 8181bea63a4..4c4b4448dd4 100644 ---- a/cmd/kubeadm/app/phases/controlplane/manifests.go -+++ b/cmd/kubeadm/app/phases/controlplane/manifests.go -@@ -60,7 +60,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS), - ReadinessProbe: staticpodutil.ReadinessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/readyz", int(endpoint.BindPort), v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("250m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeAPIServer), - map[string]string{kubeadmconstants.KubeAPIServerAdvertiseAddressEndpointAnnotationKey: endpoint.String()}), -@@ -72,7 +72,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeControllerManager)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("200m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeControllerManager), nil), - kubeadmconstants.KubeScheduler: staticpodutil.ComponentPod(v1.Container{ -@@ -83,7 +83,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeScheduler)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("100m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeScheduler), nil), - } --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubeadm.conf b/kubernetes/kubernetes-1.22.5/centos/files/kubeadm.conf deleted file mode 100644 index da0611444..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubeadm.conf +++ /dev/null @@ -1,18 +0,0 @@ -# Note: This dropin only works with kubeadm and kubelet v1.11+ -[Service] -Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" -Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" -# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically -EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env -# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use -# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. -EnvironmentFile=-/etc/sysconfig/kubelet -ExecStart= -ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS -ExecStartPre=-/usr/local/sbin/sanitize_kubelet_reserved_cpus.sh /etc/sysconfig/kubelet -ExecStartPre=-/usr/bin/kubelet-cgroup-setup.sh -ExecStartPost=/bin/bash -c 'echo $MAINPID > /var/run/kubelet.pid;' -ExecStopPost=/bin/rm -f /var/run/kubelet.pid -Restart=always -StartLimitInterval=0 -RestartSec=10 diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cgroup-setup.sh b/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cgroup-setup.sh deleted file mode 100644 index 385314bfe..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cgroup-setup.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 Wind River Systems, Inc. -# -# SPDX-License-Identifier: Apache-2.0 -# -# This script does minimal cgroup setup for kubelet. This creates k8s-infra -# cgroup for a minimal set of resource controllers, and configures cpuset -# attributes to span all online cpus and nodes. This will do nothing if -# the k8s-infra cgroup already exists (i.e., assume already configured). -# NOTE: The creation of directories under /sys/fs/cgroup is volatile, and -# does not persist reboots. The cpuset.mems and cpuset.cpus is later updated -# by puppet kubernetes.pp manifest. -# - -# Define minimal path -PATH=/bin:/usr/bin:/usr/local/bin - -# Log info message to /var/log/daemon.log -function LOG { - logger -p daemon.info "$0($$): $@" -} - -# Log error message to /var/log/daemon.log -function ERROR { - logger -s -p daemon.error "$0($$): ERROR: $@" -} - -# Create minimal cgroup directories and configure cpuset attributes if required -function create_cgroup { - local cg_name=$1 - local cg_nodeset=$2 - local cg_cpuset=$3 - - local CGROUP=/sys/fs/cgroup - local CONTROLLERS_AUTO_DELETED=("pids" "hugetlb") - local CONTROLLERS_PRESERVED=("cpuset" "memory" "cpu,cpuacct" "systemd") - local cnt='' - local CGDIR='' - local RC=0 - - # Ensure that these cgroups are created every time as they are auto deleted - for cnt in ${CONTROLLERS_AUTO_DELETED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - continue - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # These cgroups are preserved so if any of these are encountered additional - # cgroup setup is not required - for cnt in ${CONTROLLERS_PRESERVED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - exit ${RC} - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # Customize cpuset attributes - LOG "Configuring cgroup: ${cg_name}, nodeset: ${cg_nodeset}, cpuset: ${cg_cpuset}" - CGDIR=${CGROUP}/cpuset/${cg_name} - local CGMEMS=${CGDIR}/cpuset.mems - local CGCPUS=${CGDIR}/cpuset.cpus - local CGTASKS=${CGDIR}/tasks - - # Assign cgroup memory nodeset - LOG "Assign nodeset ${cg_nodeset} to ${CGMEMS}" - /bin/echo ${cg_nodeset} > ${CGMEMS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Unable to write to: ${CGMEMS}, rc=${RC}" - exit ${RC} - fi - - # Assign cgroup cpus - LOG "Assign cpuset ${cg_cpuset} to ${CGCPUS}" - /bin/echo ${cg_cpuset} > ${CGCPUS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Assigning: ${cg_cpuset} to ${CGCPUS}, rc=${RC}" - exit ${RC} - fi - - # Set file ownership - chown root:root ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting owner for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - # Set file mode permissions - chmod 644 ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting mode for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - return ${RC} -} - -if [ $UID -ne 0 ]; then - ERROR "Require sudo/root." - exit 1 -fi - -# Configure default kubepods cpuset to span all online cpus and nodes. -ONLINE_NODESET=$(/bin/cat /sys/devices/system/node/online) -ONLINE_CPUSET=$(/bin/cat /sys/devices/system/cpu/online) - -# Configure kubelet cgroup to match cgroupRoot. -create_cgroup 'k8s-infra' ${ONLINE_NODESET} ${ONLINE_CPUSET} - -exit $? - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch b/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch deleted file mode 100644 index 3394c7a10..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch +++ /dev/null @@ -1,297 +0,0 @@ -From 3f69868f7bca99f6875dd4d197b3a974d1b558ed Mon Sep 17 00:00:00 2001 -From: Daniel Safta -Date: Wed, 22 Sep 2021 10:09:06 -0400 -Subject: [PATCH 1/7] kubelet cpumanager disable CFS quota throttling for - Guaranteed pods - -This disables CFS CPU quota to avoid performance degradation due to -Linux kernel CFS quota implementation. Note that 4.18 kernel attempts -to solve the CFS throttling problem, but there are reports that it is -not completely effective. - -This disables CFS quota throttling for Guaranteed pods for both -parent and container cgroups by writing -1 to cgroup cpu.cfs_quota_us. -Disabling has a dramatic latency improvement for HTTP response times. - -This patch is refactored in 1.21.3 due to new internal_container_lifecycle -framework. We leverage the same mechanism to set Linux resources as: -cpu manager: specify the container CPU set during the creation -(commit 38dc7509f862f081828e7d9167107b8c6e98ea23). - -Signed-off-by: Daniel Safta -Co-authored-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 7 +++ - pkg/kubelet/cm/cpumanager/fake_cpu_manager.go | 12 +++-- - pkg/kubelet/cm/helpers_linux.go | 12 ++++- - pkg/kubelet/cm/helpers_linux_test.go | 45 ++++++++++--------- - .../cm/internal_container_lifecycle_linux.go | 12 ++++- - 5 files changed, 61 insertions(+), 27 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 4777c132..29194271 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -72,6 +72,9 @@ type Manager interface { - // State returns a read-only interface to the internal CPU manager state. - State() state.Reader - -+ // GetCPUPolicy returns the assigned CPU manager policy -+ GetCPUPolicy() string -+ - // GetTopologyHints implements the topologymanager.HintProvider Interface - // and is consulted to achieve NUMA aware resource alignment among this - // and other resource controllers. -@@ -310,6 +313,10 @@ func (m *manager) State() state.Reader { - return m.state - } - -+func (m *manager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *manager) GetTopologyHints(pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - // The pod is during the admission phase. We need to save the pod to avoid it - // being cleaned before the admission ended -diff --git a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -index 28578e64..018f13b6 100644 ---- a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -@@ -17,7 +17,7 @@ limitations under the License. - package cpumanager - - import ( -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/kubelet/cm/containermap" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" -@@ -28,7 +28,8 @@ import ( - ) - - type fakeManager struct { -- state state.State -+ policy Policy -+ state state.State - } - - func (m *fakeManager) Start(activePods ActivePodsFunc, sourcesReady config.SourcesReady, podStatusProvider status.PodStatusProvider, containerRuntime runtimeService, initialContainers containermap.ContainerMap) error { -@@ -70,6 +71,10 @@ func (m *fakeManager) State() state.Reader { - return m.state - } - -+func (m *fakeManager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *fakeManager) GetCPUs(podUID, containerName string) cpuset.CPUSet { - klog.InfoS("GetCPUs", "podUID", podUID, "containerName", containerName) - return cpuset.CPUSet{} -@@ -83,6 +88,7 @@ func (m *fakeManager) GetAllocatableCPUs() cpuset.CPUSet { - // NewFakeManager creates empty/fake cpu manager - func NewFakeManager() Manager { - return &fakeManager{ -- state: state.NewMemoryState(), -+ policy: &nonePolicy{}, -+ state: state.NewMemoryState(), - } - } -diff --git a/pkg/kubelet/cm/helpers_linux.go b/pkg/kubelet/cm/helpers_linux.go -index 33b14e31..a6e5326b 100644 ---- a/pkg/kubelet/cm/helpers_linux.go -+++ b/pkg/kubelet/cm/helpers_linux.go -@@ -25,7 +25,7 @@ import ( - - libcontainercgroups "github.com/opencontainers/runc/libcontainer/cgroups" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/kubernetes/pkg/api/v1/resource" -@@ -167,6 +167,16 @@ func ResourceConfigForPod(pod *v1.Pod, enforceCPULimits bool, cpuPeriod uint64, - // build the result - result := &ResourceConfig{} - if qosClass == v1.PodQOSGuaranteed { -+ // Disable CFS CPU quota to avoid performance degradation due to -+ // Linux kernel CFS throttle implementation. -+ // NOTE: 4.18 kernel attempts to solve CFS throttling problem, -+ // but there are reports that it is not completely effective. -+ // This will configure cgroup CFS parameters at pod level: -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_period_us -+ cpuQuota = int64(-1) -+ cpuPeriod = uint64(100000) -+ - result.CpuShares = &cpuShares - result.CpuQuota = &cpuQuota - result.CpuPeriod = &cpuPeriod -diff --git a/pkg/kubelet/cm/helpers_linux_test.go b/pkg/kubelet/cm/helpers_linux_test.go -index bdd01ea1..b907f575 100644 ---- a/pkg/kubelet/cm/helpers_linux_test.go -+++ b/pkg/kubelet/cm/helpers_linux_test.go -@@ -1,3 +1,4 @@ -+//go:build linux - // +build linux - - /* -@@ -24,7 +25,7 @@ import ( - "testing" - "time" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - utilfeature "k8s.io/apiserver/pkg/util/feature" - featuregatetesting "k8s.io/component-base/featuregate/testing" -@@ -63,8 +64,9 @@ func TestResourceConfigForPod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -203,8 +205,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -217,8 +219,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -231,8 +233,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -245,8 +247,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -@@ -283,8 +285,9 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -423,8 +426,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -437,8 +440,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -451,8 +454,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -465,8 +468,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -diff --git a/pkg/kubelet/cm/internal_container_lifecycle_linux.go b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -index 9cf41620..2e15d9ba 100644 ---- a/pkg/kubelet/cm/internal_container_lifecycle_linux.go -+++ b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -@@ -1,3 +1,4 @@ -+//go:build linux - // +build linux - - /* -@@ -22,8 +23,9 @@ import ( - "strconv" - "strings" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" -+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos" - ) - - func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, container *v1.Container, containerConfig *runtimeapi.ContainerConfig) error { -@@ -33,7 +35,13 @@ func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, contain - containerConfig.Linux.Resources.CpusetCpus = allocatedCPUs.String() - } - } -- -+ // Disable cgroup CFS throttle at the container level. -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_period_us -+ if i.cpuManager.GetCPUPolicy() == "static" && v1qos.GetPodQOS(pod) == v1.PodQOSGuaranteed { -+ containerConfig.Linux.Resources.CpuPeriod = int64(100000) -+ containerConfig.Linux.Resources.CpuQuota = int64(-1) -+ } - if i.memoryManager != nil { - numaNodes := i.memoryManager.GetMemoryNUMANodes(pod, container) - if numaNodes.Len() > 0 { --- -2.17.1 - - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-infrastructure-pods-use-system-re.patch b/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-infrastructure-pods-use-system-re.patch deleted file mode 100644 index 6f06c12c6..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-infrastructure-pods-use-system-re.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 66f4a61ce77624dcc0b520e01fccacec61dfea37 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Tue, 7 Sep 2021 14:21:03 -0400 -Subject: [PATCH 3/7] kubelet cpumanager infrastructure pods use system - reserved CPUs - -This assigns system infrastructure pods to the "reserved" cpuset -to isolate them from the shared pool of CPUs. - -Infrastructure pods include any pods that belong to the kube-system, -armada, cert-manager, vault, platform-deployment-manager, portieris, -notification, flux-helm or metrics-server namespaces. - -The implementation is a bit simplistic, it is assumed that the -"reserved" cpuset is large enough to handle all infrastructure pods -CPU allocations. - -This also prevents infrastucture pods from using Guaranteed resources. - -Signed-off-by: Daniel Safta ---- - pkg/kubelet/cm/cpumanager/policy_static.go | 52 ++++++++++++++++--- - .../cm/cpumanager/policy_static_test.go | 19 ++++++- - 2 files changed, 63 insertions(+), 8 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 89625fc6..492457b1 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -53,6 +53,11 @@ func (e SMTAlignmentError) Type() string { - return ErrorSMTAlignment - } - -+// Define namespaces used by platform infrastructure pods -+var infraNamespaces = [...]string{ -+ "kube-system", "armada", "cert-manager", "platform-deployment-manager", "portieris", "vault", "notification", "flux-helm", "metrics-server", -+} -+ - // staticPolicy is a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. -@@ -141,12 +146,12 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - klog.InfoS("Reserved CPUs not available for exclusive assignment", "reservedSize", reserved.Size(), "reserved", reserved) - - return &staticPolicy{ -- topology: topology, -- reserved: reserved, -+ topology: topology, -+ reserved: reserved, - excludeReserved: excludeReserved, -- affinity: affinity, -- cpusToReuse: make(map[string]cpuset.CPUSet), -- options: opts, -+ affinity: affinity, -+ cpusToReuse: make(map[string]cpuset.CPUSet), -+ options: opts, - }, nil - } - -@@ -191,8 +196,8 @@ func (p *staticPolicy) validateState(s state.State) error { - // - user tampered with file - if !p.excludeReserved { - if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -- return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -- p.reserved.String(), tmpDefaultCPUset.String()) -+ return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -+ p.reserved.String(), tmpDefaultCPUset.String()) - } - } - // 2. Check if state for static policy is consistent -@@ -262,6 +267,25 @@ func (p *staticPolicy) updateCPUsToReuse(pod *v1.Pod, container *v1.Container, c - } - - func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Container) error { -+ // Process infra pods before guaranteed pods -+ if isKubeInfra(pod) { -+ // Container belongs in reserved pool. -+ // We don't want to fall through to the p.guaranteedCPUs() clause below so return either nil or error. -+ if _, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ klog.Infof("[cpumanager] static policy: reserved container already present in state, skipping (namespace: %s, pod UID: %s, pod: %s, container: %s)", pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } -+ -+ cpuset := p.reserved -+ if cpuset.IsEmpty() { -+ // If this happens then someone messed up. -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ } -+ s.SetCPUSet(string(pod.UID), container.Name, cpuset) -+ klog.Infof("[cpumanager] static policy: reserved: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -+ return nil -+ } -+ - if numCPUs := p.guaranteedCPUs(pod, container); numCPUs != 0 { - klog.InfoS("Static policy: Allocate", "pod", klog.KObj(pod), "containerName", container.Name) - // container belongs in an exclusively allocated pool -@@ -366,6 +390,10 @@ func (p *staticPolicy) guaranteedCPUs(pod *v1.Pod, container *v1.Container) int - if cpuQuantity.Value()*1000 != cpuQuantity.MilliValue() { - return 0 - } -+ // Infrastructure pods use reserved CPUs even if they're in the Guaranteed QoS class -+ if isKubeInfra(pod) { -+ return 0 -+ } - // Safe downcast to do for all systems with < 2.1 billion CPUs. - // Per the language spec, `int` is guaranteed to be at least 32 bits wide. - // https://golang.org/ref/spec#Numeric_types -@@ -568,3 +596,13 @@ func (p *staticPolicy) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, reu - - return hints - } -+ -+// check if a given pod is in a platform infrastructure namespace -+func isKubeInfra(pod *v1.Pod) bool { -+ for _, namespace := range infraNamespaces { -+ if namespace == pod.Namespace { -+ return true -+ } -+ } -+ return false -+} -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 80bd04a1..34c5a23c 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -830,7 +830,8 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - } - - func TestStaticPolicyAddWithResvList(t *testing.T) { -- -+ infraPod := makePod("fakePod", "fakeContainer2", "200m", "200m") -+ infraPod.Namespace = "kube-system" - testCases := []staticPolicyTestWithResvList{ - { - description: "GuPodSingleCore, SingleSocketHT, ExpectError", -@@ -872,6 +873,22 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(4, 5), - }, -+ { -+ description: "InfraPod, SingleSocketHT, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0, 1), -+ }, - } - - testExcl := true --- -2.17.1 diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch b/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch deleted file mode 100644 index 3a9d34cdd..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch +++ /dev/null @@ -1,564 +0,0 @@ -From f3db147d0a40a6f336e9fa6d737e36366f9adf87 Mon Sep 17 00:00:00 2001 -From: Daniel Safta -Date: Thu, 13 Jan 2022 11:08:48 +0200 -Subject: [PATCH 4/7] kubelet cpumanager introduce concept of isolated CPUs - -This introduces the concept of "isolated CPUs", which are CPUs that -have been isolated at the kernel level via the "isolcpus" kernel boot -parameter. - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via -'--system-reserved=cpu' will be used for infrastructure pods while the -isolated CPUs should be reserved via '--kube-reserved=cpu' to cause -kubelet to skip over them for "normal" CPU resource tracking. The -kubelet code will double-check that the specified isolated CPUs match -what the kernel exposes in "/sys/devices/system/cpu/isolated". - -A plugin (outside the scope of this commit) will expose the isolated -CPUs to kubelet via the device plugin API. - -If a pod specifies some number of "isolcpus" resources, the device -manager will allocate them. In this code we check whether such -resources have been allocated, and if so we set the container cpuset to -the isolated CPUs. This does mean that it really only makes sense to -specify "isolcpus" resources for best-effort or burstable pods, not for -guaranteed ones since that would throw off the accounting code. In -order to ensure the accounting still works as designed, if "isolcpus" -are specified for guaranteed pods, the affinity will be set to the -non-isolated CPUs. - -This patch was refactored in 1.21.3 due to upstream API change -node: podresources: make GetDevices() consistent -(commit ad68f9588c72d6477b5a290c548a9031063ac659). - -The routine podIsolCPUs() was refactored in 1.21.3 since the API -p.deviceManager.GetDevices() is returning multiple devices with -a device per cpu. The resultant cpuset needs to be the aggregate. - -The routine NewStaticPolicy was refactored in 1.22.5, adding a new argument -in its signature: cpuPolicyOptions map[string]string. This change is implies -shifting the new arguments(deviceManager, excludeReserved) with one position -to the right. - - -Signed-off-by: Daniel Safta -Co-authored-by: Jim Gauld -Co-authored-by: Chris Friesen ---- - pkg/kubelet/cm/container_manager_linux.go | 2 + - pkg/kubelet/cm/cpumanager/cpu_manager.go | 35 +++++++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 14 +++- - pkg/kubelet/cm/cpumanager/policy_static.go | 82 +++++++++++++++++-- - .../cm/cpumanager/policy_static_test.go | 50 ++++++++--- - 5 files changed, 164 insertions(+), 19 deletions(-) - -diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go -index d7aa6270..de68ad98 100644 ---- a/pkg/kubelet/cm/container_manager_linux.go -+++ b/pkg/kubelet/cm/container_manager_linux.go -@@ -1,3 +1,4 @@ -+//go:build linux - // +build linux - - /* -@@ -339,6 +340,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I - cm.GetNodeAllocatableReservation(), - nodeConfig.KubeletRootDir, - cm.topologyManager, -+ cm.deviceManager, - ) - if err != nil { - klog.ErrorS(err, "Failed to initialize cpu manager") -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index fba0bfd1..1d0ff0e4 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -18,7 +18,9 @@ package cpumanager - - import ( - "fmt" -+ "io/ioutil" - "math" -+ "strings" - "sync" - "time" - -@@ -32,6 +34,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" - kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" -@@ -50,6 +53,25 @@ type policyName string - // cpuManagerStateFileName is the file name where cpu manager stores its state - const cpuManagerStateFileName = "cpu_manager_state" - -+// get the system-level isolated CPUs -+func getIsolcpus() cpuset.CPUSet { -+ dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -+ return cpuset.NewCPUSet() -+ } -+ -+ // The isolated cpus string ends in a newline -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cset, err := cpuset.Parse(cpustring) -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to parse sysfs isolcpus string to cpuset") -+ return cpuset.NewCPUSet() -+ } -+ -+ return cset -+} -+ - // Manager interface provides methods for Kubelet to manage pod cpus. - type Manager interface { - // Start is called during Kubelet initialization. -@@ -149,7 +171,8 @@ func (s *sourcesReadyStub) AddSource(source string) {} - func (s *sourcesReadyStub) AllReady() bool { return true } - - // NewManager creates new cpu manager based on provided policy --func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store) (Manager, error) { -+func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store, deviceManager devicemanager.Manager) (Manager, error) { -+ - var topo *topology.CPUTopology - var policy Policy - var err error -@@ -190,7 +213,15 @@ func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconc - // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. - // This variable is primarily to make testing easier. - excludeReserved := true -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions, excludeReserved) -+ -+ // isolCPUs is the set of kernel-isolated CPUs. They should be a subset of specificCPUs or -+ // of the CPUs that NewStaticPolicy() will pick if numReservedCPUs is set. It's only in the -+ // argument list here for ease of testing, it's really internal to the policy. -+ isolCPUs := getIsolcpus() -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, isolCPUs, affinity, cpuPolicyOptions, deviceManager, excludeReserved) -+ if err != nil { -+ return nil, fmt.Errorf("new static policy error: %v", err) -+ } - - if err != nil { - return nil, fmt.Errorf("new static policy error: %w", err) -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index bbfc70b8..39532b1c 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -37,6 +37,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - ) - -@@ -215,6 +216,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ -@@ -230,8 +232,10 @@ func TestCPUManagerAdd(t *testing.T) { - }, - 0, - cpuset.NewCPUSet(), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), - nil, -+ testDM, - testExcl) - testCases := []struct { - description string -@@ -482,8 +486,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - } - - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -638,7 +643,9 @@ func TestCPUManagerGenerate(t *testing.T) { - } - defer os.RemoveAll(sDir) - -- mgr, err := NewManager(testCase.cpuPolicyName, nil, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager()) -+ testDM, err := devicemanager.NewManagerStub() -+ mgr, err := NewManager(testCase.cpuPolicyName, nil, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager(), testDM) -+ - if testCase.expectedError != nil { - if !strings.Contains(err.Error(), testCase.expectedError.Error()) { - t.Errorf("Unexpected error message. Have: %s wants %s", err.Error(), testCase.expectedError.Error()) -@@ -995,6 +1002,7 @@ func TestReconcileState(t *testing.T) { - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1009,8 +1017,10 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - }, - 1, - cpuset.NewCPUSet(0), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), - nil, -+ testDM, - testExcl) - testCases := []struct { - description string -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 953f41e9..ccac9f08 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "strconv" - - v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" -@@ -25,6 +26,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - ) -@@ -101,6 +103,10 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // subset of reserved CPUs with isolcpus attribute -+ isolcpus cpuset.CPUSet -+ // parent containerManager, used to get device list -+ deviceManager devicemanager.Manager - // If true, default CPUSet should exclude reserved CPUs - excludeReserved bool - // topology manager reference to get container Topology affinity -@@ -117,7 +123,8 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, excludeReserved bool) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, isolCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, deviceManager devicemanager.Manager, excludeReserved bool) (Policy, error) { -+ - opts, err := NewStaticPolicyOptions(cpuPolicyOptions) - if err != nil { - return nil, err -@@ -144,10 +151,17 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - } - - klog.InfoS("Reserved CPUs not available for exclusive assignment", "reservedSize", reserved.Size(), "reserved", reserved) -+ if !isolCPUs.IsSubsetOf(reserved) { -+ klog.Errorf("[cpumanager] isolCPUs %v is not a subset of reserved %v", isolCPUs, reserved) -+ reserved = reserved.Union(isolCPUs) -+ klog.Warningf("[cpumanager] mismatch isolCPUs %v, force reserved %v", isolCPUs, reserved) -+ } - - return &staticPolicy{ - topology: topology, - reserved: reserved, -+ isolcpus: isolCPUs, -+ deviceManager: deviceManager, - excludeReserved: excludeReserved, - affinity: affinity, - cpusToReuse: make(map[string]cpuset.CPUSet), -@@ -185,8 +199,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } else { - s.SetDefaultCPUSet(allCPUs) - } -- klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -- allCPUs, p.reserved, s.GetDefaultCPUSet()) -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, isolcpus:%v, default:%v\n", -+ allCPUs, p.reserved, p.isolcpus, s.GetDefaultCPUSet()) -+ - return nil - } - -@@ -277,10 +292,11 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - return nil - } - -- cpuset := p.reserved -+ cpuset := p.reserved.Clone().Difference(p.isolcpus) - if cpuset.IsEmpty() { - // If this happens then someone messed up. -- return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v, isolcpus:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved, p.isolcpus) -+ - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - klog.Infof("[cpumanager] static policy: reserved: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -@@ -324,8 +340,34 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - p.updateCPUsToReuse(pod, container, cpuset) -+ klog.Infof("[cpumanager] guaranteed: AddContainer "+ -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); numCPUS=%d, cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, numCPUs, cpuset) -+ return nil -+ } - -+ if isolcpus := p.podIsolCPUs(pod, container); isolcpus.Size() > 0 { -+ // container has requested isolated CPUs -+ if set, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ if set.Equals(isolcpus) { -+ klog.Infof("[cpumanager] isolcpus container already present in state, skipping (namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } else { -+ klog.Infof("[cpumanager] isolcpus container state has cpus %v, should be %v (namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ isolcpus, set, pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ } -+ } -+ // Note that we do not do anything about init containers here. -+ // It looks like devices are allocated per-pod based on effective requests/limits -+ // and extra devices from initContainers are not freed up when the regular containers start. -+ // TODO: confirm this is still true for 1.20 -+ s.SetCPUSet(string(pod.UID), container.Name, isolcpus) -+ klog.Infof("[cpumanager] isolcpus: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, isolcpus) -+ return nil - } -+ - // container belongs in the shared pool (nothing to do; use default cpuset) - return nil - } -@@ -607,3 +649,33 @@ func isKubeInfra(pod *v1.Pod) bool { - } - return false - } -+ -+// get the isolated CPUs (if any) from the devices associated with a specific container -+func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // NOTE: This is required for TestStaticPolicyAdd() since makePod() does -+ // not create UID. We also need a way to properly stub devicemanager. -+ if len(string(pod.UID)) == 0 { -+ return cpuset.NewCPUSet() -+ } -+ resContDevices := p.deviceManager.GetDevices(string(pod.UID), container.Name) -+ cpuSet := cpuset.NewCPUSet() -+ for resourceName, resourceDevs := range resContDevices { -+ // this resource name needs to match the isolcpus device plugin -+ if resourceName == "windriver.com/isolcpus" { -+ for devID, _ := range resourceDevs { -+ cpuStrList := []string{devID} -+ if len(cpuStrList) > 0 { -+ // loop over the list of strings, convert each one to int, add to cpuset -+ for _, cpuStr := range cpuStrList { -+ cpu, err := strconv.Atoi(cpuStr) -+ if err != nil { -+ panic(err) -+ } -+ cpuSet = cpuSet.Union(cpuset.NewCPUSet(cpu)) -+ } -+ } -+ } -+ } -+ } -+ return cpuSet -+} -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 34c5a23c..a0eb451b 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -25,6 +25,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - ) -@@ -65,8 +66,9 @@ func (spt staticPolicyTest) PseudoClone() staticPolicyTest { - } - - func TestStaticPolicyName(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -76,6 +78,7 @@ func TestStaticPolicyName(t *testing.T) { - } - - func TestStaticPolicyStart(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "non-corrupted state", -@@ -151,7 +154,7 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testCase.excludeReserved) - - policy := p.(*staticPolicy) - st := &mockState{ -@@ -199,7 +202,7 @@ func TestStaticPolicyAdd(t *testing.T) { - largeTopoCPUSet := largeTopoBuilder.Result() - largeTopoSock0CPUSet := largeTopoSock0Builder.Result() - largeTopoSock1CPUSet := largeTopoSock1Builder.Result() -- -+ testDM, _ := devicemanager.NewManagerStub() - // these are the cases which must behave the same regardless the policy options. - // So we will permutate the options to ensure this holds true. - optionsInsensitiveTestCases := []staticPolicyTest{ -@@ -529,8 +532,9 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -573,6 +577,7 @@ func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { - - func TestStaticPolicyRemove(t *testing.T) { - excludeReserved := false -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -631,7 +636,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -654,6 +659,7 @@ func TestStaticPolicyRemove(t *testing.T) { - - func TestTopologyAwareAllocateCPUs(t *testing.T) { - excludeReserved := false -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -722,7 +728,8 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, excludeReserved) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, excludeReserved) -+ - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -755,6 +762,7 @@ type staticPolicyTestWithResvList struct { - topo *topology.CPUTopology - numReservedCPUs int - reserved cpuset.CPUSet -+ isolcpus cpuset.CPUSet - stAssignments state.ContainerCPUAssignments - stDefaultCPUSet cpuset.CPUSet - pod *v1.Pod -@@ -765,6 +773,8 @@ type staticPolicyTestWithResvList struct { - } - - func TestStaticPolicyStartWithResvList(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() -+ testExcl := false - testCases := []staticPolicyTestWithResvList{ - { - description: "empty cpuset", -@@ -794,11 +804,9 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -- testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -- -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -838,6 +846,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), -@@ -850,6 +859,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), -@@ -862,6 +872,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -878,6 +889,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -889,11 +901,29 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(0, 1), - }, -+ { -+ description: "InfraPod, SingleSocketHT, Isolcpus, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0), -+ }, - } - - testExcl := true -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, testCase.isolcpus, topologymanager.NewFakeManager(), nil, testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch b/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch deleted file mode 100644 index 890f90136..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch +++ /dev/null @@ -1,319 +0,0 @@ -From 196f2843fe4e6746ca2ba6f97211d9a54733781c Mon Sep 17 00:00:00 2001 -From: Daniel Safta -Date: Wed, 12 Jan 2022 15:23:37 +0200 -Subject: [PATCH 2/7] kubelet cpumanager keep normal containers off reserved - CPUs - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via '--system-reserved=cpu' -or '--kube-reserved=cpu' will be ignored by kubernetes itself. A small -tweak to the default CPU affinity ensures that "normal" Kubernetes -pods won't run on the reserved CPUs. - -Signed-off-by: Daniel Safta -Co-authored-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 6 ++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 11 ++++-- - pkg/kubelet/cm/cpumanager/policy_static.go | 30 ++++++++++++--- - .../cm/cpumanager/policy_static_test.go | 38 ++++++++++++++----- - 4 files changed, 65 insertions(+), 20 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 29194271..fba0bfd1 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -187,7 +187,11 @@ func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconc - // exclusively allocated. - reservedCPUsFloat := float64(reservedCPUs.MilliValue()) / 1000 - numReservedCPUs := int(math.Ceil(reservedCPUsFloat)) -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions) -+ // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. -+ // This variable is primarily to make testing easier. -+ excludeReserved := true -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions, excludeReserved) -+ - if err != nil { - return nil, fmt.Errorf("new static policy error: %w", err) - } -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index db0a3560..bbfc70b8 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -215,6 +215,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -230,7 +231,8 @@ func TestCPUManagerAdd(t *testing.T) { - 0, - cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), -- nil) -+ nil, -+ testExcl) - testCases := []struct { - description string - updateErr error -@@ -479,8 +481,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - }, - } - -+ testExcl := false - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -991,6 +994,7 @@ func TestReconcileState(t *testing.T) { - // above test cases are without kubelet --reserved-cpus cmd option - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1006,7 +1010,8 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - 1, - cpuset.NewCPUSet(0), - topologymanager.NewFakeManager(), -- nil) -+ nil, -+ testExcl) - testCases := []struct { - description string - updateErr error -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index f5d275d8..3859ae72 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -96,6 +96,8 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // If true, default CPUSet should exclude reserved CPUs -+ excludeReserved bool - // topology manager reference to get container Topology affinity - affinity topologymanager.Store - // set of CPUs to reuse across allocations in a pod -@@ -110,7 +112,7 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, excludeReserved bool) (Policy, error) { - opts, err := NewStaticPolicyOptions(cpuPolicyOptions) - if err != nil { - return nil, err -@@ -141,6 +143,7 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - return &staticPolicy{ - topology: topology, - reserved: reserved, -+ excludeReserved: excludeReserved, - affinity: affinity, - cpusToReuse: make(map[string]cpuset.CPUSet), - options: opts, -@@ -170,7 +173,15 @@ func (p *staticPolicy) validateState(s state.State) error { - } - // state is empty initialize - allCPUs := p.topology.CPUDetails.CPUs() -- s.SetDefaultCPUSet(allCPUs) -+ if p.excludeReserved { -+ // Exclude reserved CPUs from the default CPUSet to keep containers off them -+ // unless explicitly affined. -+ s.SetDefaultCPUSet(allCPUs.Difference(p.reserved)) -+ } else { -+ s.SetDefaultCPUSet(allCPUs) -+ } -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -+ allCPUs, p.reserved, s.GetDefaultCPUSet()) - return nil - } - -@@ -178,11 +189,12 @@ func (p *staticPolicy) validateState(s state.State) error { - // 1. Check if the reserved cpuset is not part of default cpuset because: - // - kube/system reserved have changed (increased) - may lead to some containers not being able to start - // - user tampered with file -- if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -- return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -- p.reserved.String(), tmpDefaultCPUset.String()) -+ if !p.excludeReserved { -+ if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -+ return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -+ p.reserved.String(), tmpDefaultCPUset.String()) -+ } - } -- - // 2. Check if state for static policy is consistent - for pod := range tmpAssignments { - for container, cset := range tmpAssignments[pod] { -@@ -209,6 +221,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } - } - totalKnownCPUs = totalKnownCPUs.UnionAll(tmpCPUSets) -+ if p.excludeReserved { -+ totalKnownCPUs = totalKnownCPUs.Union(p.reserved) -+ } - if !totalKnownCPUs.Equals(p.topology.CPUDetails.CPUs()) { - return fmt.Errorf("current set of available CPUs \"%s\" doesn't match with CPUs in state \"%s\"", - p.topology.CPUDetails.CPUs().String(), totalKnownCPUs.String()) -@@ -294,6 +309,9 @@ func (p *staticPolicy) RemoveContainer(s state.State, podUID string, containerNa - klog.InfoS("Static policy: RemoveContainer", "podUID", podUID, "containerName", containerName) - if toRelease, ok := s.GetCPUSet(podUID, containerName); ok { - s.Delete(podUID, containerName) -+ if p.excludeReserved { -+ toRelease = toRelease.Difference(p.reserved) -+ } - // Mutate the shared pool, adding released cpus. - s.SetDefaultCPUSet(s.GetDefaultCPUSet().Union(toRelease)) - } -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index d2b641fe..80bd04a1 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -33,6 +33,7 @@ type staticPolicyTest struct { - description string - topo *topology.CPUTopology - numReservedCPUs int -+ excludeReserved bool - podUID string - options map[string]string - containerName string -@@ -64,7 +65,8 @@ func (spt staticPolicyTest) PseudoClone() staticPolicyTest { - } - - func TestStaticPolicyName(t *testing.T) { -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ testExcl := false -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -94,6 +96,15 @@ func TestStaticPolicyStart(t *testing.T) { - stDefaultCPUSet: cpuset.NewCPUSet(), - expCSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), - }, -+ { -+ description: "empty cpuset exclude reserved", -+ topo: topoDualSocketHT, -+ numReservedCPUs: 2, -+ excludeReserved: true, -+ stAssignments: state.ContainerCPUAssignments{}, -+ stDefaultCPUSet: cpuset.NewCPUSet(), -+ expCSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 7, 8, 9, 10, 11), -+ }, - { - description: "reserved cores 0 & 6 are not present in available cpuset", - topo: topoDualSocketHT, -@@ -140,7 +151,8 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ - policy := p.(*staticPolicy) - st := &mockState{ - assignments: testCase.stAssignments, -@@ -211,7 +223,7 @@ func TestStaticPolicyAdd(t *testing.T) { - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), - }, - }, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 4, 5), -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), - pod: makePod("fakePod", "fakeContainer3", "2000m", "2000m"), - expErr: nil, - expCPUAlloc: true, -@@ -517,7 +529,8 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options) -+ testExcl := false -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -559,6 +572,7 @@ func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { - } - - func TestStaticPolicyRemove(t *testing.T) { -+ excludeReserved := false - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -617,7 +631,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -639,6 +653,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - func TestTopologyAwareAllocateCPUs(t *testing.T) { -+ excludeReserved := false - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -707,7 +722,7 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -779,9 +794,11 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -+ testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil) -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -+ - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -821,7 +838,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), - expCPUAlloc: false, -@@ -833,7 +850,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), - expErr: nil, - expCPUAlloc: true, -@@ -857,8 +874,9 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - }, - } - -+ testExcl := true - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch b/kubernetes/kubernetes-1.22.5/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch deleted file mode 100644 index a58e47d5b..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch +++ /dev/null @@ -1,50 +0,0 @@ -From ba9ab333c8b7dca5252e604837914293dc232732 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Fri, 11 Feb 2022 11:06:35 -0500 -Subject: [PATCH] kubelet: sort isolcpus allocation when SMT enabled - -The existing device manager code returns CPUs as devices in unsorted -order. This numerically sorts isolcpus allocations when SMT/HT is -enabled on the host. This logs SMT pairs, singletons, and algorithm -order details to make the algorithm understandable. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/devicemanager/manager.go | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 609da8ed86b..a4b247714f7 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -686,7 +686,16 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - return cpu_lst[0] - } - } -+ //Make post-analysis of selection algorithm obvious by numerical sorting -+ //the available isolated cpu_id. -+ cpu_ids := make([]int, 0, int(devices.Len())) - for cpu_id := range devices { -+ cpu_id_, _ := strconv.Atoi(cpu_id) -+ cpu_ids = append(cpu_ids, cpu_id_) -+ } -+ sort.Ints(cpu_ids) -+ for _, _cpu_id := range cpu_ids { -+ cpu_id := strconv.Itoa(_cpu_id) - // If we've already found cpu_id as a sibling, skip it. - if _, ok := _iterated_cpu[cpu_id]; ok { - continue -@@ -728,7 +737,9 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - } - } - } -- //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ //This algorithm will get some attention. Show minimal details. -+ klog.Infof("order_devices_by_sibling: needed=%d, smtpairs=%v, singletons=%v, order=%v", -+ needed, sibling_lst, single_lst, dev_lst) - return dev_lst, nil - } - func smt_enabled() bool { --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch b/kubernetes/kubernetes-1.22.5/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch deleted file mode 100644 index dbc28d503..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 95b7b6e1ddb25511c67a3d4018f62df1e76ee7bc Mon Sep 17 00:00:00 2001 -From: Tao Wang -Date: Tue, 25 Jan 2022 19:25:45 -0500 -Subject: [PATCH] kubernetes: make isolcpus allocation SMT-aware - -Enhance isolcpus support in Kubernetes to allocate isolated SMT -siblings to the same container when SMT/HT is enabled on the host. - -As it stands, the device manager code in Kubernetes is not SMT-aware -(since normally it doesn't deal with CPUs). However, StarlingX -exposes isolated CPUs as devices and if possible we want to allocate -all SMT siblings from a CPU core to the same container in order to -minimize cross- container interference due to resource contention -within the CPU core. - -The solution is basically to take the list of isolated CPUs and -re-order it so that the SMT siblings are next to each other. That -way the existing resource selection code will allocate the siblings -together. As an optimization, if it is known that an odd number -of isolated CPUs are desired, a singleton SMT sibling will be -inserted into the list to avoid breaking up sibling pairs. - -Signed-off-by: Tao Wang ---- - pkg/kubelet/cm/devicemanager/manager.go | 84 ++++++++++++++++++++++++- - 1 file changed, 83 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 60de14a9..609da8ed 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -19,11 +19,14 @@ package devicemanager - import ( - "context" - "fmt" -+ "io/ioutil" - "net" - "os" - "path/filepath" - "runtime" - "sort" -+ "strconv" -+ "strings" - "sync" - "time" - -@@ -41,6 +44,7 @@ import ( - "k8s.io/kubernetes/pkg/features" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors" -+ "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/checkpoint" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" -@@ -667,6 +671,75 @@ func (m *ManagerImpl) UpdateAllocatedDevices() { - m.allocatedDevices = m.podDevices.devices() - } - -+//Given a list of isolated CPUs in 'devices', and the number of desired CPUs in 'needed', -+//return an ordered list of isolated CPUs such that the first 'needed' CPUs in the list -+//contain as many hyperthread sibling pairs as possible. -+func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) { -+ var dev_lst []string -+ var single_lst []string -+ sibling_lst := make([]string, 0, int(devices.Len())) -+ _iterated_cpu := make(map[string]string) -+ get_sibling := func(cpu string, cpu_lst []string) string { -+ if cpu_lst[0] == cpu { -+ return cpu_lst[1] -+ } else { -+ return cpu_lst[0] -+ } -+ } -+ for cpu_id := range devices { -+ // If we've already found cpu_id as a sibling, skip it. -+ if _, ok := _iterated_cpu[cpu_id]; ok { -+ continue -+ } -+ devPath := fmt.Sprintf("/sys/devices/system/cpu/cpu%s/topology/thread_siblings_list", cpu_id) -+ dat, err := ioutil.ReadFile(devPath) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Can't read cpu[%s] thread_siblings_list", cpu_id) -+ } -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cpu_pair_set, err := cpuset.Parse(cpustring) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Unable to parse thread_siblings_list[%s] string to cpuset", cpustring) -+ } -+ var cpu_pair_lst []string -+ for _, v := range cpu_pair_set.ToSlice() { -+ cpu_pair_lst = append(cpu_pair_lst, strconv.Itoa(v)) -+ } -+ sibling_cpu_id := get_sibling(cpu_id, cpu_pair_lst) -+ if _, ok := devices[sibling_cpu_id]; ok { -+ sibling_lst = append(sibling_lst, cpu_id, sibling_cpu_id) -+ _iterated_cpu[sibling_cpu_id] = "" -+ } else { -+ single_lst = append(single_lst, cpu_id) -+ } -+ _iterated_cpu[cpu_id] = "" -+ } -+ if needed%2 == 0 { -+ dev_lst = append(sibling_lst, single_lst...) -+ } else { -+ if len(single_lst) > 1 { -+ _tmp_list := append(sibling_lst, single_lst[1:]...) -+ dev_lst = append(single_lst[0:1], _tmp_list...) -+ } else { -+ if len(single_lst) == 0 { -+ dev_lst = sibling_lst -+ } else { -+ dev_lst = append(single_lst, sibling_lst...) -+ } -+ } -+ } -+ //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ return dev_lst, nil -+} -+func smt_enabled() bool { -+ dat, _ := ioutil.ReadFile("/sys/devices/system/cpu/smt/active") -+ state := strings.TrimSuffix(string(dat), "\n") -+ if state == "0" { -+ return false -+ } -+ return true -+} -+ - // Returns list of device Ids we need to allocate with Allocate rpc call. - // Returns empty list in case we don't need to issue the Allocate rpc call. - func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, required int, reusableDevices sets.String) (sets.String, error) { -@@ -702,7 +775,16 @@ func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, requi - // Create a closure to help with device allocation - // Returns 'true' once no more devices need to be allocated. - allocateRemainingFrom := func(devices sets.String) bool { -- for device := range devices.Difference(allocated) { -+ availableDevices := devices.Difference(allocated).List() -+ // If we're dealing with isolcpus and SMT is enabled, reorder to group SMT siblings together. -+ if resource == "windriver.com/isolcpus" && len(devices) > 0 && smt_enabled() { -+ var err error -+ availableDevices, err = order_devices_by_sibling(devices.Difference(allocated), needed) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ } -+ for _, device := range availableDevices { - m.allocatedDevices[resource].Insert(device) - allocated.Insert(device) - needed-- --- -2.22.5 - diff --git a/kubernetes/kubernetes-1.22.5/centos/files/update-k8s-feature-gates.sh b/kubernetes/kubernetes-1.22.5/centos/files/update-k8s-feature-gates.sh deleted file mode 100644 index df2b9007f..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/files/update-k8s-feature-gates.sh +++ /dev/null @@ -1,196 +0,0 @@ -#!/bin/bash -# Copyright (c) 2022 Wind River Systems, Inc. -# -# SPDX-License-Identifier: Apache-2.0 -# -# This script is intended to be run during platform upgrade. -# It removes below feature gates from kube-apiserver configmap and rewrites -# kube-api-server and kube-controller-manager manifests -# - SCTPSupport=true -# - HugePageStorageMediumSize=true -# - TTLAfterFinished=true -# -# -# Background: -# HugePageStorageMediumSize is deprecated in Kubernetes 1.22 -# SCTPSupport blocks kube-apiserver pod to spawn after control-plane upgrade -# TTLAfterFinished value defaults to true from k8s 1.21 -# -# The script also preserves the advertise-address in kube-apiserver -# manifest that gets overwritten as kubeadm init is run again in this script. -# In other words, it maintains the effect of this commit -# https://opendev.org/starlingx/stx-puppet/commit/04a1c1b0809f66488bd54e3f31d323430e7d9913 -# -# Similarly, it removes the seccomp profiles configuration from the -# kube-apiserver manifest file to maintain the effect of this commit, -# https://opendev.org/starlingx/stx-puppet/commit/52ace69c837acc7e3aff8a2d584968297afd70fe - -KUBEADM_CONFIGMAP_TMPFILE='/tmp/kubeadm_cm' -API_SERVER_MANIFEST='/etc/kubernetes/manifests/kube-apiserver.yaml' - -rc_controller_manager=0 -rc_apiserver=0 - -function log { - logger -p local1.info "$1" -} - -function get_kubeadm_configmap { - - log "Retrieving kubeadm configmap to temporary location: ${KUBEADM_CONFIGMAP_TMPFILE}" - counter=0 - RC=0 - RETRIES=10 - until [ ${counter} -gt ${RETRIES} ]; do - kubectl --kubeconfig=/etc/kubernetes/admin.conf -n kube-system get \ - configmap kubeadm-config -o "$1" > ${KUBEADM_CONFIGMAP_TMPFILE} - RC=$? - if [ ${RC} == 0 ] ; then - log "Kubeadm configmap retrieved." - break - fi - log "Error retrieving kubeadm configmap, retrying..." - sleep 5 - counter=$(( counter+1 )) - done - - if [ ${counter} -gt ${RETRIES} ]; then - log "Failed to retrieve kubeadm configmap with error code [${RC}]". - exit ${RC} - fi -} - -# Update the configmap for kubeadm -function update_kubeadm_configmap { - - get_kubeadm_configmap yaml - - log "Updating kube-apiserver feature-gates in retrieved kubeadm-config" - - # Update api-server feature-gates - sed -i \ - 's/^\( *\)feature-gates:\s.*RemoveSelfLink=false/\1feature-gates: RemoveSelfLink=false/g' \ - ${KUBEADM_CONFIGMAP_TMPFILE} - rc_apiserver=$? - if [ ${rc_apiserver} == 0 ]; then - log "Successfully updated kube-apiserver feature-gates in retrieved kubeadm-config" - else - log "Failed to update kube-apiserver feature-gates in retrieved kubeadm-config with error code: [${rc_apiserver}]" - fi - - # update controller-manager feature-gates - sed -i \ - '/feature-gates: TTLAfterFinished=true/d' ${KUBEADM_CONFIGMAP_TMPFILE} - rc_controller_manager=$? - if [ ${rc_controller_manager} == 0 ]; then - log "Successfully updated controller-manager feature-gates in retrieved kubeadm-config" - else - # we need not gracefully exit here as failing to update this does not - # make any difference to the k8s cluster functions as default value of - # TTLAfterFinished is true - log "Failed to update controller-manager feature-gates in retrieved kubeadm-config with error code: [${rc_controller_manager}]" - fi - - if [ ${rc_controller_manager} ] || [ ${rc_apiserver} ]; then - if kubectl --kubeconfig=/etc/kubernetes/admin.conf replace -f \ - ${KUBEADM_CONFIGMAP_TMPFILE}; then - log 'Successfully replaced updated kubeadm configmap.' - else - RC=$? - log "Failed to replace updated kubeadm configmap with error code: [${RC}]" - rm -f ${KUBEADM_CONFIGMAP_TMPFILE} - exit ${RC} - fi - else - log "Failed to update ${KUBEADM_CONFIGMAP_TMPFILE}" - rm -f ${KUBEADM_CONFIGMAP_TMPFILE} - exit ${RC} - fi - -} - -function update_manifests { - - get_kubeadm_configmap jsonpath='{.data.ClusterConfiguration}' - - # Rewrite apiserver manifest only if it is updated in the configmap - if [ ${rc_apiserver} == 0 ]; then - kubeadm init phase control-plane apiserver \ - --config ${KUBEADM_CONFIGMAP_TMPFILE} - RC=$? - if [ ${RC} == 0 ]; then - log "Success executing kubeadm init phase control-plane for kube-api-server" - else - log "Failed to update kube-api-server manifest with error code: [${RC}]" - rm -f ${KUBEADM_CONFIGMAP_TMPFILE} - exit ${RC} - fi - fi - - # Rewrite controller-manager manifest only if it is updated in the configmap - if [ ${rc_controller_manager} == 0 ]; then - kubeadm init phase control-plane controller-manager \ - --config ${KUBEADM_CONFIGMAP_TMPFILE} - RC=$? - if [ ${RC} == 0 ]; then - log "Success executing kubeadm init phase control-plane for kube-controller-manager" - else - log "Failed to update kube-controller-manager manifest with error code: [${RC}]" - rm -f ${KUBEADM_CONFIGMAP_TMPFILE} - exit ${RC} - fi - fi - -} - -function preserve_apiserver_manifest_params { - - # The following code preserves the kube-apiserver advertise address that gets overwitten - # after kubeadm init phase is run in order to preserve the effect of: - # https://opendev.org/starlingx/stx-puppet/commit/04a1c1b0809f66488bd54e3f31d323430e7d9913 - DEFAULT_NETWORK_INTERFACE=$(grep 'advertise-address=' ${API_SERVER_MANIFEST} | cut -d "=" -f2) - RC=$? - if [ ${RC} == 0 ]; then - log "advertise-address: ${DEFAULT_NETWORK_INTERFACE}" - else - log "Failed to get advertise address from kube-apiserver manifest. Error code: [${RC}]" - fi - - if [ "${DEFAULT_NETWORK_INTERFACE}" ] && [ "${APISERVER_ADVERTISE_ADDRESS}" ]; then - sed -i "/oidc-issuer-url/! s/${DEFAULT_NETWORK_INTERFACE}/${APISERVER_ADVERTISE_ADDRESS}/g" ${API_SERVER_MANIFEST} - RC=$? - if [ ${RC} == 0 ]; then - log "Advertise address [${DEFAULT_NETWORK_INTERFACE}] is replaced by [${APISERVER_ADVERTISE_ADDRESS}] in kube-apiserver manifest." - else - log "Failed to preserve advertise address in kube-apiserver manifest. Error code: [${RC}]" - fi - fi - - # The following code removes seccomp profiles configuration from the kube-apiserver manifest - # to preserve the effect of: - # https://opendev.org/starlingx/stx-puppet/commit/52ace69c837acc7e3aff8a2d584968297afd70fe - sed -i '/securityContext:/,/type: RuntimeDefault/d' ${API_SERVER_MANIFEST} - RC=$? - if [ ${RC} == 0 ]; then - log "Seccomp Profile configuration removed from the kube-apiserver manifest if existed." - else - log "Failed to remove Seccomp Profile configuration from the kube-apiserver manifest. Error code: [${RC}]" - fi - -} - -APISERVER_ADVERTISE_ADDRESS=$(grep 'advertise-address=' ${API_SERVER_MANIFEST} | cut -d "=" -f2) -RC=$? -if [ ${RC} == 0 ]; then - log "advertise-address: ${APISERVER_ADVERTISE_ADDRESS}" -else - log "Failed to get advertise address from kube-apiserver manifest. Error code: [${RC}]" -fi - -update_kubeadm_configmap -update_manifests -preserve_apiserver_manifest_params - -rm -f ${KUBEADM_CONFIGMAP_TMPFILE} - -exit 0 diff --git a/kubernetes/kubernetes-1.22.5/centos/kubernetes.spec b/kubernetes/kubernetes-1.22.5/centos/kubernetes.spec deleted file mode 100644 index 825a20759..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/kubernetes.spec +++ /dev/null @@ -1,2259 +0,0 @@ -%if 0%{?fedora} -%global with_devel 1 -%global with_bundled 0 -%global with_debug 1 -%else -%global with_devel 0 -%global with_bundled 1 -%global with_debug 0 -%endif - -%if 0%{?with_debug} -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%else -%global debug_package %{nil} -%endif - -%global provider github -%global provider_tld com -%global project kubernetes -%global repo kubernetes -# https://github.com/kubernetes/kubernetes - -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global import_path k8s.io/kubernetes -%global commit 1.22.5 - -%global kube_version 1.22.5 -%global kube_git_version v%{kube_version} - -%global go_version 1.16.12 -%global go_path /usr/lib/golang-%{go_version}-%{go_version}/bin - -# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work -%global _buildshell /bin/bash -%global _checkshell /bin/bash - -# Used to simplify the paths for install and files -%global _stage1 %{_exec_prefix}/local/kubernetes/%{kube_version}/stage1 -%global _stage2 %{_exec_prefix}/local/kubernetes/%{kube_version}/stage2 - -%global local_sbindir /usr/local/sbin - -############################################## -Name: kubernetes-%{kube_version} -Version: %{kube_version} -Release: 1%{?_tis_dist}.%{tis_patch_ver} -Summary: Container cluster management -License: ASL 2.0 -URL: https://%{import_path} -ExclusiveArch: x86_64 aarch64 ppc64le s390x -Source0: %{project}-v%{kube_version}.tar.gz -Source4: kubeadm.conf -Source5: kubelet-cgroup-setup.sh -Source6: update-k8s-feature-gates.sh - -Patch1: kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch -Patch2: kubelet-cpumanager-keep-normal-containers-off-reserv.patch -Patch3: kubelet-cpumanager-infrastructure-pods-use-system-re.patch -Patch4: kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch -Patch5: kubeadm-create-platform-pods-with-zero-CPU-resources.patch -Patch6: enable-support-for-kubernetes-to-ignore-isolcpus.patch -Patch7: Revert-use-subpath-for-coredns-only-for-default-repo.patch -Patch8: kubernetes-make-isolcpus-allocation-SMT-aware.patch -Patch9: kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch - - -# It obsoletes cadvisor but needs its source code (literally integrated) -Obsoletes: cadvisor - -# kubernetes is decomposed into master and node subpackages -# require both of them for updates -Requires: kubernetes-%{kube_version}-master -Requires: kubernetes-%{kube_version}-node - -%description -%{summary} - -%if 0%{?with_devel} -%package devel -Summary: %{summary} -BuildArch: noarch - -Provides: golang(%{import_path}/cmd/genutils) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubectl/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/normalization) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/install) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/conversion-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/deepcopy-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/generator) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/go-to-protobuf/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/import-boss/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/namer) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/parser) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/set-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/types) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/install) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/pkg/federation-controller/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/admission) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/annotations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/endpoints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta/metatypes) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest/resttest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing/compat) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery/registered) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v0) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v2alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/audit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator/bearertoken) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/union) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/handlers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/chaosclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/leaderelection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/record) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/restclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/testing/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/transport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/dynamic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/adapters/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/auth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient/simple) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/azure) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/cloudstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/gce) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/mesos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/openstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/ovirt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/rackspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/vsphere) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/daemon) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/disruption) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework/informers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector/metaonly) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podgc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/route) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/statusupdater) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion/queryparams) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/dns) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fieldpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fields) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/openapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/healthz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/httplog) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/rollout) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/set) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/templates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/editor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/jsonmerge) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/metricsutil) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/client) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cm) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/custommetrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockershim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockertools) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/envvars) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/events) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/eviction) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/images) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/kuberuntime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/leaky) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hairpin) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/kubenet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/mock_network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pleg) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/results) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/qos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/remote) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt/mock_os) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rktshim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/status) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/format) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/ioutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/queue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/sliceutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubemark) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master/ports) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/http) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/tcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/healthcheck) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/userspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/evaluator/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/subjectaccessreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/cachesize) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/componentstatus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/experimental/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rangeallocation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/registrytest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/tokenreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/recognizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/streaming) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/versioning) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontext) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/seccomp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/selection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ssh) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/etcdtest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing/testingcert) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend/factory) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ui) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/async) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/bandwidth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chmod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chown) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/clock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/codeinspector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/configz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crlf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crypto) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/dbus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/diff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/ebtables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/env) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flowcontrol) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flushwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/framer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap/exponentialbackoff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/hash) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/homedir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream/spdy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/integer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/interrupt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/intstr) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/io) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/jsonpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/keymutex) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/limitwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/logs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/maps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/mount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/oom) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/parsers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/procfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/resourcecontainer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rlimit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/slice) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strategicpatch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strings) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/system) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/term) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/threading) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/uuid) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation/field) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wait) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/workqueue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wsstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/verflag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/aws_ebs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_dd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_file) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cephfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cinder) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/downwardapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/empty_dir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/fc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flexvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flocker) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/gce_pd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/git_repo) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/glusterfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/host_path) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/iscsi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/nfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/quobyte) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/rbd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/nestedpendingoperations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/operationexecutor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/volumehelper) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/vsphere_volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/versioned) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/admit) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/alwayspullimages) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/antiaffinity) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/deny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/exec) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/initialresources) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/limitranger) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/autoprovision) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/exists) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/persistentvolume/label) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/securitycontext/scdeny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/storageclass/default) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/allow) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/keystone) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/passwordfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/basicauth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/union) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/x509) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokenfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokentest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/predicates) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities/util) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider/defaults) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/factory) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/schedulercache) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/webhook) = %{version}-%{release} - -%description devel -Libraries for building packages importing k8s.io/kubernetes. -Currently, the devel is not suitable for development. -It is meant only as a buildtime dependency for other projects. - -This package contains library source intended for -building other packages which use %{project}/%{repo}. -%endif - -############################################## -%package unit-test -Summary: %{summary} - for running unit tests - -# below Rs used for testing -Requires: golang-%{go_version} -Requires: etcd >= 2.0.9 -Requires: hostname -Requires: rsync -Requires: NetworkManager - -%description unit-test -%{summary} - for running unit tests - -############################################## -%package master -Summary: Kubernetes services for master host - -# Build with the recommended golang for this Kubernetes version -BuildRequires: golang-%{go_version} -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: kubernetes-%{kube_version}-client - -%description master -Kubernetes services for master host - -############################################## -%package node -Summary: Kubernetes services for node host - -%if 0%{?fedora} >= 27 -Requires: (docker or docker-ce) -Suggests: docker-ce -%else -Requires: docker-ce -%endif -Requires: conntrack-tools - -BuildRequires: golang-%{go_version} -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: socat -Requires: kubernetes-%{kube_version}-client - -%description node -Kubernetes services for node host - -############################################## -%package kubeadm -Summary: Kubernetes tool for standing up clusters -Requires: kubernetes-%{kube_version}-client -Requires: containernetworking-cni - -%description kubeadm -Kubernetes tool for standing up clusters - -############################################## -%package client -Summary: Kubernetes client tools - -BuildRequires: golang-%{go_version} -BuildRequires: go-bindata - -%description client -Kubernetes client tools like kubectl - -############################################## -%package kube-misc -Summary: dummy package -%description kube-misc -Kubernetes dummy package for misc stuff we don't want to -install in production. - -############################################## - -%prep -%setup -q -n %{repo}-%{commit} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 - - -#src/k8s.io/kubernetes/pkg/util/certificates -# Patch the code to remove eliptic.P224 support -for dir in vendor/github.com/google/certificate-transparency/go/x509 pkg/util/certificates; do - if [ -d "${dir}" ]; then - pushd ${dir} - sed -i "/^[^=]*$/ s/oidNamedCurveP224/oidNamedCurveP256/g" *.go - sed -i "/^[^=]*$/ s/elliptic\.P224/elliptic.P256/g" *.go - popd - fi -done - -# Move all the code under src/k8s.io/kubernetes directory -mkdir -p src/k8s.io/kubernetes -mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. - -############### - -%build -export PATH=%{go_path}:$PATH -export PBR_VERSION=%{version} -pushd src/k8s.io/kubernetes/ -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=%{commit} -export KUBE_GIT_VERSION=%{kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace - -# Verify the go version we will build against -go version - -# https://bugzilla.redhat.com/show_bug.cgi?id=1392922#c1 -%ifarch ppc64le -export GOLDFLAGS='-linkmode=external' -%endif - -# uncomment these two lines to build unoptimized binaries for debugging. -# export GOLDFLAGS="" -# export GOGCFLAGS="-N -l" -make WHAT="cmd/kube-proxy cmd/kube-apiserver cmd/kube-controller-manager cmd/kubelet cmd/kubeadm cmd/kube-scheduler cmd/kubectl" - -# convert md to man -./hack/generate-docs.sh || true -pushd docs -pushd admin -cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. -popd -popd - -%install -# go_path required for setup_env golang version check -export PATH=%{go_path}:$PATH -export PBR_VERSION=%{version} -pushd src/k8s.io/kubernetes/ -. hack/lib/init.sh -kube::golang::setup_env - -%ifarch ppc64le -output_path="_output/local/go/bin" -%else -output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" -%endif - -install -m 755 -d %{buildroot}%{_bindir} -install -m 755 -d %{buildroot}%{_stage1}%{_bindir} -install -m 755 -d %{buildroot}%{_stage2}%{_bindir} -install -d %{buildroot}%{local_sbindir} - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kubeadm" -install -p -m 755 -t %{buildroot}%{_stage1}%{_bindir} ${output_path}/kubeadm -install -d -m 0755 %{buildroot}%{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d -install -p -m 0644 -t %{buildroot}%{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE4} - -echo "+++ INSTALLING kubelet-cgroup-setup.sh" -install -p -m 0700 -t %{buildroot}%{_stage2}%{_bindir} %{SOURCE5} - -echo "+++ INSTALLING update-k8s-feature-gates.sh" -install -m 0700 %{SOURCE6} %{buildroot}/%{local_sbindir}/update-k8s-feature-gates.sh - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kube-controller-manager" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-controller-manager - -echo "+++ INSTALLING kube-scheduler" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-scheduler - -echo "+++ INSTALLING kube-proxy" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-proxy - -echo "+++ INSTALLING kubelet" -install -p -m 754 -t %{buildroot}%{_stage2}%{_bindir} ${output_path}/kubelet - -echo "+++ INSTALLING kubectl" -install -p -m 754 -t %{buildroot}%{_stage2}%{_bindir} ${output_path}/kubectl - -# install the bash completion -install -d -m 0755 %{buildroot}%{_stage2}%{_datadir}/bash-completion/completions/ -%{buildroot}%{_stage2}%{_bindir}/kubectl completion bash > %{buildroot}%{_stage2}%{_datadir}/bash-completion/completions/kubectl - -# install specific cluster addons for optional use -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons -# Addon: volumesnapshots -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/crd -install -m 0644 -t %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/crd cluster/addons/volumesnapshots/crd/* -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller -install -m 0644 -t %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller cluster/addons/volumesnapshots/volume-snapshot-controller/* - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 -rm -Rf %{buildroot}%{_mandir}/man1/cloud-controller-manager.* -# from k8s tarball copied docs/man/man1/*.1 - -# source codes for building projects -%if 0%{?with_devel} -install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ -echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list -# find all *.go but no *_test.go files and generate devel.file-list -for file in $(find . -iname "*.go" \! -iname "*_test.go") ; do - echo "%%dir %%{gopath}/src/%%{import_path}/$(dirname $file)" >> devel.file-list - install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$(dirname $file) - cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file - echo "%%{gopath}/src/%%{import_path}/$file" >> devel.filelist -done -%endif - - -%if 0%{?with_devel} -sort -u -o devel.file-list devel.file-list -%endif - -popd - -%if 0%{?with_devel} -mv src/k8s.io/kubernetes/devel.file-list . -%endif - -mv src/k8s.io/kubernetes/*.md . -mv src/k8s.io/kubernetes/LICENSE . - - -# place files for unit-test rpm -install -d -m 0755 %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -# basically, everything from the root directory is needed -# unit-tests needs source code -# integration tests needs docs and other files -# test-cmd.sh atm needs cluster, examples and other -cp -a src %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -rm -rf %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/_output -cp -a *.md %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/ - -%check -# Fedora, RHEL7 and CentOS are tested via unit-test subpackage -if [ 1 != 1 ]; then -echo "******Testing the commands*****" -hack/test-cmd.sh -echo "******Benchmarking kube********" -hack/benchmark-go.sh - -# In Fedora 20 and RHEL7 the go cover tools isn't available correctly -%if 0%{?fedora} >= 21 -echo "******Testing the go code******" -hack/test-go.sh -echo "******Testing integration******" -hack/test-integration.sh --use_go_build -%endif -fi - -############################################## -%files -# empty as it depends on master and node - -############################################## -%files master -%license LICENSE -%doc *.md -%attr(754, -, root) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver -%{_bindir}/kube-controller-manager -%{_bindir}/kube-scheduler -%dir %{_sysconfdir}/%{name} -%dir %{_sysconfdir}/%{name}/addons -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots/crd -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshots.yaml -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller -%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller/volume-snapshot-controller-deployment.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller/rbac-volume-snapshot-controller.yaml - -############################################## -%files node -%license LICENSE -%{_stage2}%{_bindir}/kubelet -%{_stage2}%{_bindir}/kubelet-cgroup-setup.sh -%{local_sbindir}/update-k8s-feature-gates.sh - -############################################## -%files kubeadm -%license LICENSE -%{_stage1}%{_bindir}/kubeadm -%dir %{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d -%config(noreplace) %{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf - -############################################## -%files client -%license LICENSE -%{_stage2}%{_bindir}/kubectl -%{_stage2}%{_datadir}/bash-completion/completions/kubectl - -############################################## -%files unit-test -%{_sharedstatedir}/kubernetes-unit-test/ - -%if 0%{?with_devel} -%files devel -f devel.file-list -%doc *.md -%dir %{gopath}/src/k8s.io -%endif - -############################################## -%files kube-misc -%{_mandir}/man1/kube-apiserver.1* -%{_mandir}/man1/kube-controller-manager.1* -%{_mandir}/man1/kube-scheduler.1* -%{_mandir}/man1/kube-proxy.1* -%{_bindir}/kube-proxy -%{_mandir}/man1/kubelet.1* -%{_mandir}/man1/kubeadm.1* -%{_mandir}/man1/kubeadm-* -%{_mandir}/man1/kubectl.1* -%{_mandir}/man1/kubectl-* - -############################################## - -%pre master - -%post master -%systemd_post kube-apiserver kube-scheduler kube-controller-manager - -%preun master -%systemd_preun kube-apiserver kube-scheduler kube-controller-manager - -%postun master -%systemd_postun - - -%pre node - -%post node - -%preun node - -%postun node -%systemd_postun - -############################################ -%changelog -* Tue Mar 27 2018 Spyros Trigazis - 1.10.0-1 -- Bump to upstream v1.10.0 - -* Thu Mar 22 2018 Spyros Trigazis - 1.9.6-1 -- Bump to upstream v1.9.6 - -* Tue Mar 20 2018 Jan Chaloupka - 1.9.5-1 -- Bump to upstream v1.9.5 - resolves: #1554420 - -* Sun Feb 11 2018 Spyros Trigazis - 1.9.3-1 -- Bump to upstream v1.9.3 - -* Fri Feb 09 2018 Jan Chaloupka - 1.9.1-5 -- Add --fail-swap-on=false flag to the /etc/kubernetes/kubelet - resolves: #1542476 - -* Thu Feb 08 2018 Igor Gnatenko - 1.9.1-4 -- Escape macro in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 1.9.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Jan 15 2018 Jan Chaloupka - 1.9.1-2 -- If docker is not available, try docker-ce instead (use boolean dependencies) - resolves: #1534508 - -* Fri Jan 12 2018 Spyros Trigazis - 1.9.1-1 -- Update to upstream v1.9.1 - resolves #1533794 - -* Tue Oct 24 2017 Jan Chaloupka - 1.8.1-1 -- Update to upstream v1.8.1 - resolves: #1497135 - -* Mon Oct 02 2017 Jan Chaloupka - 1.8.0-1 -- Update to upstream v1.8.0 - related: #1497625 - -* Mon Oct 02 2017 Jan Chaloupka - 1.7.7-1 -- Update to upstream v1.7.7 - resolves: #1497625 - -* Mon Sep 18 2017 Jan Chaloupka - 1.7.6-1 -- Update to upstream v1.7.6 - resolves: #1492551 - -* Mon Sep 11 2017 Jan Chaloupka - 1.7.5-1 -- Update to upstream v1.7.5 - resolves: #1490316 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.4-1 -- Fix the version - related: #1482874 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.3-2 -- Update to upstream v1.7.4 - resolves: #1482874 - -* Tue Aug 08 2017 Jan Chaloupka - 1.7.3-1 -- Update to upstream v1.7.3 - resolves: #1479685 - -* Thu Aug 03 2017 Fedora Release Engineering - 1.7.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Sun Jul 30 2017 Florian Weimer - 1.7.2-3 -- Rebuild with binutils fix for ppc64le (#1475636) - -* Wed Jul 26 2017 Fedora Release Engineering - 1.7.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.2-1 -- Update to upstream v1.7.2 - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.1-2 -- Sync kubeadm.conf with upstream service configuration (set Restart,StartLimitInterval,RestartSec) - -* Fri Jul 14 2017 Jan Chaloupka - 1.7.1-1 -- Update to upstream v1.7.1 - resolves: #1471767 - -* Sat Jul 08 2017 Jan Chaloupka - 1.6.7-1 -- Update to upstream v1.6.7 - resolves: #1468823 - resolves: #1468752 - -* Fri May 19 2017 Timothy St. Clair - 1.6.4-1 -- Add kubeadm subpackage to enable upstream deployments - -* Thu May 18 2017 Jan Chaloupka - 1.6.3-1 -- Update to upstream v1.6.3 - resolves: #1452101 - -* Fri May 12 2017 Jan Chaloupka - 1.6.2-2 -- Extend archs with s390x - resolves: #1400000 - -* Tue May 02 2017 Jan Chaloupka - 1.6.2-1 -- Update to upstream v1.6.2 - resolves: #1447338 - -* Tue Apr 11 2017 Jan Chaloupka - 1.6.1-1 -- Update to upstream v1.6.1 - related: #1422889 - -* Fri Mar 31 2017 Jan Chaloupka - 1.5.6-1 -- Update to upstream v1.5.6 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.5-4 -- Update to upstream v1.5.5 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.4-3 -- re-enable debug-info - related: #1422889 - -* Thu Mar 09 2017 Jan Chaloupka - 1.5.4-2 -- Bump to upstream 7243c69eb523aa4377bce883e7c0dd76b84709a1 - related: #1422889 - -* Thu Feb 16 2017 Jan Chaloupka - 1.5.3-1 -- Update to upstream v1.5.3 - resolves: #1422889 - -* Fri Feb 10 2017 Fedora Release Engineering - 1.5.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Wed Jan 18 2017 Jan Chaloupka - 1.5.2-2 -- fix rootScopeNaming generate selfLink - resolves: #1413997 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.2-1 -- Bump version as well - related: #1412996 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.1-2 -- Bump to upstream 1.5.2 - resolves: #1412996 - -* Thu Jan 05 2017 Jan Chaloupka - 1.5.1-1 -- Bump to upstream 1.5.1 - resolves: #1410186 - -* Wed Jan 04 2017 Jan Chaloupka - 1.4.7-2 -- Generate the md files before they are converted to man pages - resolves: #1409943 - -* Mon Dec 12 2016 Jan Chaloupka - 1.4.7-1 -- Bump to upstream v1.4.7 - resolves: #1403823 - New conntrack-tools dependency of kube-proxy - Build kubernetes on ppc64le with linkmode=external - resolves: #1392922 - -* Mon Nov 14 2016 jchaloup - 1.4.5-3 -- Patch unit-test subpackage to run tests over k8s distro binaries - -* Wed Nov 09 2016 jchaloup - 1.4.5-2 -- Add missing if devel around generated devel.file-list - related: #1390074 - -* Tue Nov 08 2016 jchaloup - 1.4.5-1 -- Bump to upstream v1.4.5 (flip back to upstream based Kubernetes) - related: #1390074 - -* Mon Oct 31 2016 jchaloup - 1.4.0-0.1.beta3.git52492b4 -- Update to origin v1.4.0-alpha.0 (ppc64le and arm unbuildable with the current golang version) - resolves: #1390074 - -* Mon Oct 24 2016 jchaloup - 1.3.0-0.4.git52492b4 -- Update to origin v1.3.1 - resolves: #1388092 - -* Thu Sep 08 2016 jchaloup - 1.3.0-0.3.rc1.git507d3a7 -- Update to origin v1.3.0-rc1 - resolves: #1374361 - -* Thu Aug 11 2016 Dennis Gilmore -1.3.0-0.2.git4a3f9c5 -- enable armv7hl and aarch64 - -* Tue Aug 09 2016 jchaloup - 1.3.0-0.1.git4a3f9c5 -- Update to origin v1.3.0-alpha.3 - resolves: #1365601 - -* Thu Jul 21 2016 Fedora Release Engineering - 1.2.0-0.27.git4a3f9c5 -- https://fedoraproject.org/wiki/Changes/golang1.7 - -* Sun Jul 17 2016 jchaloup - 1.2.0-0.26.git4a3f9c5 -- Update to origin v1.2.1 - resolves: #1357261 - -* Wed Jul 13 2016 jchaloup - 1.2.0-0.25.git4a3f9c5 -- Enable CPU and Memory accounting on a node - -* Wed Jun 29 2016 jchaloup - 1.2.0-0.24.git4a3f9c5 -- Be more verbose about devel subpackage - resolves: #1269449 - -* Tue Jun 28 2016 jchaloup - 1.2.0-0.23.git4a3f9c5 -- Own /run/kubernetes directory - resolves: #1264699 - -* Sat May 28 2016 jchaloup - 1.2.0-0.22.git4a3f9c5 -- Bump to origin v1.2.0 - resolves: #1340643 - -* Wed May 04 2016 jchaloup - 1.2.0-0.21.git4a3f9c5 -- Extend uni-test subpackage to run other tests - -* Mon Apr 25 2016 jchaloup - 1.2.0-0.20.git4a3f9c5 -- Update support for ppc64le to use go compiler - related: #1306214 - -* Thu Apr 21 2016 jchaloup - 1.2.0-0.19.git4a3f9c5 -- Fix support for ppc64le - related: #1306214 - -* Tue Apr 19 2016 jchaloup - 1.2.0-0.18.git4a3f9c5 -- Bump to origin v1.1.6 - resolves: #1328357 - -* Mon Apr 11 2016 jchaloup - 1.2.0-0.17.alpha6.git4a3f9c5 -- Don't disable extensions/v1beta1 by default to conform with upstream documentation - -* Wed Mar 30 2016 jchaloup - 1.2.0-0.16.alpha6.git4a3f9c5 - Update to origin's v1.1.5 - Build on ppc64le as well - resolves: #1306214 - -* Tue Mar 08 2016 jchaloup - 1.2.0-0.15.alpha6.gitf0cd09a -- hyperkube.server: don't parse args for any command - -* Fri Mar 04 2016 jchaloup - 1.2.0-0.14.alpha6.gitf0cd09a -- Disable extensions/v1beta1 implicitly - -* Tue Mar 01 2016 jchaloup - 1.2.0-0.13.alpha6.gitf0cd09a -- Hyperkube checks flags of individual commands/servers even if it does not define their flags. - Thus resulting in 'uknown shorthand flag' error - -* Mon Feb 29 2016 jchaloup - 1.2.0-0.12.alpha6.gitf0cd09a -- Disable v1beta3 -- hyperkube-kubectl-dont shift os.Args - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.11.alpha6.gitf0cd09a -- add kube- prefix to controller-manager, proxy and scheduler - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.10.alpha6.gitf0cd09a -- Hardlink kube-controller-manager, kuber-scheduler, kubectl, kubelet and kube-proxy into hyperkube -- Keep kube-apiserver binary as it is (it has different permission and capabilities) - -* Thu Feb 25 2016 jchaloup - 1.2.0-0.9.alpha6.gitf0cd09a -- Fix Content-Type of docker client response - resolves: #1311861 - -* Mon Feb 22 2016 Fedora Release Engineering - 1.2.0-0.8.alpha6.gitf0cd09a -- https://fedoraproject.org/wiki/Changes/golang1.6 - -* Mon Feb 22 2016 jchaloup - 1.2.0-0.7.alpha6.git4c8e6f4 -- Bump to origin 1.1.3 - kube-version-change command replaced with kubectl convert (check out docs/admin/cluster-management.md) - related: 1295066 - -* Thu Feb 04 2016 Fedora Release Engineering - 1.2.0-0.6.alpha1.git4c8e6f4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jan 21 2016 jchaloup - 1.2.0-0.5.alpha1.git4c8e6f4 -- Bump to upstream e1d9873c1d5711b83fd3dd7eefe83a88ceb92c08 - related: #1291860 - -* Thu Jan 07 2016 jchaloup - 1.2.0-0.4.alpha1.git4c8e6f4 -- Move definition of all version, git and commit macros at one place - resolves: #1291860 - -* Fri Jan 01 2016 jchaloup - 1.2.0-0.3.alpha1.git4c8e6f4 -- Bump to upstream bf56e235826baded1772fb340266b8419c3e8f30 - Rebase to origin's "v1.1.0.1 - Security Update to v1.1" release - resolves: #1295066 - -* Thu Nov 26 2015 jchaloup - 1.2.0-0.2.alpha1.git4c8e6f4 -- Bump to origin upstream a41c9ff38d52fd508481c3c2bac13d52871fde02 -- Build kubernetes from origin's Godeps using hack/build-go.sh - origin's Godeps = kubernetes upstream + additional patches - -* Tue Oct 20 2015 jchaloup - 1.2.0-0.1.alpha1.git4c8e6f4 -- Bump to upstream 403de3874fba420fd096f2329b45fe2f5ae97e46 - related: #1211266 - -* Wed Oct 14 2015 jchaloup - 1.1.0-0.41.alpha1.gite9a6ef1 -- Bump to origin upstream e9a6ef1cd4c29d45730289a497d18b19d7ba450d - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.40.alpha1.git5f38cb0 -- Add missing short option for --server of kubectl -- Update unit-test-subpackage (only test-cmd.sh atm) - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.39.alpha1.git5f38cb0 -- Add normalization of flags - related: #1211266 - -* Fri Oct 02 2015 jchaloup - 1.1.0-0.38.alpha1.git5f38cb0 -- Restore unit-test subpackage (not yet tested) - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.37.alpha1.git5f38cb0 -- Do not unset default cluster, otherwise k8s ends with error when no cluster set - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.36.alpha0.git5f38cb0 -- Bump to o4n 5f38cb0e98c9e854cafba9c7f98dafd51e955ad8 - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.35.alpha1.git2695cdc -- Update git version of k8s and o4n, add macros - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.34.alpha1.git2695cdc -- Built k8s from o4n tarball -- Bump to upstream 2695cdcd29a8f11ef60278758e11f4817daf3c7c - related: #1211266 - -* Tue Sep 22 2015 jchaloup - 1.1.0-0.33.alpha1.git09cf38e -- Bump to upstream 09cf38e9a80327e2d41654db277d00f19e2c84d0 - related: #1211266 - -* Thu Sep 17 2015 jchaloup - 1.1.0-0.32.alpha1.git400e685 -- Bump to upstream 400e6856b082ecf4b295568acda68d630fc000f1 - related: #1211266 - -* Wed Sep 16 2015 jchaloup - 1.1.0-0.31.gitd549fc4 -- Bump to upstream d549fc400ac3e5901bd089b40168e1e6fb17341d - related: #1211266 - -* Tue Sep 15 2015 jchaloup - 1.1.0-0.30.gitc9570e3 -- Bump to upstream c9570e34d03c6700d83f796c0125d17c5064e57d - related: #1211266 - -* Mon Sep 14 2015 jchaloup - 1.1.0-0.29.git86b4e77 -- Bump to upstream 86b4e777e1947c1bc00e422306a3ca74cbd54dbe - related: #1211266 - -* Thu Sep 10 2015 jchaloup - 1.1.0-0.28.gitf867ba3 -- Bump to upstream f867ba3ba13e3dad422efd21c74f52b9762de37e - related: #1211266 - -* Wed Sep 09 2015 jchaloup - 1.1.0-0.27.git0f4fa4e -- Bump to upstream 0f4fa4ed25ae9a9d1824fe55aeefb4d4ebfecdfd - related: #1211266 - -* Tue Sep 08 2015 jchaloup - 1.1.0-0.26.git196f58b -- Bump to upstream 196f58b9cb25a2222c7f9aacd624737910b03acb - related: #1211266 - -* Mon Sep 07 2015 jchaloup - 1.1.0-0.25.git96e0ed5 -- Bump to upstream 96e0ed5749608d4cc32f61b3674deb04c8fa90ad - related: #1211266 - -* Sat Sep 05 2015 jchaloup - 1.1.0-0.24.git2e2def3 -- Bump to upstream 2e2def36a904fe9a197da5fc70e433e2e884442f - related: #1211266 - -* Fri Sep 04 2015 jchaloup - 1.1.0-0.23.gite724a52 -- Bump to upstream e724a5210adf717f62a72162621ace1e08730c75 - related: #1211266 - -* Thu Sep 03 2015 jchaloup - 1.1.0-0.22.gitb6f2f39 -- Bump to upstream b6f2f396baec5105ff928cf61903c2c368259b21 - related: #1211266 - -* Wed Sep 02 2015 jchaloup - 1.1.0-0.21.gitb4a3698 -- Bump to upstream b4a3698faed81410468eccf9f328ca6df3d0cca3 - related: #1211266 - -* Tue Sep 01 2015 jchaloup - 1.1.0-0.20.git2f9652c -- Bump to upstream 2f9652c7f1d4b8f333c0b5c8c1270db83b913436 - related: #1211266 - -* Mon Aug 31 2015 jchaloup - 1.1.0-0.19.git66a644b -- Bump to upstream 66a644b275ede9ddb98eb3f76e8d1840cafc2147 - related: #1211266 - -* Thu Aug 27 2015 jchaloup - 1.1.0-0.18.gitab73849 -- Bump to upstream ab7384943748312f5e9294f42d42ed3983c7c96c - related: #1211266 - -* Wed Aug 26 2015 jchaloup - 1.1.0-0.17.git00e3442 -- Bump to upstream 00e34429e0242323ed34347cf0ab65b3d62b21f7 - related: #1211266 - -* Tue Aug 25 2015 jchaloup - 1.1.0-0.16.gita945785 -- Bump to upstream a945785409d5b68f3a2721d2209300edb5abf1ce - related: #1211266 - -* Mon Aug 24 2015 jchaloup - 1.1.0-0.15.git5fe7029 -- Bump to upstream 5fe7029e688e1e5873a0b95a622edda5b5156d2b - related: #1211266 - -* Fri Aug 21 2015 jchaloup - 1.1.0-0.14.gitb6f18c7 -- Bump to upstream b6f18c7ce08714c8d4f6019463879a164a41750e - related: #1211266 - -* Thu Aug 20 2015 jchaloup - 1.1.0-0.13.git44fa48e -- Bump to upstream 44fa48e5af44d3e988fa943d96a2de732d8cc666 - related: #1211266 - -* Wed Aug 19 2015 jchaloup - 1.1.0-0.12.gitb5a4a54 -- Bump to upstream b5a4a548df0cffb99bdcc3b9b9e48d4025d0541c - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.11.git919c7e9 -- Bump to upstream 919c7e94e23d2dcd5bdd96896e0a7990f9ae3338 - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.10.git280b66c -- Bump to upstream 280b66c9012c21e253acd4e730f8684c39ca08ec - related: #1211266 - -* Mon Aug 17 2015 jchaloup - 1.1.0-0.9.git081d9c6 -- Bump to upstream 081d9c64d25c20ec16035036536511811118173d - related: #1211266 - -* Fri Aug 14 2015 jchaloup - 1.1.0-0.8.git8dcbeba -- Bump to upstream 8dcbebae5ef6a7191d9dfb65c68833c6852a21ad - related: #1211266 - -* Thu Aug 13 2015 jchaloup - 1.1.0-0.7.git968cbbe -- Bump to upstream 968cbbee5d4964bd916ba379904c469abb53d623 - related: #1211266 - -* Wed Aug 12 2015 jchaloup - 1.1.0-0.6.gitc91950f -- Bump to upstream c91950f01cb14ad47486dfcd2fdfb4be3ee7f36b - related: #1211266 - -* Tue Aug 11 2015 jchaloup - 1.1.0-0.5.gite44c8e6 -- Bump to upstream e44c8e6661c931f7fd434911b0d3bca140e1df3a - related: #1211266 - -* Mon Aug 10 2015 jchaloup - 1.1.0-0.4.git2bfa9a1 -- Bump to upstream 2bfa9a1f98147cfdc2e9f4cf50e2c430518d91eb - related: #1243827 - -* Thu Aug 06 2015 jchaloup - 1.1.0-0.3.git4c42e13 -- Bump to upstream 4c42e1302d3b351f3cb6074d32aa420bbd45e07d -- Change import path prefix to k8s.io/kubernetes - related: #1243827 - -* Wed Aug 05 2015 jchaloup - 1.1.0-0.2.git159ba48 -- Bump to upstream 159ba489329e9f6ce422541e13f97e1166090ec8 - related: #1243827 - -* Sat Aug 01 2015 jchaloup - 1.1.0-0.1.git6129d3d -- Bump to upstream 6129d3d4eb80714286650818081a64ce2699afed - related: #1243827 - -* Fri Jul 31 2015 jchaloup - 1.0.0-0.18.gitff058a1 -- Bump to upstream ff058a1afeb63474f7a35805941f3b07c27aae0f - related: #1243827 - -* Thu Jul 30 2015 jchaloup - 1.0.0-0.17.git769230e -- Bump to upstream 769230e735993bb0bf924279a40593c147c9a6ab - related: #1243827 - -* Wed Jul 29 2015 jchaloup - 1.0.0-0.16.gitdde7222 -- Bump to upstream dde72229dc9cbbdacfb2e44b22d9d5b357027020 - related: #1243827 - -* Tue Jul 28 2015 jchaloup - 1.0.0-0.15.gitc5bffaa -- Bump to upstream c5bffaaf3166513da6259c44a5d1ba8e86bea5ce - related: #1243827 - -* Sat Jul 25 2015 jchaloup - 1.0.0-0.14.git5bd82ff -- Bump to upstream 5bd82ffe6da8f4e72e71b362635e558bfc412106 - related: #1243827 - -* Fri Jul 24 2015 jchaloup - 1.0.0-0.13.git291acd1 -- Bump to upstream 291acd1a09ac836ec7524b060a19a6498d9878dd - related: #1243827 - -* Thu Jul 23 2015 jchaloup - 1.0.0-0.12.gitfbed349 -- Bump to upstream fbed3492bfa09e59b1c423fdd7c1ecad333a06ef - related: #1243827 - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.11.gitfbc85e9 -- Add runtime dependency of kubernetes-node on socat (so kubectl port-forward works on AH) - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.10.gitfbc85e9 -- Update the build script for go1.5 as well -- Bump to upstream fbc85e9838f25547be94fbffeeb92a756d908ca0 - related: #1243827 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.9.git2d88675 -- Bump to upstream 2d88675f2203d316d4bac312c7ccad12991b56c2 -- Change KUBE_ETCD_SERVERS to listen on 2379 ports instead of 4001 - resolves: #1243827 -- Add kubernetes-client to provide kubectl command - resolves: #1241469 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.8.gitb2dafda -- Fix dependency and tests for go-1.5 -- with_debug off as the builds ends with error "ELFRESERVE too small: ..." - -* Sat Jul 18 2015 Eric Paris - 1.0.0-0.7.gitb2dafda -- Update apiserver binary gid - -* Fri Jul 17 2015 jchaloup - 1.0.0-0.6.gitb2dafda -- Bump to upstream b2dafdaef5aceafad503ab56254b60f80da9e980 - related: #1211266 - -* Thu Jul 16 2015 jchaloup - 1.0.0-0.5.git596a8a4 -- Bump to upstream 596a8a40d12498b5335140f50753980bfaea4f6b - related: #1211266 - -* Wed Jul 15 2015 jchaloup - 1.0.0-0.4.git6ba532b -- Bump to upstream 6ba532b218cb5f5ea3f0e8dce5395182f388536c - related: #1211266 - -* Tue Jul 14 2015 jchaloup - 1.0.0-0.3.gitc616182 -- Bump to upstream c6161824db3784e6156131307a5e94647e5557fd - related: #1211266 - -* Mon Jul 13 2015 jchaloup - 1.0.0-0.2.git2c27b1f -- Bump to upstream 2c27b1fa64f4e70f04575d1b217494f49332390e - related: #1211266 - -* Sat Jul 11 2015 jchaloup - 1.0.0-0.1.git1b37059 -- Bump to upstream 1b370599ccf271741e657335c4943cb8c7dba28b - related: #1211266 - -* Fri Jul 10 2015 jchaloup - 0.21.1-0.2.gitccc4cfc -- Bump to upstream ccc4cfc7e11e0f127ac1cea045017dd799be3c63 - related: #1211266 - -* Wed Jul 08 2015 jchaloup - 0.20.2-0.5.git77be29e -- Bump to upstream 77be29e3da71f0a136b6aa4048b2f0575c2598e4 - related: #1211266 - -* Tue Jul 07 2015 jchaloup - 0.20.2-0.4.git639a7da -- Bump to upstream 639a7dac50a331414cc6c47083323388da0d8756 - related: #1211266 - -* Mon Jul 06 2015 jchaloup - 0.20.2-0.3.gitbb6f2f7 -- Bump to upstream bb6f2f7ad90596d624d84cc691eec0f518e90cc8 - related: #1211266 - -* Fri Jul 03 2015 jchaloup - 0.20.2-0.2.git974377b -- Bump to upstream 974377b3064ac59b6e5694bfa568d67128026171 - related: #1211266 - -* Thu Jul 02 2015 jchaloup - 0.20.2-0.1.gitef41ceb -- Bump to upstream ef41ceb3e477ceada84c5522f429f02ab0f5948e - related: #1211266 - -* Tue Jun 30 2015 jchaloup - 0.20.0-0.3.git835eded -- Bump to upstream 835eded2943dfcf13a89518715e4be842a6a3ac0 -- Generate missing man pages - related: #1211266 - -* Mon Jun 29 2015 jchaloup - 0.20.0-0.2.git1c0b765 -- Bump to upstream 1c0b765df6dabfe9bd0e20489ed3bd18e6b3bda8 - Comment out missing man pages - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.20.0-0.1.git8ebd896 -- Bump to upstream 8ebd896351513d446d56bc5785c070d2909226a3 - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.19.3-0.6.git712f303 -- Bump to upstream 712f303350b35e70a573f3cb19193c8ec7ee7544 - related: #1211266 - -* Thu Jun 25 2015 jchaloup - 0.19.3-0.5.git2803b86 -- Bump to upstream 2803b86a42bf187afa816a7ce14fec754cc2af51 - related: #1211266 - -* Wed Jun 24 2015 Eric Paris - 0.19.3-0.4.git5b4dc4e -- Set CAP_NET_BIND_SERVICE on the kube-apiserver so it can use 443 - -* Wed Jun 24 2015 jchaloup - 0.19.3-0.3.git5b4dc4e -- Bump to upstream 5b4dc4edaa14e1ab4e3baa19df0388fa54dab344 - pkg/cloudprovider/* packages does not conform to golang language specification - related: #1211266 - -* Tue Jun 23 2015 jchaloup - 0.19.3-0.2.gita2ce3ea -- Bump to upstream a2ce3ea5293553b1fe0db3cbc6d53bdafe061d79 - related: #1211266 - -* Mon Jun 22 2015 jchaloup - 0.19.1-0.1.gitff0546d -- Bump to upstream ff0546da4fc23598de59db9f747c535545036463 - related: #1211266 - -* Fri Jun 19 2015 jchaloup - 0.19.0-0.7.gitb2e9fed -- Bump to upstream b2e9fed3490274509506285bdba309c50afb5c39 - related: #1211266 - -* Thu Jun 18 2015 jchaloup - 0.19.0-0.6.gitf660940 -- Bump to upstream f660940dceb3fe6ffb1b14ba495a47d91b5cd910 - related: #1211266 - -* Wed Jun 17 2015 jchaloup - 0.19.0-0.5.git43889c6 -- Bump to upstream 43889c612c4d396dcd8fbf3fbd217e106eaf5bce - related: #1211266 - -* Tue Jun 16 2015 jchaloup - 0.19.0-0.4.gita8269e3 -- Bump to upstream a8269e38c9e2bf81ba18cd6420e2309745d5b0b9 - related: #1211266 - -* Sun Jun 14 2015 jchaloup - 0.19.0-0.3.git5e5c1d1 -- Bump to upstream 5e5c1d10976f2f26d356ca60ef7d0d715c9f00a2 - related: #1211266 - -* Fri Jun 12 2015 jchaloup - 0.19.0-0.2.git0ca96c3 -- Bump to upstream 0ca96c3ac8b47114169f3b716ae4521ed8c7657c - related: #1211266 - -* Thu Jun 11 2015 jchaloup - 0.19.0-0.1.git5a02fc0 -- Bump to upstream 5a02fc07d8a943132b9e68fe7169778253318487 - related: #1211266 - -* Wed Jun 10 2015 jchaloup - 0.18.2-0.3.git0dfb681 -- Bump to upstream 0dfb681ba5d5dba535895ace9d650667904b5df7 - related: #1211266 - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.2.gitb68e08f -- golang-cover is not needed - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.1.gitb68e08f -- Bump to upstream b68e08f55f5ae566c4ea3905d0993a8735d6d34f - related: #1211266 - -* Sat Jun 06 2015 jchaloup - 0.18.1-0.3.git0f1c4c2 -- Bump to upstream 0f1c4c25c344f70c3592040b2ef092ccdce0244f - related: #1211266 - -* Fri Jun 05 2015 jchaloup - 0.18.1-0.2.git7309e1f -- Bump to upstream 7309e1f707ea5dd08c51f803037d7d22c20e2b92 - related: #1211266 - -* Thu Jun 04 2015 jchaloup - 0.18.1-0.1.gita161edb -- Bump to upstream a161edb3960c01ff6e14813858c2eeb85910009b - related: #1211266 - -* Wed Jun 03 2015 jchaloup - 0.18.0-0.3.gitb5a91bd -- Bump to upstream b5a91bda103ed2459f933959241a2b57331747ba -- Don't run %%check section (kept only for local run). Tests are now handled via CI. - related: #1211266 - -* Tue Jun 02 2015 jchaloup - 0.18.0-0.2.git5520386 -- Bump to upstream 5520386b180d3ddc4fa7b7dfe6f52642cc0c25f3 - related: #1211266 - -* Mon Jun 01 2015 jchaloup - 0.18.0-0.1.git0bb78fe -- Bump to upstream 0bb78fe6c53ce38198cc3805c78308cdd4805ac8 - related: #1211266 - -* Fri May 29 2015 jchaloup - 0.17.1-6 -- Bump to upstream ed4898d98c46869e9cbdb44186dfdeda9ff80cc2 - related: #1211266 - -* Thu May 28 2015 jchaloup - 0.17.1-5 -- Bump to upstream 6fa2777e26559fc008eacac83eb165d25bd9a7de - related: #1211266 - -* Tue May 26 2015 jchaloup - 0.17.1-4 -- Bump to upstream 01fcb58673001e56c69e128ab57e0c3f701aeea5 - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-3 -- Decompose package into master and node subpackage. - Thanks to Avesh for testing and patience. - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-2 -- Bump to upstream cf7b0bdc2a41d38613ac7f8eeea91cae23553fa2 - related: #1211266 - -* Fri May 22 2015 jchaloup - 0.17.1-1 -- Bump to upstream d9d12fd3f7036c92606fc3ba9046b365212fcd70 - related: #1211266 - -* Wed May 20 2015 jchaloup - 0.17.0-12 -- Bump to upstream a76bdd97100c66a46e2b49288540dcec58a954c4 - related: #1211266 - -* Tue May 19 2015 jchaloup - 0.17.0-11 -- Bump to upstream 10339d72b66a31592f73797a9983e7c207481b22 - related: #1211266 - -* Mon May 18 2015 jchaloup - 0.17.0-10 -- Bump to upstream efb42b302d871f7217394205d84e5ae82335d786 - related: #1211266 - -* Sat May 16 2015 jchaloup - 0.17.0-9 -- Bump to upstream d51e131726b925e7088b90915e99042459b628e0 - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-8 -- Bump to upstream 1ee33ac481a14db7b90e3bbac8cec4ceea822bfb - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-7 -- Bump to upstream d3c6fb0d6a13c0177dcd67556d72963c959234ea - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-6 -- Bump to upstream f57f31783089f41c0bdca8cb87a1001ca94e1a45 - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-5 -- Bump to upstream c90d381d0d5cf8ab7b8412106f5a6991d7e13c7d - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-4 -- Bump to upstream 5010b2dde0f9b9eb820fe047e3b34bc9fa6324de -- Add debug info - related: #1211266 - -* Wed May 13 2015 jchaloup - 0.17.0-3 -- Bump to upstream ec19d41b63f5fe7b2c939e7738a41c0fbe65d796 - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-2 -- Provide /usr/bin/kube-version-change binary - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-1 -- Bump to upstream 962f10ee580eea30e5f4ea725c4e9e3743408a58 - related: #1211266 - -* Mon May 11 2015 jchaloup - 0.16.2-7 -- Bump to upstream 63182318c5876b94ac9b264d1224813b2b2ab541 - related: #1211266 - -* Fri May 08 2015 jchaloup - 0.16.2-6 -- Bump to upstream d136728df7e2694df9e082902f6239c11b0f2b00 -- Add NetworkManager as dependency for /etc/resolv.conf - related: #1211266 - -* Thu May 07 2015 jchaloup - 0.16.2-5 -- Bump to upstream ca0f678b9a0a6dc795ac7a595350d0dbe9d0ac3b - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-4 -- Add docs to kubernetes-unit-test - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-3 -- Bump to upstream 3a24c0e898cb3060d7905af6df275a3be562451d - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-2 -- Add api and README.md to kubernetes-unit-test - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-1 -- Bump to upstream 72048a824ca16c3921354197953fabecede5af47 - related: #1211266 - -* Mon May 04 2015 jchaloup - 0.16.1-2 -- Bump to upstream 1dcd80cdf3f00409d55cea1ef0e7faef0ae1d656 - related: #1211266 - -* Sun May 03 2015 jchaloup - 0.16.1-1 -- Bump to upstream 86751e8c90a3c0e852afb78d26cb6ba8cdbc37ba - related: #1211266 - -* Fri May 01 2015 jchaloup - 0.16.0-2 -- Bump to upstream 72708d74b9801989ddbdc8403fc5ba4aafb7c1ef - related: #1211266 - -* Wed Apr 29 2015 jchaloup - 0.16.0-1 -- Bump to upstream 7dcce2eeb7f28643d599c8b6a244523670d17c93 - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-10 -- Add unit-test subpackage - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-9 -- Bump to upstream 99fc906f78cd2bcb08536c262867fa6803f816d5 - related: #1211266 - -* Mon Apr 27 2015 jchaloup - 0.15.0-8 -- Bump to upstream 051dd96c542799dfab39184d2a7c8bacf9e88d85 - related: #1211266 - -* Fri Apr 24 2015 jchaloup - 0.15.0-7 -- Bump to upstream 9f753c2592481a226d72cea91648db8fb97f0da8 - related: #1211266 - -* Thu Apr 23 2015 jchaloup - 0.15.0-6 -- Bump to upstream cf824ae5e07965ba0b4b15ee88e08e2679f36978 - related: #1211266 - -* Tue Apr 21 2015 jchaloup - 0.15.0-5 -- Bump to upstream 21788d8e6606038a0a465c97f5240b4e66970fbb - related: #1211266 - -* Mon Apr 20 2015 jchaloup - 0.15.0-4 -- Bump to upstream eb1ea269954da2ce557f3305fa88d42e3ade7975 - related: #1211266 - -* Fri Apr 17 2015 jchaloup - 0.15.0-3 -- Obsolete cadvisor as it is integrated in kubelet - related: #1211266 - -* Wed Apr 15 2015 jchaloup - 0.15.0-0.2.git0ea87e4 -- Bump to upstream 0ea87e486407298dc1e3126c47f4076b9022fb09 - related: #1211266 - -* Tue Apr 14 2015 jchaloup - 0.15.0-0.1.gitd02139d -- Bump to upstream d02139d2b454ecc5730cc535d415c1963a7fb2aa - related: #1211266 - -* Sun Apr 12 2015 jchaloup - 0.14.2-0.2.gitd577db9 -- Bump to upstream d577db99873cbf04b8e17b78f17ec8f3a27eca30 - -* Wed Apr 08 2015 jchaloup - 0.14.2-0.1.git2719194 -- Bump to upstream 2719194154ffd38fd1613699a9dd10a00909957e - Use etcd-2.0.8 and higher - -* Tue Apr 07 2015 jchaloup - 0.14.1-0.2.gitd2f4734 -- Bump to upstream d2f473465738e6b6f7935aa704319577f5e890ba - -* Thu Apr 02 2015 jchaloup - 0.14.1-0.1.gita94ffc8 -- Bump to upstream a94ffc8625beb5e2a39edb01edc839cb8e59c444 - -* Wed Apr 01 2015 jchaloup - 0.14.0-0.2.git8168344 -- Bump to upstream 81683441b96537d4b51d146e39929b7003401cd5 - -* Tue Mar 31 2015 jchaloup - 0.14.0-0.1.git9ed8761 -- Bump to upstream 9ed87612d07f75143ac96ad90ff1ff68f13a2c67 -- Remove [B]R from devel branch until the package has stable API - -* Mon Mar 30 2015 jchaloup - 0.13.2-0.6.git8a7a127 -- Bump to upstream 8a7a127352263439e22253a58628d37a93fdaeb2 - -* Fri Mar 27 2015 jchaloup - 0.13.2-0.5.git8d94c43 -- Bump to upstream 8d94c43e705824f23791b66ad5de4ea095d5bb32 - resolves: #1205362 - -* Wed Mar 25 2015 jchaloup - 0.13.2-0.4.git455fe82 -- Bump to upstream 455fe8235be8fd9ba0ce21bf4f50a69d42e18693 - -* Mon Mar 23 2015 jchaloup - 0.13.2-0.3.gitef75888 -- Remove runtime dependency on etcd - resolves: #1202923 - -* Sun Mar 22 2015 jchaloup - 0.13.2-0.2.gitef75888 -- Bump to upstream ef758881d108bb53a128126c503689104d17f477 - -* Fri Mar 20 2015 jchaloup - 0.13.2-0.1.gita8f2cee -- Bump to upstream a8f2cee8c5418676ee33a311fad57d6821d3d29a - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.9.git53b25a7 -- Bump to upstream 53b25a7890e31bdec6f2a95b32200d6cc27ae2ca - fix kube-proxy.service and kubelet - resolves: #1200919 #1200924 - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.8.git39dceb1 -- Bump to upstream 39dceb13a511a83963a766a439cb386d10764310 - -* Thu Mar 12 2015 Eric Paris - 0.12.0-0.7.gita3fd0a9 -- Move from /etc/tmpfiles.d to %%{_tmpfilesdir} - resolves: #1200969 - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.6.gita3fd0a9 -- Place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /etc/tmpfiles.d/kubernetes.conf - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.5.gita3fd0a9 -- Bump to upstream a3fd0a9fd516bb6033f32196ae97aaecf8c096b1 - -* Tue Mar 10 2015 jchaloup - 0.12.0-0.4.gita4d871a -- Bump to upstream a4d871a10086436557f804930812f2566c9d4d39 - -* Fri Mar 06 2015 jchaloup - 0.12.0-0.3.git2700871 -- Bump to upstream 2700871b049d5498167671cea6de8317099ad406 - -* Thu Mar 05 2015 jchaloup - 0.12.0-0.2.git8b627f5 -- Bump to upstream 8b627f516fd3e4f62da90d401ceb3d38de6f8077 - -* Tue Mar 03 2015 jchaloup - 0.12.0-0.1.gitecca426 -- Bump to upstream ecca42643b91a7117de8cd385b64e6bafecefd65 - -* Mon Mar 02 2015 jchaloup - 0.11.0-0.5.git6c5b390 -- Bump to upstream 6c5b390160856cd8334043344ef6e08568b0a5c9 - -* Sat Feb 28 2015 jchaloup - 0.11.0-0.4.git0fec31a -- Bump to upstream 0fec31a11edff14715a1efb27f77262a7c3770f4 - -* Fri Feb 27 2015 jchaloup - 0.11.0-0.3.git08402d7 -- Bump to upstream 08402d798c8f207a2e093de5a670c5e8e673e2de - -* Wed Feb 25 2015 jchaloup - 0.11.0-0.2.git86434b4 -- Bump to upstream 86434b4038ab87ac40219562ad420c3cc58c7c6b - -* Tue Feb 24 2015 jchaloup - 0.11.0-0.1.git754a2a8 -- Bump to upstream 754a2a8305c812121c3845d8293efdd819b6a704 - turn off integration tests until "FAILED: unexpected endpoints: - timed out waiting for the condition" problem is resolved - Adding back devel subpackage ([B]R list outdated) - -* Fri Feb 20 2015 jchaloup - 0.10.1-0.3.git4c87805 -- Bump to upstream 4c87805870b1b22e463c4bd711238ef68c77f0af - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.2.git6f84bda -- Bump to upstream 6f84bdaba853872dbac69c84d3ab4b6964e85d8c - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.1.git7d6130e -- Bump to upstream 7d6130edcdfabd7dd2e6a06fdc8fe5e333f07f5c - -* Sat Feb 07 2015 jchaloup - 0.9.1-0.7.gitc9c98ab -- Bump to upstream c9c98ab19eaa6f0b2ea17152c9a455338853f4d0 - Since some dependencies are broken, we can not build Kubernetes from Fedora deps. - Switching to vendored source codes until Go draft is resolved - -* Wed Feb 04 2015 jchaloup - 0.9.1-0.6.git7f5ed54 -- Bump to upstream 7f5ed541f794348ae6279414cf70523a4d5133cc - -* Tue Feb 03 2015 jchaloup - 0.9.1-0.5.git2ac6bbb -- Bump to upstream 2ac6bbb7eba7e69eac71bd9acd192cda97e67641 - -* Mon Feb 02 2015 jchaloup - 0.9.1-0.4.gite335e2d -- Bump to upstream e335e2d3e26a9a58d3b189ccf41ceb3770d1bfa9 - -* Fri Jan 30 2015 jchaloup - 0.9.1-0.3.git55793ac -- Bump to upstream 55793ac2066745f7243c666316499e1a8cf074f0 - -* Thu Jan 29 2015 jchaloup - 0.9.1-0.2.gitca6de16 -- Bump to upstream ca6de16df7762d4fc9b4ad44baa78d22e3f30742 - -* Tue Jan 27 2015 jchaloup - 0.9.1-0.1.git3623a01 -- Bump to upstream 3623a01bf0e90de6345147eef62894057fe04b29 -- update tests for etcd-2.0 - -* Thu Jan 22 2015 jchaloup - 0.8.2-571.gitb2f287c -+- Bump to upstream b2f287c259d856f4c08052a51cd7772c563aff77 - -* Thu Jan 22 2015 Eric Paris - 0.8.2-570.gitb2f287c -- patch kubelet service file to use docker.service not docker.socket - -* Wed Jan 21 2015 jchaloup - 0.8.2-0.1.git5b04640 -- Bump to upstream 5b046406a957a1e7eda7c0c86dd7a89e9c94fc5f - -* Sun Jan 18 2015 jchaloup - 0.8.0-126.0.git68298f0 -- Add some missing dependencies -- Add devel subpackage - -* Fri Jan 09 2015 Eric Paris - 0.8.0-125.0.git68298f0 -- Bump to upstream 68298f08a4980f95dfbf7b9f58bfec1808fb2670 - -* Tue Dec 16 2014 Eric Paris - 0.7.0-18.0.git52e165a -- Bump to upstream 52e165a4fd720d1703ebc31bd6660e01334227b8 - -* Mon Dec 15 2014 Eric Paris - 0.6-297.0.git5ef34bf -- Bump to upstream 5ef34bf52311901b997119cc49eff944c610081b - -* Wed Dec 03 2014 Eric Paris -- Replace patch to use old googlecode/go.net/ with BuildRequires on golang.org/x/net/ - -* Tue Dec 02 2014 Eric Paris - 0.6-4.0.git993ef88 -- Bump to upstream 993ef88eec9012b221f79abe8f2932ee97997d28 - -* Mon Dec 01 2014 Eric Paris - 0.5-235.0.git6aabd98 -- Bump to upstream 6aabd9804fb75764b70e9172774002d4febcae34 - -* Wed Nov 26 2014 Eric Paris - 0.5-210.0.gitff1e9f4 -- Bump to upstream ff1e9f4c191342c24974c030e82aceaff8ea9c24 - -* Tue Nov 25 2014 Eric Paris - 0.5-174.0.git64e07f7 -- Bump to upstream 64e07f7fe03d8692c685b09770c45f364967a119 - -* Mon Nov 24 2014 Eric Paris - 0.5-125.0.git162e498 -- Bump to upstream 162e4983b947d2f6f858ca7607869d70627f5dff - -* Fri Nov 21 2014 Eric Paris - 0.5-105.0.git3f74a1e -- Bump to upstream 3f74a1e9f56b3c3502762930c0c551ccab0557ea - -* Thu Nov 20 2014 Eric Paris - 0.5-65.0.gitc6158b8 -- Bump to upstream c6158b8aa9c40fbf1732650a8611429536466b21 -- include go-restful build requirement - -* Tue Nov 18 2014 Eric Paris - 0.5-14.0.gitdf0981b -- Bump to upstream df0981bc01c5782ad30fc45cb6f510f365737fc1 - -* Tue Nov 11 2014 Eric Paris - 0.4-680.0.git30fcf24 -- Bump to upstream 30fcf241312f6d0767c7d9305b4c462f1655f790 - -* Mon Nov 10 2014 Eric Paris - 0.4-633.0.git6c70227 -- Bump to upstream 6c70227a2eccc23966d32ea6d558ee05df46e400 - -* Fri Nov 07 2014 Eric Paris - 0.4-595.0.gitb695650 -- Bump to upstream b6956506fa2682afa93770a58ea8c7ba4b4caec1 - -* Thu Nov 06 2014 Eric Paris - 0.4-567.0.git3b1ef73 -- Bump to upstream 3b1ef739d1fb32a822a22216fb965e22cdd28e7f - -* Thu Nov 06 2014 Eric Paris - 0.4-561.0.git06633bf -- Bump to upstream 06633bf4cdc1ebd4fc848f85025e14a794b017b4 -- Make spec file more RHEL/CentOS friendly - -* Tue Nov 04 2014 Eric Paris - 0.4-0.0.git4452163 -- rebase to v0.4 -- include man pages - -* Tue Oct 14 2014 jchaloup - 0.3-0.3.git98ac8e1 -- create /var/lib/kubelet -- Use bash completions from upstream -- Bump to upstream 98ac8e178fcf1627399d659889bcb5fe25abdca4 -- all by Eric Paris - -* Mon Sep 29 2014 Jan Chaloupka - 0.3-0.2.git88fdb65 -- replace * with coresponding files -- remove dependency on gcc - -* Wed Sep 24 2014 Eric Paris - 0.1-0.4.git6ebe69a -- prefer autosetup instead of setup (revert setup change in 0-0.3.git) -https://fedoraproject.org/wiki/Autosetup_packaging_draft -- revert version number to 0.1 - -* Mon Sep 08 2014 Lokesh Mandvekar - 0-0.3.git6ebe69a -- gopath defined in golang package already -- package owns /etc/kubernetes -- bash dependency implicit -- keep buildroot/$RPM_BUILD_ROOT macros consistent -- replace with macros wherever possible -- set version, release and source tarball prep as per -https://fedoraproject.org/wiki/Packaging:SourceURL#Github - -* Mon Sep 08 2014 Eric Paris -- make services restart automatically on error - -* Sat Sep 06 2014 Eric Paris -- update to upstream -- redo build to use project scripts -- use project scripts in %%check -- rework deletion of third_party packages to easily detect changes -- run apiserver and controller-manager as non-root - -* Mon Aug 11 2014 Adam Miller -- update to upstream -- decouple the rest of third_party - -* Thu Aug 7 2014 Eric Paris -- update to head -- update package to include config files - -* Wed Jul 16 2014 Colin Walters -- Initial package diff --git a/kubernetes/kubernetes-1.22.5/centos/kubernetes.spec.orig b/kubernetes/kubernetes-1.22.5/centos/kubernetes.spec.orig deleted file mode 100644 index fd43ef4cd..000000000 --- a/kubernetes/kubernetes-1.22.5/centos/kubernetes.spec.orig +++ /dev/null @@ -1,2282 +0,0 @@ -%if 0%{?fedora} -%global with_devel 1 -%global with_bundled 0 -%global with_debug 1 -%else -%global with_devel 0 -%global with_bundled 1 -%global with_debug 0 -%endif - -%if 0%{?with_debug} -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%else -%global debug_package %{nil} -%endif - -%global provider github -%global provider_tld com -%global project kubernetes -%global repo kubernetes -# https://github.com/kubernetes/kubernetes - -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global import_path k8s.io/kubernetes -%global commit fc32d2f3698e36b93322a3465f63a14e9f0eaead -%global shortcommit %(c=%{commit}; echo ${c:0:7}) - -%global con_provider github -%global con_provider_tld com -%global con_project kubernetes -%global con_repo contrib -# https://github.com/kubernetes/contrib -%global con_provider_prefix %{con_provider}.%{con_provider_tld}/%{con_project}/%{con_repo} -%global con_commit 5b445f1c53aa8d6457523526340077935f62e691 -%global con_shortcommit %(c=%{con_commit}; echo ${c:0:7}) - -%global kube_version 1.10.0 -%global kube_git_version v%{kube_version} - -# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work -%global _buildshell /bin/bash -%global _checkshell /bin/bash - -############################################## -Name: kubernetes -Version: %{kube_version} -Release: 1%{?dist} -Summary: Container cluster management -License: ASL 2.0 -URL: https://%{import_path} -ExclusiveArch: x86_64 aarch64 ppc64le s390x -Source0: https://%{provider_prefix}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz -Source1: https://%{con_provider_prefix}/archive/%{con_commit}/%{con_repo}-%{con_shortcommit}.tar.gz -Source3: kubernetes-accounting.conf -Source4: kubeadm.conf - -Source33: genmanpages.sh - -Patch3: build-with-debug-info.patch -#Patch4: make-test-cmd-run-over-hyperkube-based-kubectl.patch -#Patch5: make-e2e_node-run-over-distro-bins.patch - -# ppc64le -Patch16: fix-support-for-ppc64le.patch - -Patch20: use_go_build-is-not-fully-propagated-so-make-it-fixe.patch - -# It obsoletes cadvisor but needs its source code (literally integrated) -Obsoletes: cadvisor - -# kubernetes is decomposed into master and node subpackages -# require both of them for updates -Requires: kubernetes-master = %{version}-%{release} -Requires: kubernetes-node = %{version}-%{release} - -%description -%{summary} - -%if 0%{?with_devel} -%package devel -Summary: %{summary} -BuildArch: noarch - -Provides: golang(%{import_path}/cmd/genutils) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubectl/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/normalization) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/install) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/conversion-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/deepcopy-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/generator) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/go-to-protobuf/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/import-boss/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/namer) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/parser) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/set-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/types) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/install) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/pkg/federation-controller/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/admission) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/annotations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/endpoints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta/metatypes) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest/resttest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing/compat) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery/registered) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v0) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v2alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/audit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator/bearertoken) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/union) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/handlers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/chaosclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/leaderelection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/record) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/restclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/testing/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/transport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/dynamic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/adapters/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/auth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient/simple) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/azure) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/cloudstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/gce) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/mesos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/openstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/ovirt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/rackspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/vsphere) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/daemon) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/disruption) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework/informers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector/metaonly) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podgc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/route) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/statusupdater) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion/queryparams) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/dns) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fieldpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fields) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/openapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/healthz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/httplog) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/hyperkube) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/rollout) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/set) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/templates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/editor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/jsonmerge) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/metricsutil) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/client) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cm) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/custommetrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockershim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockertools) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/envvars) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/events) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/eviction) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/images) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/kuberuntime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/leaky) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hairpin) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/kubenet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/mock_network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pleg) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/results) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/qos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/remote) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt/mock_os) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rktshim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/status) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/format) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/ioutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/queue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/sliceutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubemark) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master/ports) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/http) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/tcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/healthcheck) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/userspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/evaluator/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/subjectaccessreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/cachesize) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/componentstatus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/experimental/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rangeallocation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/registrytest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/tokenreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/recognizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/streaming) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/versioning) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontext) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/seccomp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/selection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ssh) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/etcdtest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing/testingcert) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend/factory) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ui) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/async) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/bandwidth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chmod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chown) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/clock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/codeinspector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/configz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crlf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crypto) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/dbus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/diff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/ebtables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/env) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flowcontrol) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flushwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/framer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap/exponentialbackoff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/hash) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/homedir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream/spdy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/integer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/interrupt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/intstr) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/io) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/jsonpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/keymutex) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/limitwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/logs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/maps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/mount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/oom) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/parsers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/procfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/resourcecontainer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rlimit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/slice) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strategicpatch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strings) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/system) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/term) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/threading) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/uuid) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation/field) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wait) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/workqueue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wsstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/verflag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/aws_ebs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_dd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_file) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cephfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cinder) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/downwardapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/empty_dir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/fc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flexvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flocker) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/gce_pd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/git_repo) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/glusterfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/host_path) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/iscsi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/nfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/quobyte) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/rbd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/nestedpendingoperations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/operationexecutor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/volumehelper) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/vsphere_volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/versioned) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/admit) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/alwayspullimages) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/antiaffinity) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/deny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/exec) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/initialresources) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/limitranger) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/autoprovision) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/exists) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/persistentvolume/label) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/securitycontext/scdeny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/storageclass/default) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/allow) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/keystone) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/passwordfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/basicauth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/union) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/x509) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokenfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokentest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/predicates) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities/util) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider/defaults) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/factory) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/schedulercache) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/webhook) = %{version}-%{release} - -%description devel -Libraries for building packages importing k8s.io/kubernetes. -Currently, the devel is not suitable for development. -It is meant only as a buildtime dependency for other projects. - -This package contains library source intended for -building other packages which use %{project}/%{repo}. -%endif - -############################################## -%package unit-test -Summary: %{summary} - for running unit tests - -# below Rs used for testing -Requires: golang >= 1.2-7 -Requires: etcd >= 2.0.9 -Requires: hostname -Requires: rsync -Requires: NetworkManager - -%description unit-test -%{summary} - for running unit tests - -############################################## -%package master -Summary: Kubernetes services for master host - -BuildRequires: golang >= 1.2-7 -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: kubernetes-client = %{version}-%{release} - -# if node is installed with node, version and release must be the same -Conflicts: kubernetes-node < %{version}-%{release} -Conflicts: kubernetes-node > %{version}-%{release} - -%description master -Kubernetes services for master host - -############################################## -%package node -Summary: Kubernetes services for node host - -%if 0%{?fedora} >= 27 -Requires: (docker or docker-ce) -Suggests: docker -%else -Requires: docker -%endif -Requires: conntrack-tools - -BuildRequires: golang >= 1.2-7 -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: socat -Requires: kubernetes-client = %{version}-%{release} - -# if master is installed with node, version and release must be the same -Conflicts: kubernetes-master < %{version}-%{release} -Conflicts: kubernetes-master > %{version}-%{release} - -%description node -Kubernetes services for node host - -############################################## -%package kubeadm -Summary: Kubernetes tool for standing up clusters -Requires: kubernetes-node = %{version}-%{release} -Requires: containernetworking-cni - -%description kubeadm -Kubernetes tool for standing up clusters - -############################################## -%package client -Summary: Kubernetes client tools - -BuildRequires: golang >= 1.2-7 -BuildRequires: go-bindata - -%description client -Kubernetes client tools like kubectl - -############################################## - -%prep -%setup -q -n %{con_repo}-%{con_commit} -T -b 1 -%setup -q -n %{repo}-%{commit} - -%if 0%{?with_debug} -%patch3 -p1 -%endif - -%patch20 -p1 - -# copy contrib folder -mkdir contrib -cp -r ../%{con_repo}-%{con_commit}/init contrib/. - -#src/k8s.io/kubernetes/pkg/util/certificates -# Patch the code to remove eliptic.P224 support -for dir in vendor/github.com/google/certificate-transparency/go/x509 pkg/util/certificates; do - if [ -d "${dir}" ]; then - pushd ${dir} - sed -i "/^[^=]*$/ s/oidNamedCurveP224/oidNamedCurveP256/g" *.go - sed -i "/^[^=]*$/ s/elliptic\.P224/elliptic.P256/g" *.go - popd - fi -done - -# Move all the code under src/k8s.io/kubernetes directory -mkdir -p src/k8s.io/kubernetes -mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. - -# Patch tests to be run over distro bins -#patch4 -p1 -#patch5 -p1 - -%ifarch ppc64le -%patch16 -p1 -%endif - -############### - -%build -pushd src/k8s.io/kubernetes/ -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=%{commit} -export KUBE_GIT_VERSION=%{kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace - -# https://bugzilla.redhat.com/show_bug.cgi?id=1392922#c1 -%ifarch ppc64le -export GOLDFLAGS='-linkmode=external' -%endif -make WHAT="--use_go_build cmd/hyperkube cmd/kube-apiserver cmd/kubeadm" - -# convert md to man -./hack/generate-docs.sh || true -pushd docs -pushd admin -cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. -popd -cp %{SOURCE33} genmanpages.sh -bash genmanpages.sh -popd -popd - -%install -pushd src/k8s.io/kubernetes/ -. hack/lib/init.sh -kube::golang::setup_env - -%ifarch ppc64le -output_path="_output/local/go/bin" -%else -output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" -%endif - -install -m 755 -d %{buildroot}%{_bindir} - -echo "+++ INSTALLING hyperkube" -install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/hyperkube - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kubeadm" -install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubeadm -install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d -install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE4} - -binaries=(kube-controller-manager kube-scheduler kube-proxy kubelet kubectl) -for bin in "${binaries[@]}"; do - echo "+++ HARDLINKING ${bin} to hyperkube" - ln %{buildroot}%{_bindir}/hyperkube %{buildroot}%{_bindir}/${bin} -done - -# install the bash completion -install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/ -%{buildroot}%{_bindir}/kubectl completion bash > %{buildroot}%{_datadir}/bash-completion/completions/kubectl - -# install config files -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name} -install -m 644 -t %{buildroot}%{_sysconfdir}/%{name} contrib/init/systemd/environ/* - -# install service files -install -d -m 0755 %{buildroot}%{_unitdir} -install -m 0644 -t %{buildroot}%{_unitdir} contrib/init/systemd/*.service - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 -rm %{buildroot}%{_mandir}/man1/cloud-controller-manager.* -# from k8s tarball copied docs/man/man1/*.1 - -# install the place the kubelet defaults to put volumes -install -d %{buildroot}%{_sharedstatedir}/kubelet - -# place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /usr/lib/tmpfiles.d/kubernetes.conf -install -d -m 0755 %{buildroot}%{_tmpfilesdir} -install -p -m 0644 -t %{buildroot}/%{_tmpfilesdir} contrib/init/systemd/tmpfiles.d/kubernetes.conf -mkdir -p %{buildroot}/run -install -d -m 0755 %{buildroot}/run/%{name}/ - -# enable CPU and Memory accounting -install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system.conf.d -install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system.conf.d %{SOURCE3} - -# source codes for building projects -%if 0%{?with_devel} -install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ -echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list -# find all *.go but no *_test.go files and generate devel.file-list -for file in $(find . -iname "*.go" \! -iname "*_test.go") ; do - echo "%%dir %%{gopath}/src/%%{import_path}/$(dirname $file)" >> devel.file-list - install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$(dirname $file) - cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file - echo "%%{gopath}/src/%%{import_path}/$file" >> devel.file-list -done -%endif - -%if 0%{?with_devel} -sort -u -o devel.file-list devel.file-list -%endif - -popd - -%if 0%{?with_devel} -mv src/k8s.io/kubernetes/devel.file-list . -%endif - -mv src/k8s.io/kubernetes/*.md . -mv src/k8s.io/kubernetes/LICENSE . - - -# place files for unit-test rpm -install -d -m 0755 %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -# basically, everything from the root directory is needed -# unit-tests needs source code -# integration tests needs docs and other files -# test-cmd.sh atm needs cluster, examples and other -cp -a src %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -rm -rf %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/_output -cp -a *.md %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/ - -%check -# Fedora, RHEL7 and CentOS are tested via unit-test subpackage -if [ 1 != 1 ]; then -echo "******Testing the commands*****" -hack/test-cmd.sh -echo "******Benchmarking kube********" -hack/benchmark-go.sh - -# In Fedora 20 and RHEL7 the go cover tools isn't available correctly -%if 0%{?fedora} >= 21 -echo "******Testing the go code******" -hack/test-go.sh -echo "******Testing integration******" -hack/test-integration.sh --use_go_build -%endif -fi - -############################################## -%files -# empty as it depends on master and node - -############################################## -%files master -%license LICENSE -%doc *.md -%{_mandir}/man1/kube-apiserver.1* -%{_mandir}/man1/kube-controller-manager.1* -%{_mandir}/man1/kube-scheduler.1* -%attr(754, -, kube) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver -%{_bindir}/kube-controller-manager -%{_bindir}/kube-scheduler -%{_bindir}/hyperkube -%{_unitdir}/kube-apiserver.service -%{_unitdir}/kube-controller-manager.service -%{_unitdir}/kube-scheduler.service -%dir %{_sysconfdir}/%{name} -%config(noreplace) %{_sysconfdir}/%{name}/apiserver -%config(noreplace) %{_sysconfdir}/%{name}/scheduler -%config(noreplace) %{_sysconfdir}/%{name}/config -%config(noreplace) %{_sysconfdir}/%{name}/controller-manager -%{_tmpfilesdir}/kubernetes.conf -%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} - -############################################## -%files node -%license LICENSE -%doc *.md -%{_mandir}/man1/kubelet.1* -%{_mandir}/man1/kube-proxy.1* -%{_bindir}/kubelet -%{_bindir}/kube-proxy -%{_bindir}/hyperkube -%{_unitdir}/kube-proxy.service -%{_unitdir}/kubelet.service -%dir %{_sharedstatedir}/kubelet -%dir %{_sysconfdir}/%{name} -%config(noreplace) %{_sysconfdir}/%{name}/config -%config(noreplace) %{_sysconfdir}/%{name}/kubelet -%config(noreplace) %{_sysconfdir}/%{name}/proxy -%config(noreplace) %{_sysconfdir}/systemd/system.conf.d/kubernetes-accounting.conf -%{_tmpfilesdir}/kubernetes.conf -%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} - -############################################## -%files kubeadm -%license LICENSE -%doc *.md -%{_mandir}/man1/kubeadm.1* -%{_mandir}/man1/kubeadm-* -%{_bindir}/kubeadm -%dir %{_sysconfdir}/systemd/system/kubelet.service.d -%config(noreplace) %{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf - -############################################## -%files client -%license LICENSE -%doc *.md -%{_mandir}/man1/kubectl.1* -%{_mandir}/man1/kubectl-* -%{_bindir}/kubectl -%{_bindir}/hyperkube -%{_datadir}/bash-completion/completions/kubectl - -############################################## -%files unit-test -%{_sharedstatedir}/kubernetes-unit-test/ - -%if 0%{?with_devel} -%files devel -f devel.file-list -%doc *.md -%dir %{gopath}/src/k8s.io -%endif - -############################################## - -%pre master -getent group kube >/dev/null || groupadd -r kube -getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \ - -c "Kubernetes user" kube - -%post master -%systemd_post kube-apiserver kube-scheduler kube-controller-manager - -%preun master -%systemd_preun kube-apiserver kube-scheduler kube-controller-manager - -%postun master -%systemd_postun - - -%pre node -getent group kube >/dev/null || groupadd -r kube -getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \ - -c "Kubernetes user" kube - -%post node -%systemd_post kubelet kube-proxy -# If accounting is not currently enabled systemd reexec -if [[ `systemctl show docker kubelet | grep -q -e CPUAccounting=no -e MemoryAccounting=no; echo $?` -eq 0 ]]; then - systemctl daemon-reexec -fi - -%preun node -%systemd_preun kubelet kube-proxy - -%postun node -%systemd_postun - -############################################ -%changelog -* Tue Mar 27 2018 Spyros Trigazis - 1.10.0-1 -- Bump to upstream v1.10.0 - -* Thu Mar 22 2018 Spyros Trigazis - 1.9.6-1 -- Bump to upstream v1.9.6 - -* Tue Mar 20 2018 Jan Chaloupka - 1.9.5-1 -- Bump to upstream v1.9.5 - resolves: #1554420 - -* Sun Feb 11 2018 Spyros Trigazis - 1.9.3-1 -- Bump to upstream v1.9.3 - -* Fri Feb 09 2018 Jan Chaloupka - 1.9.1-5 -- Add --fail-swap-on=false flag to the /etc/kubernetes/kubelet - resolves: #1542476 - -* Thu Feb 08 2018 Igor Gnatenko - 1.9.1-4 -- Escape macro in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 1.9.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Jan 15 2018 Jan Chaloupka - 1.9.1-2 -- If docker is not available, try docker-ce instead (use boolean dependencies) - resolves: #1534508 - -* Fri Jan 12 2018 Spyros Trigazis - 1.9.1-1 -- Update to upstream v1.9.1 - resolves #1533794 - -* Tue Oct 24 2017 Jan Chaloupka - 1.8.1-1 -- Update to upstream v1.8.1 - resolves: #1497135 - -* Mon Oct 02 2017 Jan Chaloupka - 1.8.0-1 -- Update to upstream v1.8.0 - related: #1497625 - -* Mon Oct 02 2017 Jan Chaloupka - 1.7.7-1 -- Update to upstream v1.7.7 - resolves: #1497625 - -* Mon Sep 18 2017 Jan Chaloupka - 1.7.6-1 -- Update to upstream v1.7.6 - resolves: #1492551 - -* Mon Sep 11 2017 Jan Chaloupka - 1.7.5-1 -- Update to upstream v1.7.5 - resolves: #1490316 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.4-1 -- Fix the version - related: #1482874 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.3-2 -- Update to upstream v1.7.4 - resolves: #1482874 - -* Tue Aug 08 2017 Jan Chaloupka - 1.7.3-1 -- Update to upstream v1.7.3 - resolves: #1479685 - -* Thu Aug 03 2017 Fedora Release Engineering - 1.7.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Sun Jul 30 2017 Florian Weimer - 1.7.2-3 -- Rebuild with binutils fix for ppc64le (#1475636) - -* Wed Jul 26 2017 Fedora Release Engineering - 1.7.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.2-1 -- Update to upstream v1.7.2 - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.1-2 -- Sync kubeadm.conf with upstream service configuration (set Restart,StartLimitInterval,RestartSec) - -* Fri Jul 14 2017 Jan Chaloupka - 1.7.1-1 -- Update to upstream v1.7.1 - resolves: #1471767 - -* Sat Jul 08 2017 Jan Chaloupka - 1.6.7-1 -- Update to upstream v1.6.7 - resolves: #1468823 - resolves: #1468752 - -* Fri May 19 2017 Timothy St. Clair - 1.6.4-1 -- Add kubeadm subpackage to enable upstream deployments - -* Thu May 18 2017 Jan Chaloupka - 1.6.3-1 -- Update to upstream v1.6.3 - resolves: #1452101 - -* Fri May 12 2017 Jan Chaloupka - 1.6.2-2 -- Extend archs with s390x - resolves: #1400000 - -* Tue May 02 2017 Jan Chaloupka - 1.6.2-1 -- Update to upstream v1.6.2 - resolves: #1447338 - -* Tue Apr 11 2017 Jan Chaloupka - 1.6.1-1 -- Update to upstream v1.6.1 - related: #1422889 - -* Fri Mar 31 2017 Jan Chaloupka - 1.5.6-1 -- Update to upstream v1.5.6 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.5-4 -- Update to upstream v1.5.5 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.4-3 -- re-enable debug-info - related: #1422889 - -* Thu Mar 09 2017 Jan Chaloupka - 1.5.4-2 -- Bump to upstream 7243c69eb523aa4377bce883e7c0dd76b84709a1 - related: #1422889 - -* Thu Feb 16 2017 Jan Chaloupka - 1.5.3-1 -- Update to upstream v1.5.3 - resolves: #1422889 - -* Fri Feb 10 2017 Fedora Release Engineering - 1.5.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Wed Jan 18 2017 Jan Chaloupka - 1.5.2-2 -- fix rootScopeNaming generate selfLink - resolves: #1413997 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.2-1 -- Bump version as well - related: #1412996 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.1-2 -- Bump to upstream 1.5.2 - resolves: #1412996 - -* Thu Jan 05 2017 Jan Chaloupka - 1.5.1-1 -- Bump to upstream 1.5.1 - resolves: #1410186 - -* Wed Jan 04 2017 Jan Chaloupka - 1.4.7-2 -- Generate the md files before they are converted to man pages - resolves: #1409943 - -* Mon Dec 12 2016 Jan Chaloupka - 1.4.7-1 -- Bump to upstream v1.4.7 - resolves: #1403823 - New conntrack-tools dependency of kube-proxy - Build kubernetes on ppc64le with linkmode=external - resolves: #1392922 - -* Mon Nov 14 2016 jchaloup - 1.4.5-3 -- Patch unit-test subpackage to run tests over k8s distro binaries - -* Wed Nov 09 2016 jchaloup - 1.4.5-2 -- Add missing if devel around generated devel.file-list - related: #1390074 - -* Tue Nov 08 2016 jchaloup - 1.4.5-1 -- Bump to upstream v1.4.5 (flip back to upstream based Kubernetes) - related: #1390074 - -* Mon Oct 31 2016 jchaloup - 1.4.0-0.1.beta3.git52492b4 -- Update to origin v1.4.0-alpha.0 (ppc64le and arm unbuildable with the current golang version) - resolves: #1390074 - -* Mon Oct 24 2016 jchaloup - 1.3.0-0.4.git52492b4 -- Update to origin v1.3.1 - resolves: #1388092 - -* Thu Sep 08 2016 jchaloup - 1.3.0-0.3.rc1.git507d3a7 -- Update to origin v1.3.0-rc1 - resolves: #1374361 - -* Thu Aug 11 2016 Dennis Gilmore -1.3.0-0.2.git4a3f9c5 -- enable armv7hl and aarch64 - -* Tue Aug 09 2016 jchaloup - 1.3.0-0.1.git4a3f9c5 -- Update to origin v1.3.0-alpha.3 - resolves: #1365601 - -* Thu Jul 21 2016 Fedora Release Engineering - 1.2.0-0.27.git4a3f9c5 -- https://fedoraproject.org/wiki/Changes/golang1.7 - -* Sun Jul 17 2016 jchaloup - 1.2.0-0.26.git4a3f9c5 -- Update to origin v1.2.1 - resolves: #1357261 - -* Wed Jul 13 2016 jchaloup - 1.2.0-0.25.git4a3f9c5 -- Enable CPU and Memory accounting on a node - -* Wed Jun 29 2016 jchaloup - 1.2.0-0.24.git4a3f9c5 -- Be more verbose about devel subpackage - resolves: #1269449 - -* Tue Jun 28 2016 jchaloup - 1.2.0-0.23.git4a3f9c5 -- Own /run/kubernetes directory - resolves: #1264699 - -* Sat May 28 2016 jchaloup - 1.2.0-0.22.git4a3f9c5 -- Bump to origin v1.2.0 - resolves: #1340643 - -* Wed May 04 2016 jchaloup - 1.2.0-0.21.git4a3f9c5 -- Extend uni-test subpackage to run other tests - -* Mon Apr 25 2016 jchaloup - 1.2.0-0.20.git4a3f9c5 -- Update support for ppc64le to use go compiler - related: #1306214 - -* Thu Apr 21 2016 jchaloup - 1.2.0-0.19.git4a3f9c5 -- Fix support for ppc64le - related: #1306214 - -* Tue Apr 19 2016 jchaloup - 1.2.0-0.18.git4a3f9c5 -- Bump to origin v1.1.6 - resolves: #1328357 - -* Mon Apr 11 2016 jchaloup - 1.2.0-0.17.alpha6.git4a3f9c5 -- Don't disable extensions/v1beta1 by default to conform with upstream documentation - -* Wed Mar 30 2016 jchaloup - 1.2.0-0.16.alpha6.git4a3f9c5 - Update to origin's v1.1.5 - Build on ppc64le as well - resolves: #1306214 - -* Tue Mar 08 2016 jchaloup - 1.2.0-0.15.alpha6.gitf0cd09a -- hyperkube.server: don't parse args for any command - -* Fri Mar 04 2016 jchaloup - 1.2.0-0.14.alpha6.gitf0cd09a -- Disable extensions/v1beta1 implicitly - -* Tue Mar 01 2016 jchaloup - 1.2.0-0.13.alpha6.gitf0cd09a -- Hyperkube checks flags of individual commands/servers even if it does not define their flags. - Thus resulting in 'uknown shorthand flag' error - -* Mon Feb 29 2016 jchaloup - 1.2.0-0.12.alpha6.gitf0cd09a -- Disable v1beta3 -- hyperkube-kubectl-dont shift os.Args - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.11.alpha6.gitf0cd09a -- add kube- prefix to controller-manager, proxy and scheduler - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.10.alpha6.gitf0cd09a -- Hardlink kube-controller-manager, kuber-scheduler, kubectl, kubelet and kube-proxy into hyperkube -- Keep kube-apiserver binary as it is (it has different permission and capabilities) - -* Thu Feb 25 2016 jchaloup - 1.2.0-0.9.alpha6.gitf0cd09a -- Fix Content-Type of docker client response - resolves: #1311861 - -* Mon Feb 22 2016 Fedora Release Engineering - 1.2.0-0.8.alpha6.gitf0cd09a -- https://fedoraproject.org/wiki/Changes/golang1.6 - -* Mon Feb 22 2016 jchaloup - 1.2.0-0.7.alpha6.git4c8e6f4 -- Bump to origin 1.1.3 - kube-version-change command replaced with kubectl convert (check out docs/admin/cluster-management.md) - related: 1295066 - -* Thu Feb 04 2016 Fedora Release Engineering - 1.2.0-0.6.alpha1.git4c8e6f4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jan 21 2016 jchaloup - 1.2.0-0.5.alpha1.git4c8e6f4 -- Bump to upstream e1d9873c1d5711b83fd3dd7eefe83a88ceb92c08 - related: #1291860 - -* Thu Jan 07 2016 jchaloup - 1.2.0-0.4.alpha1.git4c8e6f4 -- Move definition of all version, git and commit macros at one place - resolves: #1291860 - -* Fri Jan 01 2016 jchaloup - 1.2.0-0.3.alpha1.git4c8e6f4 -- Bump to upstream bf56e235826baded1772fb340266b8419c3e8f30 - Rebase to origin's "v1.1.0.1 - Security Update to v1.1" release - resolves: #1295066 - -* Thu Nov 26 2015 jchaloup - 1.2.0-0.2.alpha1.git4c8e6f4 -- Bump to origin upstream a41c9ff38d52fd508481c3c2bac13d52871fde02 -- Build kubernetes from origin's Godeps using hack/build-go.sh - origin's Godeps = kubernetes upstream + additional patches - -* Tue Oct 20 2015 jchaloup - 1.2.0-0.1.alpha1.git4c8e6f4 -- Bump to upstream 403de3874fba420fd096f2329b45fe2f5ae97e46 - related: #1211266 - -* Wed Oct 14 2015 jchaloup - 1.1.0-0.41.alpha1.gite9a6ef1 -- Bump to origin upstream e9a6ef1cd4c29d45730289a497d18b19d7ba450d - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.40.alpha1.git5f38cb0 -- Add missing short option for --server of kubectl -- Update unit-test-subpackage (only test-cmd.sh atm) - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.39.alpha1.git5f38cb0 -- Add normalization of flags - related: #1211266 - -* Fri Oct 02 2015 jchaloup - 1.1.0-0.38.alpha1.git5f38cb0 -- Restore unit-test subpackage (not yet tested) - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.37.alpha1.git5f38cb0 -- Do not unset default cluster, otherwise k8s ends with error when no cluster set - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.36.alpha0.git5f38cb0 -- Bump to o4n 5f38cb0e98c9e854cafba9c7f98dafd51e955ad8 - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.35.alpha1.git2695cdc -- Update git version of k8s and o4n, add macros - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.34.alpha1.git2695cdc -- Built k8s from o4n tarball -- Bump to upstream 2695cdcd29a8f11ef60278758e11f4817daf3c7c - related: #1211266 - -* Tue Sep 22 2015 jchaloup - 1.1.0-0.33.alpha1.git09cf38e -- Bump to upstream 09cf38e9a80327e2d41654db277d00f19e2c84d0 - related: #1211266 - -* Thu Sep 17 2015 jchaloup - 1.1.0-0.32.alpha1.git400e685 -- Bump to upstream 400e6856b082ecf4b295568acda68d630fc000f1 - related: #1211266 - -* Wed Sep 16 2015 jchaloup - 1.1.0-0.31.gitd549fc4 -- Bump to upstream d549fc400ac3e5901bd089b40168e1e6fb17341d - related: #1211266 - -* Tue Sep 15 2015 jchaloup - 1.1.0-0.30.gitc9570e3 -- Bump to upstream c9570e34d03c6700d83f796c0125d17c5064e57d - related: #1211266 - -* Mon Sep 14 2015 jchaloup - 1.1.0-0.29.git86b4e77 -- Bump to upstream 86b4e777e1947c1bc00e422306a3ca74cbd54dbe - related: #1211266 - -* Thu Sep 10 2015 jchaloup - 1.1.0-0.28.gitf867ba3 -- Bump to upstream f867ba3ba13e3dad422efd21c74f52b9762de37e - related: #1211266 - -* Wed Sep 09 2015 jchaloup - 1.1.0-0.27.git0f4fa4e -- Bump to upstream 0f4fa4ed25ae9a9d1824fe55aeefb4d4ebfecdfd - related: #1211266 - -* Tue Sep 08 2015 jchaloup - 1.1.0-0.26.git196f58b -- Bump to upstream 196f58b9cb25a2222c7f9aacd624737910b03acb - related: #1211266 - -* Mon Sep 07 2015 jchaloup - 1.1.0-0.25.git96e0ed5 -- Bump to upstream 96e0ed5749608d4cc32f61b3674deb04c8fa90ad - related: #1211266 - -* Sat Sep 05 2015 jchaloup - 1.1.0-0.24.git2e2def3 -- Bump to upstream 2e2def36a904fe9a197da5fc70e433e2e884442f - related: #1211266 - -* Fri Sep 04 2015 jchaloup - 1.1.0-0.23.gite724a52 -- Bump to upstream e724a5210adf717f62a72162621ace1e08730c75 - related: #1211266 - -* Thu Sep 03 2015 jchaloup - 1.1.0-0.22.gitb6f2f39 -- Bump to upstream b6f2f396baec5105ff928cf61903c2c368259b21 - related: #1211266 - -* Wed Sep 02 2015 jchaloup - 1.1.0-0.21.gitb4a3698 -- Bump to upstream b4a3698faed81410468eccf9f328ca6df3d0cca3 - related: #1211266 - -* Tue Sep 01 2015 jchaloup - 1.1.0-0.20.git2f9652c -- Bump to upstream 2f9652c7f1d4b8f333c0b5c8c1270db83b913436 - related: #1211266 - -* Mon Aug 31 2015 jchaloup - 1.1.0-0.19.git66a644b -- Bump to upstream 66a644b275ede9ddb98eb3f76e8d1840cafc2147 - related: #1211266 - -* Thu Aug 27 2015 jchaloup - 1.1.0-0.18.gitab73849 -- Bump to upstream ab7384943748312f5e9294f42d42ed3983c7c96c - related: #1211266 - -* Wed Aug 26 2015 jchaloup - 1.1.0-0.17.git00e3442 -- Bump to upstream 00e34429e0242323ed34347cf0ab65b3d62b21f7 - related: #1211266 - -* Tue Aug 25 2015 jchaloup - 1.1.0-0.16.gita945785 -- Bump to upstream a945785409d5b68f3a2721d2209300edb5abf1ce - related: #1211266 - -* Mon Aug 24 2015 jchaloup - 1.1.0-0.15.git5fe7029 -- Bump to upstream 5fe7029e688e1e5873a0b95a622edda5b5156d2b - related: #1211266 - -* Fri Aug 21 2015 jchaloup - 1.1.0-0.14.gitb6f18c7 -- Bump to upstream b6f18c7ce08714c8d4f6019463879a164a41750e - related: #1211266 - -* Thu Aug 20 2015 jchaloup - 1.1.0-0.13.git44fa48e -- Bump to upstream 44fa48e5af44d3e988fa943d96a2de732d8cc666 - related: #1211266 - -* Wed Aug 19 2015 jchaloup - 1.1.0-0.12.gitb5a4a54 -- Bump to upstream b5a4a548df0cffb99bdcc3b9b9e48d4025d0541c - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.11.git919c7e9 -- Bump to upstream 919c7e94e23d2dcd5bdd96896e0a7990f9ae3338 - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.10.git280b66c -- Bump to upstream 280b66c9012c21e253acd4e730f8684c39ca08ec - related: #1211266 - -* Mon Aug 17 2015 jchaloup - 1.1.0-0.9.git081d9c6 -- Bump to upstream 081d9c64d25c20ec16035036536511811118173d - related: #1211266 - -* Fri Aug 14 2015 jchaloup - 1.1.0-0.8.git8dcbeba -- Bump to upstream 8dcbebae5ef6a7191d9dfb65c68833c6852a21ad - related: #1211266 - -* Thu Aug 13 2015 jchaloup - 1.1.0-0.7.git968cbbe -- Bump to upstream 968cbbee5d4964bd916ba379904c469abb53d623 - related: #1211266 - -* Wed Aug 12 2015 jchaloup - 1.1.0-0.6.gitc91950f -- Bump to upstream c91950f01cb14ad47486dfcd2fdfb4be3ee7f36b - related: #1211266 - -* Tue Aug 11 2015 jchaloup - 1.1.0-0.5.gite44c8e6 -- Bump to upstream e44c8e6661c931f7fd434911b0d3bca140e1df3a - related: #1211266 - -* Mon Aug 10 2015 jchaloup - 1.1.0-0.4.git2bfa9a1 -- Bump to upstream 2bfa9a1f98147cfdc2e9f4cf50e2c430518d91eb - related: #1243827 - -* Thu Aug 06 2015 jchaloup - 1.1.0-0.3.git4c42e13 -- Bump to upstream 4c42e1302d3b351f3cb6074d32aa420bbd45e07d -- Change import path prefix to k8s.io/kubernetes - related: #1243827 - -* Wed Aug 05 2015 jchaloup - 1.1.0-0.2.git159ba48 -- Bump to upstream 159ba489329e9f6ce422541e13f97e1166090ec8 - related: #1243827 - -* Sat Aug 01 2015 jchaloup - 1.1.0-0.1.git6129d3d -- Bump to upstream 6129d3d4eb80714286650818081a64ce2699afed - related: #1243827 - -* Fri Jul 31 2015 jchaloup - 1.0.0-0.18.gitff058a1 -- Bump to upstream ff058a1afeb63474f7a35805941f3b07c27aae0f - related: #1243827 - -* Thu Jul 30 2015 jchaloup - 1.0.0-0.17.git769230e -- Bump to upstream 769230e735993bb0bf924279a40593c147c9a6ab - related: #1243827 - -* Wed Jul 29 2015 jchaloup - 1.0.0-0.16.gitdde7222 -- Bump to upstream dde72229dc9cbbdacfb2e44b22d9d5b357027020 - related: #1243827 - -* Tue Jul 28 2015 jchaloup - 1.0.0-0.15.gitc5bffaa -- Bump to upstream c5bffaaf3166513da6259c44a5d1ba8e86bea5ce - related: #1243827 - -* Sat Jul 25 2015 jchaloup - 1.0.0-0.14.git5bd82ff -- Bump to upstream 5bd82ffe6da8f4e72e71b362635e558bfc412106 - related: #1243827 - -* Fri Jul 24 2015 jchaloup - 1.0.0-0.13.git291acd1 -- Bump to upstream 291acd1a09ac836ec7524b060a19a6498d9878dd - related: #1243827 - -* Thu Jul 23 2015 jchaloup - 1.0.0-0.12.gitfbed349 -- Bump to upstream fbed3492bfa09e59b1c423fdd7c1ecad333a06ef - related: #1243827 - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.11.gitfbc85e9 -- Add runtime dependency of kubernetes-node on socat (so kubectl port-forward works on AH) - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.10.gitfbc85e9 -- Update the build script for go1.5 as well -- Bump to upstream fbc85e9838f25547be94fbffeeb92a756d908ca0 - related: #1243827 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.9.git2d88675 -- Bump to upstream 2d88675f2203d316d4bac312c7ccad12991b56c2 -- Change KUBE_ETCD_SERVERS to listen on 2379 ports instead of 4001 - resolves: #1243827 -- Add kubernetes-client to provide kubectl command - resolves: #1241469 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.8.gitb2dafda -- Fix dependency and tests for go-1.5 -- with_debug off as the builds ends with error "ELFRESERVE too small: ..." - -* Sat Jul 18 2015 Eric Paris - 1.0.0-0.7.gitb2dafda -- Update apiserver binary gid - -* Fri Jul 17 2015 jchaloup - 1.0.0-0.6.gitb2dafda -- Bump to upstream b2dafdaef5aceafad503ab56254b60f80da9e980 - related: #1211266 - -* Thu Jul 16 2015 jchaloup - 1.0.0-0.5.git596a8a4 -- Bump to upstream 596a8a40d12498b5335140f50753980bfaea4f6b - related: #1211266 - -* Wed Jul 15 2015 jchaloup - 1.0.0-0.4.git6ba532b -- Bump to upstream 6ba532b218cb5f5ea3f0e8dce5395182f388536c - related: #1211266 - -* Tue Jul 14 2015 jchaloup - 1.0.0-0.3.gitc616182 -- Bump to upstream c6161824db3784e6156131307a5e94647e5557fd - related: #1211266 - -* Mon Jul 13 2015 jchaloup - 1.0.0-0.2.git2c27b1f -- Bump to upstream 2c27b1fa64f4e70f04575d1b217494f49332390e - related: #1211266 - -* Sat Jul 11 2015 jchaloup - 1.0.0-0.1.git1b37059 -- Bump to upstream 1b370599ccf271741e657335c4943cb8c7dba28b - related: #1211266 - -* Fri Jul 10 2015 jchaloup - 0.21.1-0.2.gitccc4cfc -- Bump to upstream ccc4cfc7e11e0f127ac1cea045017dd799be3c63 - related: #1211266 - -* Thu Jul 09 2015 jchaloup - 0.21.1-0.1.git41f8907 -- Update generating of man pages from md (add genmanpages.sh) -- Bump to upstream 41f89075396329cd46c58495c7d3f7e13adcaa96 - related: #1211266 - -* Wed Jul 08 2015 jchaloup - 0.20.2-0.5.git77be29e -- Bump to upstream 77be29e3da71f0a136b6aa4048b2f0575c2598e4 - related: #1211266 - -* Tue Jul 07 2015 jchaloup - 0.20.2-0.4.git639a7da -- Bump to upstream 639a7dac50a331414cc6c47083323388da0d8756 - related: #1211266 - -* Mon Jul 06 2015 jchaloup - 0.20.2-0.3.gitbb6f2f7 -- Bump to upstream bb6f2f7ad90596d624d84cc691eec0f518e90cc8 - related: #1211266 - -* Fri Jul 03 2015 jchaloup - 0.20.2-0.2.git974377b -- Bump to upstream 974377b3064ac59b6e5694bfa568d67128026171 - related: #1211266 - -* Thu Jul 02 2015 jchaloup - 0.20.2-0.1.gitef41ceb -- Bump to upstream ef41ceb3e477ceada84c5522f429f02ab0f5948e - related: #1211266 - -* Tue Jun 30 2015 jchaloup - 0.20.0-0.3.git835eded -- Bump to upstream 835eded2943dfcf13a89518715e4be842a6a3ac0 -- Generate missing man pages - related: #1211266 - -* Mon Jun 29 2015 jchaloup - 0.20.0-0.2.git1c0b765 -- Bump to upstream 1c0b765df6dabfe9bd0e20489ed3bd18e6b3bda8 - Comment out missing man pages - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.20.0-0.1.git8ebd896 -- Bump to upstream 8ebd896351513d446d56bc5785c070d2909226a3 - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.19.3-0.6.git712f303 -- Bump to upstream 712f303350b35e70a573f3cb19193c8ec7ee7544 - related: #1211266 - -* Thu Jun 25 2015 jchaloup - 0.19.3-0.5.git2803b86 -- Bump to upstream 2803b86a42bf187afa816a7ce14fec754cc2af51 - related: #1211266 - -* Wed Jun 24 2015 Eric Paris - 0.19.3-0.4.git5b4dc4e -- Set CAP_NET_BIND_SERVICE on the kube-apiserver so it can use 443 - -* Wed Jun 24 2015 jchaloup - 0.19.3-0.3.git5b4dc4e -- Bump to upstream 5b4dc4edaa14e1ab4e3baa19df0388fa54dab344 - pkg/cloudprovider/* packages does not conform to golang language specification - related: #1211266 - -* Tue Jun 23 2015 jchaloup - 0.19.3-0.2.gita2ce3ea -- Bump to upstream a2ce3ea5293553b1fe0db3cbc6d53bdafe061d79 - related: #1211266 - -* Mon Jun 22 2015 jchaloup - 0.19.1-0.1.gitff0546d -- Bump to upstream ff0546da4fc23598de59db9f747c535545036463 - related: #1211266 - -* Fri Jun 19 2015 jchaloup - 0.19.0-0.7.gitb2e9fed -- Bump to upstream b2e9fed3490274509506285bdba309c50afb5c39 - related: #1211266 - -* Thu Jun 18 2015 jchaloup - 0.19.0-0.6.gitf660940 -- Bump to upstream f660940dceb3fe6ffb1b14ba495a47d91b5cd910 - related: #1211266 - -* Wed Jun 17 2015 jchaloup - 0.19.0-0.5.git43889c6 -- Bump to upstream 43889c612c4d396dcd8fbf3fbd217e106eaf5bce - related: #1211266 - -* Tue Jun 16 2015 jchaloup - 0.19.0-0.4.gita8269e3 -- Bump to upstream a8269e38c9e2bf81ba18cd6420e2309745d5b0b9 - related: #1211266 - -* Sun Jun 14 2015 jchaloup - 0.19.0-0.3.git5e5c1d1 -- Bump to upstream 5e5c1d10976f2f26d356ca60ef7d0d715c9f00a2 - related: #1211266 - -* Fri Jun 12 2015 jchaloup - 0.19.0-0.2.git0ca96c3 -- Bump to upstream 0ca96c3ac8b47114169f3b716ae4521ed8c7657c - related: #1211266 - -* Thu Jun 11 2015 jchaloup - 0.19.0-0.1.git5a02fc0 -- Bump to upstream 5a02fc07d8a943132b9e68fe7169778253318487 - related: #1211266 - -* Wed Jun 10 2015 jchaloup - 0.18.2-0.3.git0dfb681 -- Bump to upstream 0dfb681ba5d5dba535895ace9d650667904b5df7 - related: #1211266 - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.2.gitb68e08f -- golang-cover is not needed - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.1.gitb68e08f -- Bump to upstream b68e08f55f5ae566c4ea3905d0993a8735d6d34f - related: #1211266 - -* Sat Jun 06 2015 jchaloup - 0.18.1-0.3.git0f1c4c2 -- Bump to upstream 0f1c4c25c344f70c3592040b2ef092ccdce0244f - related: #1211266 - -* Fri Jun 05 2015 jchaloup - 0.18.1-0.2.git7309e1f -- Bump to upstream 7309e1f707ea5dd08c51f803037d7d22c20e2b92 - related: #1211266 - -* Thu Jun 04 2015 jchaloup - 0.18.1-0.1.gita161edb -- Bump to upstream a161edb3960c01ff6e14813858c2eeb85910009b - related: #1211266 - -* Wed Jun 03 2015 jchaloup - 0.18.0-0.3.gitb5a91bd -- Bump to upstream b5a91bda103ed2459f933959241a2b57331747ba -- Don't run %%check section (kept only for local run). Tests are now handled via CI. - related: #1211266 - -* Tue Jun 02 2015 jchaloup - 0.18.0-0.2.git5520386 -- Bump to upstream 5520386b180d3ddc4fa7b7dfe6f52642cc0c25f3 - related: #1211266 - -* Mon Jun 01 2015 jchaloup - 0.18.0-0.1.git0bb78fe -- Bump to upstream 0bb78fe6c53ce38198cc3805c78308cdd4805ac8 - related: #1211266 - -* Fri May 29 2015 jchaloup - 0.17.1-6 -- Bump to upstream ed4898d98c46869e9cbdb44186dfdeda9ff80cc2 - related: #1211266 - -* Thu May 28 2015 jchaloup - 0.17.1-5 -- Bump to upstream 6fa2777e26559fc008eacac83eb165d25bd9a7de - related: #1211266 - -* Tue May 26 2015 jchaloup - 0.17.1-4 -- Bump to upstream 01fcb58673001e56c69e128ab57e0c3f701aeea5 - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-3 -- Decompose package into master and node subpackage. - Thanks to Avesh for testing and patience. - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-2 -- Bump to upstream cf7b0bdc2a41d38613ac7f8eeea91cae23553fa2 - related: #1211266 - -* Fri May 22 2015 jchaloup - 0.17.1-1 -- Bump to upstream d9d12fd3f7036c92606fc3ba9046b365212fcd70 - related: #1211266 - -* Wed May 20 2015 jchaloup - 0.17.0-12 -- Bump to upstream a76bdd97100c66a46e2b49288540dcec58a954c4 - related: #1211266 - -* Tue May 19 2015 jchaloup - 0.17.0-11 -- Bump to upstream 10339d72b66a31592f73797a9983e7c207481b22 - related: #1211266 - -* Mon May 18 2015 jchaloup - 0.17.0-10 -- Bump to upstream efb42b302d871f7217394205d84e5ae82335d786 - related: #1211266 - -* Sat May 16 2015 jchaloup - 0.17.0-9 -- Bump to upstream d51e131726b925e7088b90915e99042459b628e0 - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-8 -- Bump to upstream 1ee33ac481a14db7b90e3bbac8cec4ceea822bfb - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-7 -- Bump to upstream d3c6fb0d6a13c0177dcd67556d72963c959234ea - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-6 -- Bump to upstream f57f31783089f41c0bdca8cb87a1001ca94e1a45 - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-5 -- Bump to upstream c90d381d0d5cf8ab7b8412106f5a6991d7e13c7d - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-4 -- Bump to upstream 5010b2dde0f9b9eb820fe047e3b34bc9fa6324de -- Add debug info - related: #1211266 - -* Wed May 13 2015 jchaloup - 0.17.0-3 -- Bump to upstream ec19d41b63f5fe7b2c939e7738a41c0fbe65d796 - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-2 -- Provide /usr/bin/kube-version-change binary - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-1 -- Bump to upstream 962f10ee580eea30e5f4ea725c4e9e3743408a58 - related: #1211266 - -* Mon May 11 2015 jchaloup - 0.16.2-7 -- Bump to upstream 63182318c5876b94ac9b264d1224813b2b2ab541 - related: #1211266 - -* Fri May 08 2015 jchaloup - 0.16.2-6 -- Bump to upstream d136728df7e2694df9e082902f6239c11b0f2b00 -- Add NetworkManager as dependency for /etc/resolv.conf - related: #1211266 - -* Thu May 07 2015 jchaloup - 0.16.2-5 -- Bump to upstream ca0f678b9a0a6dc795ac7a595350d0dbe9d0ac3b - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-4 -- Add docs to kubernetes-unit-test - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-3 -- Bump to upstream 3a24c0e898cb3060d7905af6df275a3be562451d - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-2 -- Add api and README.md to kubernetes-unit-test - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-1 -- Bump to upstream 72048a824ca16c3921354197953fabecede5af47 - related: #1211266 - -* Mon May 04 2015 jchaloup - 0.16.1-2 -- Bump to upstream 1dcd80cdf3f00409d55cea1ef0e7faef0ae1d656 - related: #1211266 - -* Sun May 03 2015 jchaloup - 0.16.1-1 -- Bump to upstream 86751e8c90a3c0e852afb78d26cb6ba8cdbc37ba - related: #1211266 - -* Fri May 01 2015 jchaloup - 0.16.0-2 -- Bump to upstream 72708d74b9801989ddbdc8403fc5ba4aafb7c1ef - related: #1211266 - -* Wed Apr 29 2015 jchaloup - 0.16.0-1 -- Bump to upstream 7dcce2eeb7f28643d599c8b6a244523670d17c93 - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-10 -- Add unit-test subpackage - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-9 -- Bump to upstream 99fc906f78cd2bcb08536c262867fa6803f816d5 - related: #1211266 - -* Mon Apr 27 2015 jchaloup - 0.15.0-8 -- Bump to upstream 051dd96c542799dfab39184d2a7c8bacf9e88d85 - related: #1211266 - -* Fri Apr 24 2015 jchaloup - 0.15.0-7 -- Bump to upstream 9f753c2592481a226d72cea91648db8fb97f0da8 - related: #1211266 - -* Thu Apr 23 2015 jchaloup - 0.15.0-6 -- Bump to upstream cf824ae5e07965ba0b4b15ee88e08e2679f36978 - related: #1211266 - -* Tue Apr 21 2015 jchaloup - 0.15.0-5 -- Bump to upstream 21788d8e6606038a0a465c97f5240b4e66970fbb - related: #1211266 - -* Mon Apr 20 2015 jchaloup - 0.15.0-4 -- Bump to upstream eb1ea269954da2ce557f3305fa88d42e3ade7975 - related: #1211266 - -* Fri Apr 17 2015 jchaloup - 0.15.0-3 -- Obsolete cadvisor as it is integrated in kubelet - related: #1211266 - -* Wed Apr 15 2015 jchaloup - 0.15.0-0.2.git0ea87e4 -- Bump to upstream 0ea87e486407298dc1e3126c47f4076b9022fb09 - related: #1211266 - -* Tue Apr 14 2015 jchaloup - 0.15.0-0.1.gitd02139d -- Bump to upstream d02139d2b454ecc5730cc535d415c1963a7fb2aa - related: #1211266 - -* Sun Apr 12 2015 jchaloup - 0.14.2-0.2.gitd577db9 -- Bump to upstream d577db99873cbf04b8e17b78f17ec8f3a27eca30 - -* Wed Apr 08 2015 jchaloup - 0.14.2-0.1.git2719194 -- Bump to upstream 2719194154ffd38fd1613699a9dd10a00909957e - Use etcd-2.0.8 and higher - -* Tue Apr 07 2015 jchaloup - 0.14.1-0.2.gitd2f4734 -- Bump to upstream d2f473465738e6b6f7935aa704319577f5e890ba - -* Thu Apr 02 2015 jchaloup - 0.14.1-0.1.gita94ffc8 -- Bump to upstream a94ffc8625beb5e2a39edb01edc839cb8e59c444 - -* Wed Apr 01 2015 jchaloup - 0.14.0-0.2.git8168344 -- Bump to upstream 81683441b96537d4b51d146e39929b7003401cd5 - -* Tue Mar 31 2015 jchaloup - 0.14.0-0.1.git9ed8761 -- Bump to upstream 9ed87612d07f75143ac96ad90ff1ff68f13a2c67 -- Remove [B]R from devel branch until the package has stable API - -* Mon Mar 30 2015 jchaloup - 0.13.2-0.6.git8a7a127 -- Bump to upstream 8a7a127352263439e22253a58628d37a93fdaeb2 - -* Fri Mar 27 2015 jchaloup - 0.13.2-0.5.git8d94c43 -- Bump to upstream 8d94c43e705824f23791b66ad5de4ea095d5bb32 - resolves: #1205362 - -* Wed Mar 25 2015 jchaloup - 0.13.2-0.4.git455fe82 -- Bump to upstream 455fe8235be8fd9ba0ce21bf4f50a69d42e18693 - -* Mon Mar 23 2015 jchaloup - 0.13.2-0.3.gitef75888 -- Remove runtime dependency on etcd - resolves: #1202923 - -* Sun Mar 22 2015 jchaloup - 0.13.2-0.2.gitef75888 -- Bump to upstream ef758881d108bb53a128126c503689104d17f477 - -* Fri Mar 20 2015 jchaloup - 0.13.2-0.1.gita8f2cee -- Bump to upstream a8f2cee8c5418676ee33a311fad57d6821d3d29a - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.9.git53b25a7 -- Bump to upstream 53b25a7890e31bdec6f2a95b32200d6cc27ae2ca - fix kube-proxy.service and kubelet - resolves: #1200919 #1200924 - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.8.git39dceb1 -- Bump to upstream 39dceb13a511a83963a766a439cb386d10764310 - -* Thu Mar 12 2015 Eric Paris - 0.12.0-0.7.gita3fd0a9 -- Move from /etc/tmpfiles.d to %%{_tmpfilesdir} - resolves: #1200969 - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.6.gita3fd0a9 -- Place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /etc/tmpfiles.d/kubernetes.conf - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.5.gita3fd0a9 -- Bump to upstream a3fd0a9fd516bb6033f32196ae97aaecf8c096b1 - -* Tue Mar 10 2015 jchaloup - 0.12.0-0.4.gita4d871a -- Bump to upstream a4d871a10086436557f804930812f2566c9d4d39 - -* Fri Mar 06 2015 jchaloup - 0.12.0-0.3.git2700871 -- Bump to upstream 2700871b049d5498167671cea6de8317099ad406 - -* Thu Mar 05 2015 jchaloup - 0.12.0-0.2.git8b627f5 -- Bump to upstream 8b627f516fd3e4f62da90d401ceb3d38de6f8077 - -* Tue Mar 03 2015 jchaloup - 0.12.0-0.1.gitecca426 -- Bump to upstream ecca42643b91a7117de8cd385b64e6bafecefd65 - -* Mon Mar 02 2015 jchaloup - 0.11.0-0.5.git6c5b390 -- Bump to upstream 6c5b390160856cd8334043344ef6e08568b0a5c9 - -* Sat Feb 28 2015 jchaloup - 0.11.0-0.4.git0fec31a -- Bump to upstream 0fec31a11edff14715a1efb27f77262a7c3770f4 - -* Fri Feb 27 2015 jchaloup - 0.11.0-0.3.git08402d7 -- Bump to upstream 08402d798c8f207a2e093de5a670c5e8e673e2de - -* Wed Feb 25 2015 jchaloup - 0.11.0-0.2.git86434b4 -- Bump to upstream 86434b4038ab87ac40219562ad420c3cc58c7c6b - -* Tue Feb 24 2015 jchaloup - 0.11.0-0.1.git754a2a8 -- Bump to upstream 754a2a8305c812121c3845d8293efdd819b6a704 - turn off integration tests until "FAILED: unexpected endpoints: - timed out waiting for the condition" problem is resolved - Adding back devel subpackage ([B]R list outdated) - -* Fri Feb 20 2015 jchaloup - 0.10.1-0.3.git4c87805 -- Bump to upstream 4c87805870b1b22e463c4bd711238ef68c77f0af - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.2.git6f84bda -- Bump to upstream 6f84bdaba853872dbac69c84d3ab4b6964e85d8c - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.1.git7d6130e -- Bump to upstream 7d6130edcdfabd7dd2e6a06fdc8fe5e333f07f5c - -* Sat Feb 07 2015 jchaloup - 0.9.1-0.7.gitc9c98ab -- Bump to upstream c9c98ab19eaa6f0b2ea17152c9a455338853f4d0 - Since some dependencies are broken, we can not build Kubernetes from Fedora deps. - Switching to vendored source codes until Go draft is resolved - -* Wed Feb 04 2015 jchaloup - 0.9.1-0.6.git7f5ed54 -- Bump to upstream 7f5ed541f794348ae6279414cf70523a4d5133cc - -* Tue Feb 03 2015 jchaloup - 0.9.1-0.5.git2ac6bbb -- Bump to upstream 2ac6bbb7eba7e69eac71bd9acd192cda97e67641 - -* Mon Feb 02 2015 jchaloup - 0.9.1-0.4.gite335e2d -- Bump to upstream e335e2d3e26a9a58d3b189ccf41ceb3770d1bfa9 - -* Fri Jan 30 2015 jchaloup - 0.9.1-0.3.git55793ac -- Bump to upstream 55793ac2066745f7243c666316499e1a8cf074f0 - -* Thu Jan 29 2015 jchaloup - 0.9.1-0.2.gitca6de16 -- Bump to upstream ca6de16df7762d4fc9b4ad44baa78d22e3f30742 - -* Tue Jan 27 2015 jchaloup - 0.9.1-0.1.git3623a01 -- Bump to upstream 3623a01bf0e90de6345147eef62894057fe04b29 -- update tests for etcd-2.0 - -* Thu Jan 22 2015 jchaloup - 0.8.2-571.gitb2f287c -+- Bump to upstream b2f287c259d856f4c08052a51cd7772c563aff77 - -* Thu Jan 22 2015 Eric Paris - 0.8.2-570.gitb2f287c -- patch kubelet service file to use docker.service not docker.socket - -* Wed Jan 21 2015 jchaloup - 0.8.2-0.1.git5b04640 -- Bump to upstream 5b046406a957a1e7eda7c0c86dd7a89e9c94fc5f - -* Sun Jan 18 2015 jchaloup - 0.8.0-126.0.git68298f0 -- Add some missing dependencies -- Add devel subpackage - -* Fri Jan 09 2015 Eric Paris - 0.8.0-125.0.git68298f0 -- Bump to upstream 68298f08a4980f95dfbf7b9f58bfec1808fb2670 - -* Tue Dec 16 2014 Eric Paris - 0.7.0-18.0.git52e165a -- Bump to upstream 52e165a4fd720d1703ebc31bd6660e01334227b8 - -* Mon Dec 15 2014 Eric Paris - 0.6-297.0.git5ef34bf -- Bump to upstream 5ef34bf52311901b997119cc49eff944c610081b - -* Wed Dec 03 2014 Eric Paris -- Replace patch to use old googlecode/go.net/ with BuildRequires on golang.org/x/net/ - -* Tue Dec 02 2014 Eric Paris - 0.6-4.0.git993ef88 -- Bump to upstream 993ef88eec9012b221f79abe8f2932ee97997d28 - -* Mon Dec 01 2014 Eric Paris - 0.5-235.0.git6aabd98 -- Bump to upstream 6aabd9804fb75764b70e9172774002d4febcae34 - -* Wed Nov 26 2014 Eric Paris - 0.5-210.0.gitff1e9f4 -- Bump to upstream ff1e9f4c191342c24974c030e82aceaff8ea9c24 - -* Tue Nov 25 2014 Eric Paris - 0.5-174.0.git64e07f7 -- Bump to upstream 64e07f7fe03d8692c685b09770c45f364967a119 - -* Mon Nov 24 2014 Eric Paris - 0.5-125.0.git162e498 -- Bump to upstream 162e4983b947d2f6f858ca7607869d70627f5dff - -* Fri Nov 21 2014 Eric Paris - 0.5-105.0.git3f74a1e -- Bump to upstream 3f74a1e9f56b3c3502762930c0c551ccab0557ea - -* Thu Nov 20 2014 Eric Paris - 0.5-65.0.gitc6158b8 -- Bump to upstream c6158b8aa9c40fbf1732650a8611429536466b21 -- include go-restful build requirement - -* Tue Nov 18 2014 Eric Paris - 0.5-14.0.gitdf0981b -- Bump to upstream df0981bc01c5782ad30fc45cb6f510f365737fc1 - -* Tue Nov 11 2014 Eric Paris - 0.4-680.0.git30fcf24 -- Bump to upstream 30fcf241312f6d0767c7d9305b4c462f1655f790 - -* Mon Nov 10 2014 Eric Paris - 0.4-633.0.git6c70227 -- Bump to upstream 6c70227a2eccc23966d32ea6d558ee05df46e400 - -* Fri Nov 07 2014 Eric Paris - 0.4-595.0.gitb695650 -- Bump to upstream b6956506fa2682afa93770a58ea8c7ba4b4caec1 - -* Thu Nov 06 2014 Eric Paris - 0.4-567.0.git3b1ef73 -- Bump to upstream 3b1ef739d1fb32a822a22216fb965e22cdd28e7f - -* Thu Nov 06 2014 Eric Paris - 0.4-561.0.git06633bf -- Bump to upstream 06633bf4cdc1ebd4fc848f85025e14a794b017b4 -- Make spec file more RHEL/CentOS friendly - -* Tue Nov 04 2014 Eric Paris - 0.4-0.0.git4452163 -- rebase to v0.4 -- include man pages - -* Tue Oct 14 2014 jchaloup - 0.3-0.3.git98ac8e1 -- create /var/lib/kubelet -- Use bash completions from upstream -- Bump to upstream 98ac8e178fcf1627399d659889bcb5fe25abdca4 -- all by Eric Paris - -* Mon Sep 29 2014 Jan Chaloupka - 0.3-0.2.git88fdb65 -- replace * with coresponding files -- remove dependency on gcc - -* Wed Sep 24 2014 Eric Paris - 0.1-0.4.git6ebe69a -- prefer autosetup instead of setup (revert setup change in 0-0.3.git) -https://fedoraproject.org/wiki/Autosetup_packaging_draft -- revert version number to 0.1 - -* Mon Sep 08 2014 Lokesh Mandvekar - 0-0.3.git6ebe69a -- gopath defined in golang package already -- package owns /etc/kubernetes -- bash dependency implicit -- keep buildroot/$RPM_BUILD_ROOT macros consistent -- replace with macros wherever possible -- set version, release and source tarball prep as per -https://fedoraproject.org/wiki/Packaging:SourceURL#Github - -* Mon Sep 08 2014 Eric Paris -- make services restart automatically on error - -* Sat Sep 06 2014 Eric Paris -- update to upstream -- redo build to use project scripts -- use project scripts in %%check -- rework deletion of third_party packages to easily detect changes -- run apiserver and controller-manager as non-root - -* Mon Aug 11 2014 Adam Miller -- update to upstream -- decouple the rest of third_party - -* Thu Aug 7 2014 Eric Paris -- update to head -- update package to include config files - -* Wed Jul 16 2014 Colin Walters -- Initial package diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/changelog b/kubernetes/kubernetes-1.22.5/debian/deb_folder/changelog deleted file mode 100644 index f8c5458a4..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/changelog +++ /dev/null @@ -1,161 +0,0 @@ -kubernetes-1.22.5 (1.22.5-1) unstable; urgency=medium - - * Updated for stx debian packaging - - -- Kaustubh Dhokte Wed, 28 Sep 2022 18:02:32 +0000 - - -kubernetes (1.21.8-1) unstable; urgency=medium - - * Updated for stx debian packaging - - -- Mihnea Saracin Fri, 29 Oct 2021 12:51:12 +0000 - - -kubernetes (1.12.10+dfsg-1) UNRELEASED; urgency=medium - - [ TODO ] [ FIXME ] - * copyright / vendor - * missing-sources - * rules: "make generated_files" - - * New upstream release. - * Patch away deprecated "docker/engine-api". - * rules: - + clean "zz_generated.deepcopy.go" files. - * New patch to fix selinux import. - - -- Dmitry Smirnov Mon, 18 Jun 2018 15:26:23 +1000 - -kubernetes (1.7.16+dfsg-1) unstable; urgency=medium - - [ Michael Stapelberg ] - * Switch to XS-Go-Import-Path - - [ Dmitry Smirnov ] - * Resurrected "mergo.patch" that has been mistakenly removed - (Closes: #878254). - * Re-enabled safeguard test for the above problem. - * New upstream release: - + CVE-2017-1002101 (Closes: #892801) - + CVE-2017-1002102 (Closes: #894051) - * Updated Vcs URLs for Salsa. - * Standards-Version: 4.1.4 - * Build-Depends: - - golang-go - + golang-any - + golang-github-appc-cni-dev - + golang-github-armon-circbuf-dev - + golang-github-azure-azure-sdk-for-go-dev - + golang-github-dgrijalva-jwt-go-v3-dev - + golang-github-docker-distribution-dev - + golang-github-docker-docker-dev - + golang-github-emicklei-go-restful-swagger12-dev - + golang-github-gogo-protobuf-dev - + golang-github-gorilla-websocket-dev - + golang-github-grpc-ecosystem-go-grpc-prometheus-dev - + golang-github-karlseguin-ccache-dev - - golang-github-opencontainers-runc-dev - + golang-github-opencontainers-docker-runc-dev - + golang-github-pmezard-go-difflib-dev - + golang-golang-x-time-dev - + golang-golang-x-tools-dev - + golang-google-grpc-dev - + golang-gopkg-warnings.v0-dev - + golang-goprotobuf-dev - - -- Dmitry Smirnov Sun, 06 May 2018 16:20:21 +1000 - -kubernetes (1.7.7+dfsg-3) unstable; urgency=medium - - * kubernetes-master should depend on etcd (Closes: #855218). - - -- Andrew Shadura Sun, 22 Oct 2017 19:40:46 +0100 - -kubernetes (1.7.7+dfsg-2) unstable; urgency=medium - - * Use CURDIR, not PWD, unbreaks the build at buildds. - - -- Andrew Shadura Fri, 06 Oct 2017 19:25:45 +0200 - -kubernetes (1.7.7+dfsg-1) unstable; urgency=medium - - [ Tim Potter ] - * Open work for new release - * Remove unused Files-Excluded entries from d/copyright - * Remove Skydns B-D as no longer used - * Don't build on ppc64 or ppc64le architectures - - [ Andrew Shadura ] - * New upstream release. - * Refresh patches. - * Update build dependencies. - * Symlink vendor packages to the build directory. - - -- Andrew Shadura Fri, 06 Oct 2017 18:54:06 +0200 - -kubernetes (1.5.5+dfsg-2) unstable; urgency=medium - - * Team upload. - * Don't build on ppc64le due to Go linker problems. See GitHub issue - https://github.com/golang/go/issues/15823. - * Don't build on ppc64 as it's not supported by upstream at the - moment. (Closes: #860505) - - -- Tim Potter Sat, 03 Jun 2017 08:00:51 +1000 - -kubernetes (1.5.5+dfsg-1) unstable; urgency=low - - [ Dmitry Smirnov ] - * Switch to bundled "rkt". - * rules: remove "-p" option from build and test overrides. - * control: drop obsolete "golang-clockwork-dev" alternative. - * New patch to disable test failing on [armel]. - * Upload to unstable. - - [ Tim Potter ] - * New upstream version. [March 2017] - * Big updates to d/rules and d/copyright to update to upstream - changes made since the 1.2.x release. - * Refresh patches to bring up to date with upstream changes since - 1.2.x. - * control: add lsb-base as dependency for sysvinit scripts. - * Suppress spelling-error-in-binary Lintian messages. - - -- Tim Potter Thu, 13 Apr 2017 16:45:57 +1000 - -kubernetes (1.2.5+dfsg-1) experimental; urgency=medium - - * New upstream release [June 2016]. - * Switch to private "github.com/golang/glog" due to log noise. - * Disabled failing tests; no longer ignore failures in tests. - * Build/test using 2 cores only. - * New patch to update appc/cni name space (fixes FTBFS). - * Removed obsolete "spf13-cobra.patch". - - -- Dmitry Smirnov Sun, 03 Jul 2016 04:12:28 +1000 - -kubernetes (1.2.4+dfsg-2) experimental; urgency=medium - - * Added new patch to fix incompatibility with "imdario/mergo" v0.2.2 - (Closes: #825753). - Thanks, Florian Ernst. - * Enable tests but ignore failures for now. - - -- Dmitry Smirnov Fri, 17 Jun 2016 01:41:38 +1000 - -kubernetes (1.2.4+dfsg-1) experimental; urgency=medium - - * New upstream release [May 2016]. - * New patch to print output of "uname -m" on unsupported architectures. - * New "docker.patch" to fix potential FTBFS. - + Build-Depends += "golang-github-docker-distribution-dev". - - -- Dmitry Smirnov Wed, 15 Jun 2016 21:03:01 +1000 - -kubernetes (1.2.3+dfsg-1) experimental; urgency=low - - * Initial release (Closes: #795652). - - -- Dmitry Smirnov Mon, 25 Apr 2016 22:40:12 +1000 - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/control b/kubernetes/kubernetes-1.22.5/debian/deb_folder/control deleted file mode 100644 index 1c9313e5b..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/control +++ /dev/null @@ -1,90 +0,0 @@ -Source: kubernetes-1.22.5 -Section: admin -Priority: optional -Maintainer: StarlingX Developers -Build-Depends: debhelper-compat (= 13), - build-essential, - bash-completion, - jq, - rsync, - go-bindata, - go-md2man, - golang-1.16 -Standards-Version: 4.4.1 -Homepage: http://kubernetes.io/ - -Package: kubernetes-1.22.5-client -Provides: kubernetes-utils -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends} -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} -Description: Kubernetes Command Line Tool - The Kubernetes command line tool for interacting with the Kubernetes API. - -Package: kubernetes-1.22.5-master -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - adduser, - lsb-base, - etcd -Recommends: ${misc:Recommends}, kubernetes-1.22.5-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes services for master host - Container Cluster Manager from Google. Kubernetes is an open source system - for managing containerized applications across multiple hosts, providing - basic mechanisms for deployment, maintenance, and scaling of applications. - . - Linux kernel version 3.8 or above is required for proper operation of the - daemon process, and that any lower versions may have subtle and/or glaring - issues. - . - This package provides "kube-apiserver", "kube-controller-manager" and - "kube-scheduler" daemons. - -Package: kubernetes-1.22.5-node -Provides: cadvisor -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - adduser, - conntrack, - conntrackd, - docker.io, - lsb-base, - socat, -Recommends: ${misc:Recommends}, kubernetes-1.22.5-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes services for node host - Container Cluster Manager from Google. Kubernetes is an open source system - for managing containerized applications across multiple hosts, providing - basic mechanisms for deployment, maintenance, and scaling of applications. - . - Linux kernel version 3.8 or above is required for proper operation of the - daemon process, and that any lower versions may have subtle and/or glaring - issues. - -Package: kubernetes-1.22.5-kubeadm -Architecture: amd64 -Depends: ${misc:Depends}, containernetworking-plugins -Recommends: ${misc:Recommends}, kubernetes-1.22.5-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes Cluster Bootstrapping Tool - The Kubernetes command line tool for bootstrapping a Kubernetes cluster. - -Package: kubernetes-1.22.5-misc -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends} -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} -Description: dummy package - Kubernetes dummy package for misc stuff we don't want to install in production. - -Package: kubernetes-1.22.5-unit-test -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - hostname, - rsync, - etcd (>= 2.0.9), - network-manager, -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/copyright b/kubernetes/kubernetes-1.22.5/debian/deb_folder/copyright deleted file mode 100644 index dee773fdc..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/copyright +++ /dev/null @@ -1,477 +0,0 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: Kubernetes -Source: https://github.com/kubernetes/kubernetes - -Files: - debian/kubeadm.conf - debian/kubelet-cgroup-setup.sh -Copyright: - 2022 Wind River Systems, Inc. -License: Apache-2.0 - -Files: * -Copyright: - 2011-2016 Google Inc - 2014-2018 the Kubernetes Authors -License: Apache-2.0 -Comment: - examples/storage/mysql-galera/README.md - Copyrights in the above file are fragments of the sample output to console. - examples/storage/hazelcast/README.md - Copyrights in the above file are fragments of the sample output to console. - -Files: - vendor/github.com/coreos/rkt/api/v1alpha/* -Copyright: - 2015 The rkt Authors -License: Apache-2.0 - -Files: - third_party/forked/golang/* -Copyright: - 2009, 2012-2013 The Go Authors -License: BSD-3-Clause~Google - -Files: - third_party/protobuf/* -Copyright: 2008 Google Inc. -License: BSD-3-Clause~Google - -Files: - third_party/forked/shell2junit/* -Copyright: 2009 Manolo Carrasco (Manuel Carrasco Moñino) -License: Apache-2.0 - -Files: - third_party/htpasswd/* -Copyright: - 2008 Eli Carter - 2003-2013 Edgewall Software -License: BSD-3-Clause - -Files: - third_party/intemp/* -Copyright: - 2015 Karl Isenberg -License: Apache-2.0 - -Files: - third_party/swagger-ui/* -Copyright: - 2014 Reverb Technologies, Inc. -License: Apache-2.0 - -Files: - debian/missing-sources/backbone.js - third_party/swagger-ui/lib/backbone-min.js -Copyright: - 2010-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -License: Expat - -Files: - debian/missing-sources/handlebars.runtime-v2.0.0.js - third_party/swagger-ui/lib/handlebars*.js -Copyright: - 2011-2014 Yehuda Katz -License: Expat - -Files: - debian/missing-sources/highlight.js - third_party/swagger-ui/lib/highlight*.js -Copyright: - 2006, Ivan Sagalaev -License: BSD-3-Clause - -Files: - debian/missing-sources/jquery.js - third_party/swagger-ui/lib/jquery-1.8.0.min.js -Copyright: - 2012 jQuery Foundation and other contributors -License: Expat - -Files: - debian/missing-sources/jquery.ba-bbq.js - third_party/swagger-ui/lib/jquery.ba-bbq.min.js -Copyright: - 2010 "Cowboy" Ben Alman -License: Expat -Comment: Alternatively can be GPL-licensed. - -Files: - debian/missing-sources/jquery.slideto.js - third_party/swagger-ui/lib/jquery.slideto.min.js -Copyright: - 2015 Joakim Hedlund -License: Expat -Comment: https://github.com/Sleavely/jQuery-slideto/blob/master/LICENSE - -Files: - third_party/swagger-ui/lib/jquery.wiggle.min.js -Copyright: - WonderGroup, Jordan Thomas -License: Expat - -Files: - third_party/swagger-ui/lib/marked.js -Copyright: - 2011-2014 Christopher Jeffrey -License: Expat - -Files: - debian/missing-sources/underscore.js - third_party/swagger-ui/lib/underscore-min.js -Copyright: - 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -License: Expat - -Files: - third_party/swagger-ui/lib/shred.bundle.js - third_party/swagger-ui/lib/shred/content.js -Copyright: - 2012-2015 Panda Strike, LLC and Dan Yoder - Alexandru Marasteanu -License: ISC - -Files: - vendor/bitbucket.org/bertimus9/systemstat/* -Copyright: - 2013 Phillip Bond -License: Expat - -Files: - vendor/bitbucket.org/ww/goautoneg/* -Copyright: - 2011 Open Knowledge Foundation Ltd. -License: BSD-3-Clause~OKF - -Files: - vendor/github.com/Azure/azure-sdk-for-go/* -Copyright: - 2016 Microsoft Corporation -License: Apache-2.0 - -Files: - vendor/github.com/Azure/go-autorest/* -Copyright: - 2015 Microsoft Corporation -License: Apache-2.0 - -Files: - vendor/github.com/chai2010/gettext-go/* -Copyright: - 2013 ChaiShushan -License: BSD-3-Clause~Google - -Files: - vendor/github.com/clusterhq/flocker-go/* -Copyright: - 2014-2016 ClusterHQ -License: Apache-2.0 - -Files: - vendor/github.com/containernetworking/cni/* -Copyright: - 2015-2016 CNI authors -License: Apache-2.0 - -Files: - vendor/github.com/codedellemc/goscaleio/* -Copyright: Dell ??? -License: Apache-2.0 -Comment: https://github.com/thecodeteam/goscaleio/issues/32 - -Files: - vendor/github.com/fatih/camelcase/* -Copyright: 2015 Fatih Arslan -License: Expat - -Files: - vendor/github.com/heketi/heketi/* -Copyright: - 2015-2016 The heketi Authors -License: Apache-2.0 or LGPL-3+ or GPL-2 - -Files: - vendor/github.com/libopenstorage/openstorage/* -Copyright: 2015 Openstorage.org -License: Apache-2.0 - -Files: - vendor/github.com/rancher/go-rancher/* -Copyright: 2014-2015 Rancher Labs, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/rubiojr/go-vhd/* -Copyright: 2015 Sergio Rubio -License: Expat - -Files: - vendor/github.com/satori/uuid/* -Copyright: 2013-2016 Maxim Bublis -License: Expat - -Files: - vendor/github.com/dgrijalva/jwt-go/* -Copyright: - 2012 Dave Grijalva -License: Expat - -Files: - vendor/github.com/docker/distribution/* -Copyright: - 2014-2016 Docker, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/docker/docker/* -Copyright: - 2012-2016 Docker, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/gogo/protobuf/* -Copyright: - 2008 Google Inc. - 2010-2012, The Go Authors. - 2013, Vastech SA (PTY) LTD. -License: BSD-3-Clause - -Files: - vendor/github.com/golang/protobuf/* -Copyright: - 2008-2016, The Go Authors. - 2008 Google Inc. -License: BSD-3-Clause - -Files: - vendor/github.com/square/go-jose/* -Copyright: - 2014-2016 Square Inc. -License: Apache-2.0 - -Files: - vendor/github.com/square/go-jose/json/* -Copyright: - 2012 The Go Authors -License: BSD-3-Clause -Comment: The code is derived from the `encoding/json` package from Go 1.6 - -Files: - vendor/github.com/storageos/go-api/* -Copyright: 2015-2017 StorageOS -License: Expat - -Files: - vendor/github.com/storageos/go-api/client_unix.go - vendor/github.com/storageos/go-api/client_windows.go -Copyright: - 2013-2017 go-dockerclient authors -License: BSD-2-Clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - . - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Files: - vendor/google.golang.org/grpc/* -Copyright: - 2014-2016 Google Inc. -License: BSD-3-Clause - -Files: - debian/* -Copyright: - 2015-2019 Dmitry Smirnov - 2017 Tim Potter -License: GPL-3+ - -Files: debian/patches/* -Copyright: 2015-2016 Dmitry Smirnov -License: GPL-3+ or Apache-2.0 -Comment: patches can be licensed under the same terms as upstream. - -License: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - . - http://www.apache.org/licenses/LICENSE-2.0 - . - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - . - On Debian systems, the complete text of the Apache version 2.0 license - can be found in "/usr/share/common-licenses/Apache-2.0". - -License: BSD-3-Clause~Google - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - . - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: BSD-3-Clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: GPL-3+ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - ․ - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - ․ - The complete text of the GNU General Public License version 3 - can be found in "/usr/share/common-licenses/GPL-3". - -License: BSD-3-Clause~OKF - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - . - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - . - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - . - Neither the name of the Open Knowledge Foundation Ltd. nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior written - permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - the Software, and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - . - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -License: ISC - Permission to use, copy, modify, and/or distribute this software for - any purpose with or without fee is hereby granted, provided that the - above copyright notice and this permission notice appear in all - copies. - . - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - -License: LGPL-3+ - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - ․ - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - ․ - On Debian systems, the complete text of the GNU Lesser General Public - License Version 3 can be found in "/usr/share/common-licenses/LGPL-3". - -License: GPL-2 - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, version 2 of the License. - ․ - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - ․ - On Debian systems, the complete text of the GNU General Public - License Version 2 can be found in "/usr/share/common-licenses/GPL-2". diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubeadm.conf b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubeadm.conf deleted file mode 100644 index d8b77e9dc..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubeadm.conf +++ /dev/null @@ -1,18 +0,0 @@ -# Note: This dropin only works with kubeadm and kubelet v1.11+ -[Service] -Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" -Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" -# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically -EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env -# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use -# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. -EnvironmentFile=-/etc/default/kubelet -ExecStart= -ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS -ExecStartPre=-/usr/local/sbin/sanitize_kubelet_reserved_cpus.sh /etc/default/kubelet -ExecStartPre=-/usr/bin/kubelet-cgroup-setup.sh -ExecStartPost=/bin/bash -c 'echo $MAINPID > /var/run/kubelet.pid;' -ExecStopPost=/bin/rm -f /var/run/kubelet.pid -Restart=always -StartLimitInterval=0 -RestartSec=10 diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubelet-cgroup-setup.sh b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubelet-cgroup-setup.sh deleted file mode 100644 index 385314bfe..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubelet-cgroup-setup.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 Wind River Systems, Inc. -# -# SPDX-License-Identifier: Apache-2.0 -# -# This script does minimal cgroup setup for kubelet. This creates k8s-infra -# cgroup for a minimal set of resource controllers, and configures cpuset -# attributes to span all online cpus and nodes. This will do nothing if -# the k8s-infra cgroup already exists (i.e., assume already configured). -# NOTE: The creation of directories under /sys/fs/cgroup is volatile, and -# does not persist reboots. The cpuset.mems and cpuset.cpus is later updated -# by puppet kubernetes.pp manifest. -# - -# Define minimal path -PATH=/bin:/usr/bin:/usr/local/bin - -# Log info message to /var/log/daemon.log -function LOG { - logger -p daemon.info "$0($$): $@" -} - -# Log error message to /var/log/daemon.log -function ERROR { - logger -s -p daemon.error "$0($$): ERROR: $@" -} - -# Create minimal cgroup directories and configure cpuset attributes if required -function create_cgroup { - local cg_name=$1 - local cg_nodeset=$2 - local cg_cpuset=$3 - - local CGROUP=/sys/fs/cgroup - local CONTROLLERS_AUTO_DELETED=("pids" "hugetlb") - local CONTROLLERS_PRESERVED=("cpuset" "memory" "cpu,cpuacct" "systemd") - local cnt='' - local CGDIR='' - local RC=0 - - # Ensure that these cgroups are created every time as they are auto deleted - for cnt in ${CONTROLLERS_AUTO_DELETED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - continue - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # These cgroups are preserved so if any of these are encountered additional - # cgroup setup is not required - for cnt in ${CONTROLLERS_PRESERVED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - exit ${RC} - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # Customize cpuset attributes - LOG "Configuring cgroup: ${cg_name}, nodeset: ${cg_nodeset}, cpuset: ${cg_cpuset}" - CGDIR=${CGROUP}/cpuset/${cg_name} - local CGMEMS=${CGDIR}/cpuset.mems - local CGCPUS=${CGDIR}/cpuset.cpus - local CGTASKS=${CGDIR}/tasks - - # Assign cgroup memory nodeset - LOG "Assign nodeset ${cg_nodeset} to ${CGMEMS}" - /bin/echo ${cg_nodeset} > ${CGMEMS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Unable to write to: ${CGMEMS}, rc=${RC}" - exit ${RC} - fi - - # Assign cgroup cpus - LOG "Assign cpuset ${cg_cpuset} to ${CGCPUS}" - /bin/echo ${cg_cpuset} > ${CGCPUS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Assigning: ${cg_cpuset} to ${CGCPUS}, rc=${RC}" - exit ${RC} - fi - - # Set file ownership - chown root:root ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting owner for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - # Set file mode permissions - chmod 644 ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting mode for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - return ${RC} -} - -if [ $UID -ne 0 ]; then - ERROR "Require sudo/root." - exit 1 -fi - -# Configure default kubepods cpuset to span all online cpus and nodes. -ONLINE_NODESET=$(/bin/cat /sys/devices/system/node/online) -ONLINE_CPUSET=$(/bin/cat /sys/devices/system/cpu/online) - -# Configure kubelet cgroup to match cgroupRoot. -create_cgroup 'k8s-infra' ${ONLINE_NODESET} ${ONLINE_CPUSET} - -exit $? - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-client.install b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-client.install deleted file mode 100644 index 0e66ed7e8..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-client.install +++ /dev/null @@ -1,3 +0,0 @@ -usr/local/kubernetes/1.22.5/stage2/usr/bin/kubectl -usr/local/kubernetes/1.22.5/stage2/usr/share/bash-completion/completions/kubectl - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-client.lintian-overrides b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-client.lintian-overrides deleted file mode 100644 index 160b6783b..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-client.lintian-overrides +++ /dev/null @@ -1,9 +0,0 @@ -## Generated man pages: TODO -manpage-has-bad-whatis-entry usr/share/man/* -manpage-has-errors-from-man usr/share/man/man1/* - -## Bash-completion script does not have to be executable: -script-not-executable usr/share/bash-completion/completions/kubectl - -## Override annoying/useless messages -kubernetes-client: spelling-error-in-binary diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-kubeadm.dirs b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-kubeadm.dirs deleted file mode 100644 index bbc314b11..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-kubeadm.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/local/kubernetes/1.22.5/stage2/etc/systemd/system/kubelet.service.d/ diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-kubeadm.install b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-kubeadm.install deleted file mode 100644 index 77ac14bb7..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-kubeadm.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/local/kubernetes/1.22.5/stage1/usr/bin/kubeadm -usr/local/kubernetes/1.22.5/stage2/etc/systemd/system/kubelet.service.d/kubeadm.conf diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.dirs b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.dirs deleted file mode 100644 index ff672f63a..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.dirs +++ /dev/null @@ -1,5 +0,0 @@ -etc/kubernetes-1.22.5 -etc/kubernetes-1.22.5/addons -etc/kubernetes-1.22.5/addons/volumesnapshots -etc/kubernetes-1.22.5/addons/volumesnapshots/crd -etc/kubernetes-1.22.5/addons/volumesnapshots/volume-snapshot-controller diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.install b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.install deleted file mode 100644 index 4ad39ee41..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.install +++ /dev/null @@ -1,8 +0,0 @@ -usr/bin/kube-apiserver -usr/bin/kube-controller-manager -usr/bin/kube-scheduler -etc/kubernetes-1.22.5/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml -etc/kubernetes-1.22.5/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml -etc/kubernetes-1.22.5/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshots.yaml -etc/kubernetes-1.22.5/addons/volumesnapshots/volume-snapshot-controller/volume-snapshot-controller-deployment.yaml -etc/kubernetes-1.22.5/addons/volumesnapshots/volume-snapshot-controller/rbac-volume-snapshot-controller.yaml diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.lintian-overrides b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.lintian-overrides deleted file mode 100644 index f73c63ffd..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-master.lintian-overrides +++ /dev/null @@ -1,7 +0,0 @@ -## No manual page for hyperkube -kubernetes-master: binary-without-manpage usr/bin/hyperkube - -## Override annoying/useless messages -kubernetes-master: spelling-error-in-binary -kubernetes-master: manpage-has-errors-from-man usr/share/man/man1/* -kubernetes-master: manpage-has-bad-whatis-entry usr/share/man/man1/* diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-misc.install b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-misc.install deleted file mode 100644 index 8aa6d765e..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-misc.install +++ /dev/null @@ -1,11 +0,0 @@ -#TODO with genmanpages -#usr/share/man/man1/kube-apiserver.1* -#usr/share/man/man1/kube-controller-manager.1* -#usr/share/man/man1/kube-scheduler.1* -#usr/share/man/man1/kube-proxy.1* -usr/bin/kube-proxy -#usr/share/man/man1/kubelet.1* -#usr/share/man/man1/kubeadm.1* -#usr/share/man/man1/kubeadm-* -#usr/share/man/man1/kubectl.1* -#usr/share/man/man1/kubectl-* diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-node.install b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-node.install deleted file mode 100644 index 261ac6b18..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-node.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/local/kubernetes/1.22.5/stage2/usr/bin/kubelet -usr/local/kubernetes/1.22.5/stage2/usr/bin/kubelet-cgroup-setup.sh diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-node.lintian-overrides b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-node.lintian-overrides deleted file mode 100644 index 99d470def..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-node.lintian-overrides +++ /dev/null @@ -1,4 +0,0 @@ -## Override annoying/useless messages -kubernetes-node: spelling-error-in-binary -kubernetes-node: manpage-has-errors-from-man usr/share/man/man1/* -kubernetes-node: manpage-has-bad-whatis-entry usr/share/man/man1/* diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-unit-test.install b/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-unit-test.install deleted file mode 100644 index da8847677..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/kubernetes-1.22.5-unit-test.install +++ /dev/null @@ -1,2 +0,0 @@ -var/lib/kubernetes-unit-test/ - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch deleted file mode 100644 index c6213de30..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch +++ /dev/null @@ -1,117 +0,0 @@ -From b90e3858a8d319c7526dd8190ee05edce24ba072 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Thu, 9 Sep 2021 13:16:26 -0400 -Subject: [PATCH 7/7] Revert "use subpath for coredns only for default - repository" - -This reverts commit 38a41e1557649a7cc763bf737779db9aa03ec75e. ---- - cmd/kubeadm/app/constants/constants.go | 2 +- - cmd/kubeadm/app/images/images.go | 5 --- - cmd/kubeadm/app/images/images_test.go | 50 -------------------------- - 3 files changed, 1 insertion(+), 56 deletions(-) - -diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go -index b3559734..95338949 100644 ---- a/cmd/kubeadm/app/constants/constants.go -+++ b/cmd/kubeadm/app/constants/constants.go -@@ -322,7 +322,7 @@ const ( - CoreDNSDeploymentName = "coredns" - - // CoreDNSImageName specifies the name of the image for CoreDNS add-on -- CoreDNSImageName = "coredns" -+ CoreDNSImageName = "coredns/coredns" - - // CoreDNSVersion is the version of CoreDNS to be deployed if it is used - CoreDNSVersion = "v1.8.4" -diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go -index 7e97dbc9..187c7189 100644 ---- a/cmd/kubeadm/app/images/images.go -+++ b/cmd/kubeadm/app/images/images.go -@@ -20,7 +20,6 @@ import ( - "fmt" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" - -@@ -48,10 +47,6 @@ func GetDNSImage(cfg *kubeadmapi.ClusterConfiguration) string { - if cfg.DNS.ImageRepository != "" { - dnsImageRepository = cfg.DNS.ImageRepository - } -- // Handle the renaming of the official image from "k8s.gcr.io/coredns" to "k8s.gcr.io/coredns/coredns -- if dnsImageRepository == kubeadmapiv1beta2.DefaultImageRepository { -- dnsImageRepository = fmt.Sprintf("%s/coredns", dnsImageRepository) -- } - // DNS uses an imageTag that corresponds to the DNS version matching the Kubernetes version - dnsImageTag := constants.CoreDNSVersion - -diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go -index 2fd9d3f5..9f363939 100644 ---- a/cmd/kubeadm/app/images/images_test.go -+++ b/cmd/kubeadm/app/images/images_test.go -@@ -22,7 +22,6 @@ import ( - "testing" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - ) - -@@ -226,52 +225,3 @@ func TestGetAllImages(t *testing.T) { - }) - } - } -- --func TestGetDNSImage(t *testing.T) { -- var tests = []struct { -- expected string -- cfg *kubeadmapi.ClusterConfiguration -- }{ -- { -- expected: "foo.io/coredns:v1.8.4", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: kubeadmapiv1beta2.DefaultImageRepository + "/coredns/coredns:v1.8.4", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: kubeadmapiv1beta2.DefaultImageRepository, -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: "foo.io/coredns/coredns:v1.8.4", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- ImageMeta: kubeadmapi.ImageMeta{ -- ImageRepository: "foo.io/coredns", -- }, -- }, -- }, -- }, -- } -- -- for _, test := range tests { -- actual := GetDNSImage(test.cfg) -- if actual != test.expected { -- t.Errorf( -- "failed to GetDNSImage:\n\texpected: %s\n\t actual: %s", -- test.expected, -- actual, -- ) -- } -- } --} --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch deleted file mode 100644 index 63cdfbdbb..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 087dcfa1a84ec38541fa9870937d76b80a707e2c Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 23 Oct 2020 17:46:10 -0600 -Subject: [PATCH 6/7] enable support for kubernetes to ignore isolcpus - -The normal mechanisms for allocating isolated CPUs do not allow -a mix of isolated and exclusive CPUs in the same container. In -order to allow this in *very* limited cases where the pod spec -is known in advance we will add the ability to disable the normal -isolcpus behaviour. - -If the file "/etc/kubernetes/ignore_isolcpus" exists, then kubelet -will basically forget everything it knows about isolcpus and just -treat them like regular CPUs. - -The admin user can then rely on the fact that CPU allocation is -deterministic to ensure that the isolcpus they configure end up being -allocated to the correct pods. - -Signed-off-by: Daniel Safta ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 8 ++++++++ - pkg/kubelet/cm/cpumanager/policy_static.go | 7 +++++++ - 2 files changed, 15 insertions(+) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 2f5b06dc..d9ec63bb 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -20,6 +20,7 @@ import ( - "fmt" - "io/ioutil" - "math" -+ "os" - "strings" - "sync" - "time" -@@ -55,6 +56,13 @@ const cpuManagerStateFileName = "cpu_manager_state" - - // get the system-level isolated CPUs - func getIsolcpus() cpuset.CPUSet { -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ klog.Infof("[cpumanager] turning off isolcpus awareness") -+ return cpuset.NewCPUSet() -+ } -+ - dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") - if err != nil { - klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 72a99496..ee389a85 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "os" - "strconv" - - v1 "k8s.io/api/core/v1" -@@ -658,6 +659,12 @@ func isKubeInfra(pod *v1.Pod) bool { - - // get the isolated CPUs (if any) from the devices associated with a specific container - func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ return cpuset.NewCPUSet() -+ } -+ - // NOTE: This is required for TestStaticPolicyAdd() since makePod() does - // not create UID. We also need a way to properly stub devicemanager. - if len(string(pod.UID)) == 0 { --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch deleted file mode 100644 index 14e530c73..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch +++ /dev/null @@ -1,108 +0,0 @@ -From de653bd0823b248d623a39c17a3872e85ce952b0 Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 3 Sep 2021 18:05:15 -0400 -Subject: [PATCH 5/7] kubeadm: create platform pods with zero CPU resources - -We want to specify zero CPU resources when creating the manifests -for the static platform pods, as a workaround for the lack of -separate resource tracking for platform resources. - -We also specify zero CPU resources for the coredns deployment. -manifests.go appears to be the main file for this, not sure if the -others are used but I changed them just in case. - -Signed-off-by: Daniel Safta ---- - cluster/addons/dns/coredns/coredns.yaml.base | 2 +- - cluster/addons/dns/coredns/coredns.yaml.in | 2 +- - cluster/addons/dns/coredns/coredns.yaml.sed | 2 +- - cmd/kubeadm/app/phases/addons/dns/manifests.go | 2 +- - cmd/kubeadm/app/phases/controlplane/manifests.go | 6 +++--- - 5 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/cluster/addons/dns/coredns/coredns.yaml.base b/cluster/addons/dns/coredns/coredns.yaml.base -index 4ee054f8ba5..d2b58f4af0e 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.base -+++ b/cluster/addons/dns/coredns/coredns.yaml.base -@@ -138,7 +138,7 @@ spec: - limits: - memory: __DNS__MEMORY__LIMIT__ - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.in b/cluster/addons/dns/coredns/coredns.yaml.in -index 1f791e447c9..ff03a801646 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.in -+++ b/cluster/addons/dns/coredns/coredns.yaml.in -@@ -138,7 +138,7 @@ spec: - limits: - memory: 'dns_memory_limit' - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.sed b/cluster/addons/dns/coredns/coredns.yaml.sed -index 4d64278aaa4..38fc9196b28 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.sed -+++ b/cluster/addons/dns/coredns/coredns.yaml.sed -@@ -138,7 +138,7 @@ spec: - limits: - memory: $DNS_MEMORY_LIMIT - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/addons/dns/manifests.go b/cmd/kubeadm/app/phases/addons/dns/manifests.go -index 3ac6856bfc6..0763b4c63db 100644 ---- a/cmd/kubeadm/app/phases/addons/dns/manifests.go -+++ b/cmd/kubeadm/app/phases/addons/dns/manifests.go -@@ -95,7 +95,7 @@ spec: - limits: - memory: 170Mi - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/controlplane/manifests.go b/cmd/kubeadm/app/phases/controlplane/manifests.go -index 8181bea63a4..4c4b4448dd4 100644 ---- a/cmd/kubeadm/app/phases/controlplane/manifests.go -+++ b/cmd/kubeadm/app/phases/controlplane/manifests.go -@@ -60,7 +60,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS), - ReadinessProbe: staticpodutil.ReadinessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/readyz", int(endpoint.BindPort), v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("250m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeAPIServer), - map[string]string{kubeadmconstants.KubeAPIServerAdvertiseAddressEndpointAnnotationKey: endpoint.String()}), -@@ -72,7 +72,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeControllerManager)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("200m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeControllerManager), nil), - kubeadmconstants.KubeScheduler: staticpodutil.ComponentPod(v1.Container{ -@@ -83,7 +83,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeScheduler)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("100m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeScheduler), nil), - } --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch deleted file mode 100644 index 3394c7a10..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch +++ /dev/null @@ -1,297 +0,0 @@ -From 3f69868f7bca99f6875dd4d197b3a974d1b558ed Mon Sep 17 00:00:00 2001 -From: Daniel Safta -Date: Wed, 22 Sep 2021 10:09:06 -0400 -Subject: [PATCH 1/7] kubelet cpumanager disable CFS quota throttling for - Guaranteed pods - -This disables CFS CPU quota to avoid performance degradation due to -Linux kernel CFS quota implementation. Note that 4.18 kernel attempts -to solve the CFS throttling problem, but there are reports that it is -not completely effective. - -This disables CFS quota throttling for Guaranteed pods for both -parent and container cgroups by writing -1 to cgroup cpu.cfs_quota_us. -Disabling has a dramatic latency improvement for HTTP response times. - -This patch is refactored in 1.21.3 due to new internal_container_lifecycle -framework. We leverage the same mechanism to set Linux resources as: -cpu manager: specify the container CPU set during the creation -(commit 38dc7509f862f081828e7d9167107b8c6e98ea23). - -Signed-off-by: Daniel Safta -Co-authored-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 7 +++ - pkg/kubelet/cm/cpumanager/fake_cpu_manager.go | 12 +++-- - pkg/kubelet/cm/helpers_linux.go | 12 ++++- - pkg/kubelet/cm/helpers_linux_test.go | 45 ++++++++++--------- - .../cm/internal_container_lifecycle_linux.go | 12 ++++- - 5 files changed, 61 insertions(+), 27 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 4777c132..29194271 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -72,6 +72,9 @@ type Manager interface { - // State returns a read-only interface to the internal CPU manager state. - State() state.Reader - -+ // GetCPUPolicy returns the assigned CPU manager policy -+ GetCPUPolicy() string -+ - // GetTopologyHints implements the topologymanager.HintProvider Interface - // and is consulted to achieve NUMA aware resource alignment among this - // and other resource controllers. -@@ -310,6 +313,10 @@ func (m *manager) State() state.Reader { - return m.state - } - -+func (m *manager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *manager) GetTopologyHints(pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - // The pod is during the admission phase. We need to save the pod to avoid it - // being cleaned before the admission ended -diff --git a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -index 28578e64..018f13b6 100644 ---- a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -@@ -17,7 +17,7 @@ limitations under the License. - package cpumanager - - import ( -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/kubelet/cm/containermap" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" -@@ -28,7 +28,8 @@ import ( - ) - - type fakeManager struct { -- state state.State -+ policy Policy -+ state state.State - } - - func (m *fakeManager) Start(activePods ActivePodsFunc, sourcesReady config.SourcesReady, podStatusProvider status.PodStatusProvider, containerRuntime runtimeService, initialContainers containermap.ContainerMap) error { -@@ -70,6 +71,10 @@ func (m *fakeManager) State() state.Reader { - return m.state - } - -+func (m *fakeManager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *fakeManager) GetCPUs(podUID, containerName string) cpuset.CPUSet { - klog.InfoS("GetCPUs", "podUID", podUID, "containerName", containerName) - return cpuset.CPUSet{} -@@ -83,6 +88,7 @@ func (m *fakeManager) GetAllocatableCPUs() cpuset.CPUSet { - // NewFakeManager creates empty/fake cpu manager - func NewFakeManager() Manager { - return &fakeManager{ -- state: state.NewMemoryState(), -+ policy: &nonePolicy{}, -+ state: state.NewMemoryState(), - } - } -diff --git a/pkg/kubelet/cm/helpers_linux.go b/pkg/kubelet/cm/helpers_linux.go -index 33b14e31..a6e5326b 100644 ---- a/pkg/kubelet/cm/helpers_linux.go -+++ b/pkg/kubelet/cm/helpers_linux.go -@@ -25,7 +25,7 @@ import ( - - libcontainercgroups "github.com/opencontainers/runc/libcontainer/cgroups" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/kubernetes/pkg/api/v1/resource" -@@ -167,6 +167,16 @@ func ResourceConfigForPod(pod *v1.Pod, enforceCPULimits bool, cpuPeriod uint64, - // build the result - result := &ResourceConfig{} - if qosClass == v1.PodQOSGuaranteed { -+ // Disable CFS CPU quota to avoid performance degradation due to -+ // Linux kernel CFS throttle implementation. -+ // NOTE: 4.18 kernel attempts to solve CFS throttling problem, -+ // but there are reports that it is not completely effective. -+ // This will configure cgroup CFS parameters at pod level: -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_period_us -+ cpuQuota = int64(-1) -+ cpuPeriod = uint64(100000) -+ - result.CpuShares = &cpuShares - result.CpuQuota = &cpuQuota - result.CpuPeriod = &cpuPeriod -diff --git a/pkg/kubelet/cm/helpers_linux_test.go b/pkg/kubelet/cm/helpers_linux_test.go -index bdd01ea1..b907f575 100644 ---- a/pkg/kubelet/cm/helpers_linux_test.go -+++ b/pkg/kubelet/cm/helpers_linux_test.go -@@ -1,3 +1,4 @@ -+//go:build linux - // +build linux - - /* -@@ -24,7 +25,7 @@ import ( - "testing" - "time" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - utilfeature "k8s.io/apiserver/pkg/util/feature" - featuregatetesting "k8s.io/component-base/featuregate/testing" -@@ -63,8 +64,9 @@ func TestResourceConfigForPod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -203,8 +205,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -217,8 +219,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -231,8 +233,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -245,8 +247,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -@@ -283,8 +285,9 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -423,8 +426,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -437,8 +440,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -451,8 +454,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -465,8 +468,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -diff --git a/pkg/kubelet/cm/internal_container_lifecycle_linux.go b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -index 9cf41620..2e15d9ba 100644 ---- a/pkg/kubelet/cm/internal_container_lifecycle_linux.go -+++ b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -@@ -1,3 +1,4 @@ -+//go:build linux - // +build linux - - /* -@@ -22,8 +23,9 @@ import ( - "strconv" - "strings" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2" -+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos" - ) - - func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, container *v1.Container, containerConfig *runtimeapi.ContainerConfig) error { -@@ -33,7 +35,13 @@ func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, contain - containerConfig.Linux.Resources.CpusetCpus = allocatedCPUs.String() - } - } -- -+ // Disable cgroup CFS throttle at the container level. -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_period_us -+ if i.cpuManager.GetCPUPolicy() == "static" && v1qos.GetPodQOS(pod) == v1.PodQOSGuaranteed { -+ containerConfig.Linux.Resources.CpuPeriod = int64(100000) -+ containerConfig.Linux.Resources.CpuQuota = int64(-1) -+ } - if i.memoryManager != nil { - numaNodes := i.memoryManager.GetMemoryNUMANodes(pod, container) - if numaNodes.Len() > 0 { --- -2.17.1 - - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-infrastructure-pods-use-system-re.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-infrastructure-pods-use-system-re.patch deleted file mode 100644 index 6f06c12c6..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-infrastructure-pods-use-system-re.patch +++ /dev/null @@ -1,160 +0,0 @@ -From 66f4a61ce77624dcc0b520e01fccacec61dfea37 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Tue, 7 Sep 2021 14:21:03 -0400 -Subject: [PATCH 3/7] kubelet cpumanager infrastructure pods use system - reserved CPUs - -This assigns system infrastructure pods to the "reserved" cpuset -to isolate them from the shared pool of CPUs. - -Infrastructure pods include any pods that belong to the kube-system, -armada, cert-manager, vault, platform-deployment-manager, portieris, -notification, flux-helm or metrics-server namespaces. - -The implementation is a bit simplistic, it is assumed that the -"reserved" cpuset is large enough to handle all infrastructure pods -CPU allocations. - -This also prevents infrastucture pods from using Guaranteed resources. - -Signed-off-by: Daniel Safta ---- - pkg/kubelet/cm/cpumanager/policy_static.go | 52 ++++++++++++++++--- - .../cm/cpumanager/policy_static_test.go | 19 ++++++- - 2 files changed, 63 insertions(+), 8 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 89625fc6..492457b1 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -53,6 +53,11 @@ func (e SMTAlignmentError) Type() string { - return ErrorSMTAlignment - } - -+// Define namespaces used by platform infrastructure pods -+var infraNamespaces = [...]string{ -+ "kube-system", "armada", "cert-manager", "platform-deployment-manager", "portieris", "vault", "notification", "flux-helm", "metrics-server", -+} -+ - // staticPolicy is a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. -@@ -141,12 +146,12 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - klog.InfoS("Reserved CPUs not available for exclusive assignment", "reservedSize", reserved.Size(), "reserved", reserved) - - return &staticPolicy{ -- topology: topology, -- reserved: reserved, -+ topology: topology, -+ reserved: reserved, - excludeReserved: excludeReserved, -- affinity: affinity, -- cpusToReuse: make(map[string]cpuset.CPUSet), -- options: opts, -+ affinity: affinity, -+ cpusToReuse: make(map[string]cpuset.CPUSet), -+ options: opts, - }, nil - } - -@@ -191,8 +196,8 @@ func (p *staticPolicy) validateState(s state.State) error { - // - user tampered with file - if !p.excludeReserved { - if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -- return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -- p.reserved.String(), tmpDefaultCPUset.String()) -+ return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -+ p.reserved.String(), tmpDefaultCPUset.String()) - } - } - // 2. Check if state for static policy is consistent -@@ -262,6 +267,25 @@ func (p *staticPolicy) updateCPUsToReuse(pod *v1.Pod, container *v1.Container, c - } - - func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Container) error { -+ // Process infra pods before guaranteed pods -+ if isKubeInfra(pod) { -+ // Container belongs in reserved pool. -+ // We don't want to fall through to the p.guaranteedCPUs() clause below so return either nil or error. -+ if _, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ klog.Infof("[cpumanager] static policy: reserved container already present in state, skipping (namespace: %s, pod UID: %s, pod: %s, container: %s)", pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } -+ -+ cpuset := p.reserved -+ if cpuset.IsEmpty() { -+ // If this happens then someone messed up. -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ } -+ s.SetCPUSet(string(pod.UID), container.Name, cpuset) -+ klog.Infof("[cpumanager] static policy: reserved: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -+ return nil -+ } -+ - if numCPUs := p.guaranteedCPUs(pod, container); numCPUs != 0 { - klog.InfoS("Static policy: Allocate", "pod", klog.KObj(pod), "containerName", container.Name) - // container belongs in an exclusively allocated pool -@@ -366,6 +390,10 @@ func (p *staticPolicy) guaranteedCPUs(pod *v1.Pod, container *v1.Container) int - if cpuQuantity.Value()*1000 != cpuQuantity.MilliValue() { - return 0 - } -+ // Infrastructure pods use reserved CPUs even if they're in the Guaranteed QoS class -+ if isKubeInfra(pod) { -+ return 0 -+ } - // Safe downcast to do for all systems with < 2.1 billion CPUs. - // Per the language spec, `int` is guaranteed to be at least 32 bits wide. - // https://golang.org/ref/spec#Numeric_types -@@ -568,3 +596,13 @@ func (p *staticPolicy) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, reu - - return hints - } -+ -+// check if a given pod is in a platform infrastructure namespace -+func isKubeInfra(pod *v1.Pod) bool { -+ for _, namespace := range infraNamespaces { -+ if namespace == pod.Namespace { -+ return true -+ } -+ } -+ return false -+} -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 80bd04a1..34c5a23c 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -830,7 +830,8 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - } - - func TestStaticPolicyAddWithResvList(t *testing.T) { -- -+ infraPod := makePod("fakePod", "fakeContainer2", "200m", "200m") -+ infraPod.Namespace = "kube-system" - testCases := []staticPolicyTestWithResvList{ - { - description: "GuPodSingleCore, SingleSocketHT, ExpectError", -@@ -872,6 +873,22 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(4, 5), - }, -+ { -+ description: "InfraPod, SingleSocketHT, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0, 1), -+ }, - } - - testExcl := true --- -2.17.1 diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch deleted file mode 100644 index 3a9d34cdd..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch +++ /dev/null @@ -1,564 +0,0 @@ -From f3db147d0a40a6f336e9fa6d737e36366f9adf87 Mon Sep 17 00:00:00 2001 -From: Daniel Safta -Date: Thu, 13 Jan 2022 11:08:48 +0200 -Subject: [PATCH 4/7] kubelet cpumanager introduce concept of isolated CPUs - -This introduces the concept of "isolated CPUs", which are CPUs that -have been isolated at the kernel level via the "isolcpus" kernel boot -parameter. - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via -'--system-reserved=cpu' will be used for infrastructure pods while the -isolated CPUs should be reserved via '--kube-reserved=cpu' to cause -kubelet to skip over them for "normal" CPU resource tracking. The -kubelet code will double-check that the specified isolated CPUs match -what the kernel exposes in "/sys/devices/system/cpu/isolated". - -A plugin (outside the scope of this commit) will expose the isolated -CPUs to kubelet via the device plugin API. - -If a pod specifies some number of "isolcpus" resources, the device -manager will allocate them. In this code we check whether such -resources have been allocated, and if so we set the container cpuset to -the isolated CPUs. This does mean that it really only makes sense to -specify "isolcpus" resources for best-effort or burstable pods, not for -guaranteed ones since that would throw off the accounting code. In -order to ensure the accounting still works as designed, if "isolcpus" -are specified for guaranteed pods, the affinity will be set to the -non-isolated CPUs. - -This patch was refactored in 1.21.3 due to upstream API change -node: podresources: make GetDevices() consistent -(commit ad68f9588c72d6477b5a290c548a9031063ac659). - -The routine podIsolCPUs() was refactored in 1.21.3 since the API -p.deviceManager.GetDevices() is returning multiple devices with -a device per cpu. The resultant cpuset needs to be the aggregate. - -The routine NewStaticPolicy was refactored in 1.22.5, adding a new argument -in its signature: cpuPolicyOptions map[string]string. This change is implies -shifting the new arguments(deviceManager, excludeReserved) with one position -to the right. - - -Signed-off-by: Daniel Safta -Co-authored-by: Jim Gauld -Co-authored-by: Chris Friesen ---- - pkg/kubelet/cm/container_manager_linux.go | 2 + - pkg/kubelet/cm/cpumanager/cpu_manager.go | 35 +++++++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 14 +++- - pkg/kubelet/cm/cpumanager/policy_static.go | 82 +++++++++++++++++-- - .../cm/cpumanager/policy_static_test.go | 50 ++++++++--- - 5 files changed, 164 insertions(+), 19 deletions(-) - -diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go -index d7aa6270..de68ad98 100644 ---- a/pkg/kubelet/cm/container_manager_linux.go -+++ b/pkg/kubelet/cm/container_manager_linux.go -@@ -1,3 +1,4 @@ -+//go:build linux - // +build linux - - /* -@@ -339,6 +340,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I - cm.GetNodeAllocatableReservation(), - nodeConfig.KubeletRootDir, - cm.topologyManager, -+ cm.deviceManager, - ) - if err != nil { - klog.ErrorS(err, "Failed to initialize cpu manager") -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index fba0bfd1..1d0ff0e4 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -18,7 +18,9 @@ package cpumanager - - import ( - "fmt" -+ "io/ioutil" - "math" -+ "strings" - "sync" - "time" - -@@ -32,6 +34,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" - kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" -@@ -50,6 +53,25 @@ type policyName string - // cpuManagerStateFileName is the file name where cpu manager stores its state - const cpuManagerStateFileName = "cpu_manager_state" - -+// get the system-level isolated CPUs -+func getIsolcpus() cpuset.CPUSet { -+ dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -+ return cpuset.NewCPUSet() -+ } -+ -+ // The isolated cpus string ends in a newline -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cset, err := cpuset.Parse(cpustring) -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to parse sysfs isolcpus string to cpuset") -+ return cpuset.NewCPUSet() -+ } -+ -+ return cset -+} -+ - // Manager interface provides methods for Kubelet to manage pod cpus. - type Manager interface { - // Start is called during Kubelet initialization. -@@ -149,7 +171,8 @@ func (s *sourcesReadyStub) AddSource(source string) {} - func (s *sourcesReadyStub) AllReady() bool { return true } - - // NewManager creates new cpu manager based on provided policy --func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store) (Manager, error) { -+func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store, deviceManager devicemanager.Manager) (Manager, error) { -+ - var topo *topology.CPUTopology - var policy Policy - var err error -@@ -190,7 +213,15 @@ func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconc - // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. - // This variable is primarily to make testing easier. - excludeReserved := true -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions, excludeReserved) -+ -+ // isolCPUs is the set of kernel-isolated CPUs. They should be a subset of specificCPUs or -+ // of the CPUs that NewStaticPolicy() will pick if numReservedCPUs is set. It's only in the -+ // argument list here for ease of testing, it's really internal to the policy. -+ isolCPUs := getIsolcpus() -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, isolCPUs, affinity, cpuPolicyOptions, deviceManager, excludeReserved) -+ if err != nil { -+ return nil, fmt.Errorf("new static policy error: %v", err) -+ } - - if err != nil { - return nil, fmt.Errorf("new static policy error: %w", err) -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index bbfc70b8..39532b1c 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -37,6 +37,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - ) - -@@ -215,6 +216,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ -@@ -230,8 +232,10 @@ func TestCPUManagerAdd(t *testing.T) { - }, - 0, - cpuset.NewCPUSet(), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), - nil, -+ testDM, - testExcl) - testCases := []struct { - description string -@@ -482,8 +486,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - } - - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -638,7 +643,9 @@ func TestCPUManagerGenerate(t *testing.T) { - } - defer os.RemoveAll(sDir) - -- mgr, err := NewManager(testCase.cpuPolicyName, nil, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager()) -+ testDM, err := devicemanager.NewManagerStub() -+ mgr, err := NewManager(testCase.cpuPolicyName, nil, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager(), testDM) -+ - if testCase.expectedError != nil { - if !strings.Contains(err.Error(), testCase.expectedError.Error()) { - t.Errorf("Unexpected error message. Have: %s wants %s", err.Error(), testCase.expectedError.Error()) -@@ -995,6 +1002,7 @@ func TestReconcileState(t *testing.T) { - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1009,8 +1017,10 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - }, - 1, - cpuset.NewCPUSet(0), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), - nil, -+ testDM, - testExcl) - testCases := []struct { - description string -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 953f41e9..ccac9f08 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "strconv" - - v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" -@@ -25,6 +26,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - ) -@@ -101,6 +103,10 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // subset of reserved CPUs with isolcpus attribute -+ isolcpus cpuset.CPUSet -+ // parent containerManager, used to get device list -+ deviceManager devicemanager.Manager - // If true, default CPUSet should exclude reserved CPUs - excludeReserved bool - // topology manager reference to get container Topology affinity -@@ -117,7 +123,8 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, excludeReserved bool) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, isolCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, deviceManager devicemanager.Manager, excludeReserved bool) (Policy, error) { -+ - opts, err := NewStaticPolicyOptions(cpuPolicyOptions) - if err != nil { - return nil, err -@@ -144,10 +151,17 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - } - - klog.InfoS("Reserved CPUs not available for exclusive assignment", "reservedSize", reserved.Size(), "reserved", reserved) -+ if !isolCPUs.IsSubsetOf(reserved) { -+ klog.Errorf("[cpumanager] isolCPUs %v is not a subset of reserved %v", isolCPUs, reserved) -+ reserved = reserved.Union(isolCPUs) -+ klog.Warningf("[cpumanager] mismatch isolCPUs %v, force reserved %v", isolCPUs, reserved) -+ } - - return &staticPolicy{ - topology: topology, - reserved: reserved, -+ isolcpus: isolCPUs, -+ deviceManager: deviceManager, - excludeReserved: excludeReserved, - affinity: affinity, - cpusToReuse: make(map[string]cpuset.CPUSet), -@@ -185,8 +199,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } else { - s.SetDefaultCPUSet(allCPUs) - } -- klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -- allCPUs, p.reserved, s.GetDefaultCPUSet()) -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, isolcpus:%v, default:%v\n", -+ allCPUs, p.reserved, p.isolcpus, s.GetDefaultCPUSet()) -+ - return nil - } - -@@ -277,10 +292,11 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - return nil - } - -- cpuset := p.reserved -+ cpuset := p.reserved.Clone().Difference(p.isolcpus) - if cpuset.IsEmpty() { - // If this happens then someone messed up. -- return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v, isolcpus:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved, p.isolcpus) -+ - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - klog.Infof("[cpumanager] static policy: reserved: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -@@ -324,8 +340,34 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - p.updateCPUsToReuse(pod, container, cpuset) -+ klog.Infof("[cpumanager] guaranteed: AddContainer "+ -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); numCPUS=%d, cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, numCPUs, cpuset) -+ return nil -+ } - -+ if isolcpus := p.podIsolCPUs(pod, container); isolcpus.Size() > 0 { -+ // container has requested isolated CPUs -+ if set, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ if set.Equals(isolcpus) { -+ klog.Infof("[cpumanager] isolcpus container already present in state, skipping (namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } else { -+ klog.Infof("[cpumanager] isolcpus container state has cpus %v, should be %v (namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ isolcpus, set, pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ } -+ } -+ // Note that we do not do anything about init containers here. -+ // It looks like devices are allocated per-pod based on effective requests/limits -+ // and extra devices from initContainers are not freed up when the regular containers start. -+ // TODO: confirm this is still true for 1.20 -+ s.SetCPUSet(string(pod.UID), container.Name, isolcpus) -+ klog.Infof("[cpumanager] isolcpus: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, isolcpus) -+ return nil - } -+ - // container belongs in the shared pool (nothing to do; use default cpuset) - return nil - } -@@ -607,3 +649,33 @@ func isKubeInfra(pod *v1.Pod) bool { - } - return false - } -+ -+// get the isolated CPUs (if any) from the devices associated with a specific container -+func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // NOTE: This is required for TestStaticPolicyAdd() since makePod() does -+ // not create UID. We also need a way to properly stub devicemanager. -+ if len(string(pod.UID)) == 0 { -+ return cpuset.NewCPUSet() -+ } -+ resContDevices := p.deviceManager.GetDevices(string(pod.UID), container.Name) -+ cpuSet := cpuset.NewCPUSet() -+ for resourceName, resourceDevs := range resContDevices { -+ // this resource name needs to match the isolcpus device plugin -+ if resourceName == "windriver.com/isolcpus" { -+ for devID, _ := range resourceDevs { -+ cpuStrList := []string{devID} -+ if len(cpuStrList) > 0 { -+ // loop over the list of strings, convert each one to int, add to cpuset -+ for _, cpuStr := range cpuStrList { -+ cpu, err := strconv.Atoi(cpuStr) -+ if err != nil { -+ panic(err) -+ } -+ cpuSet = cpuSet.Union(cpuset.NewCPUSet(cpu)) -+ } -+ } -+ } -+ } -+ } -+ return cpuSet -+} -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 34c5a23c..a0eb451b 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -25,6 +25,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - ) -@@ -65,8 +66,9 @@ func (spt staticPolicyTest) PseudoClone() staticPolicyTest { - } - - func TestStaticPolicyName(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -76,6 +78,7 @@ func TestStaticPolicyName(t *testing.T) { - } - - func TestStaticPolicyStart(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "non-corrupted state", -@@ -151,7 +154,7 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testCase.excludeReserved) - - policy := p.(*staticPolicy) - st := &mockState{ -@@ -199,7 +202,7 @@ func TestStaticPolicyAdd(t *testing.T) { - largeTopoCPUSet := largeTopoBuilder.Result() - largeTopoSock0CPUSet := largeTopoSock0Builder.Result() - largeTopoSock1CPUSet := largeTopoSock1Builder.Result() -- -+ testDM, _ := devicemanager.NewManagerStub() - // these are the cases which must behave the same regardless the policy options. - // So we will permutate the options to ensure this holds true. - optionsInsensitiveTestCases := []staticPolicyTest{ -@@ -529,8 +532,9 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -573,6 +577,7 @@ func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { - - func TestStaticPolicyRemove(t *testing.T) { - excludeReserved := false -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -631,7 +636,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -654,6 +659,7 @@ func TestStaticPolicyRemove(t *testing.T) { - - func TestTopologyAwareAllocateCPUs(t *testing.T) { - excludeReserved := false -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -722,7 +728,8 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, excludeReserved) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, excludeReserved) -+ - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -755,6 +762,7 @@ type staticPolicyTestWithResvList struct { - topo *topology.CPUTopology - numReservedCPUs int - reserved cpuset.CPUSet -+ isolcpus cpuset.CPUSet - stAssignments state.ContainerCPUAssignments - stDefaultCPUSet cpuset.CPUSet - pod *v1.Pod -@@ -765,6 +773,8 @@ type staticPolicyTestWithResvList struct { - } - - func TestStaticPolicyStartWithResvList(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() -+ testExcl := false - testCases := []staticPolicyTestWithResvList{ - { - description: "empty cpuset", -@@ -794,11 +804,9 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -- testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -- -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -838,6 +846,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), -@@ -850,6 +859,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), -@@ -862,6 +872,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -878,6 +889,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -889,11 +901,29 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(0, 1), - }, -+ { -+ description: "InfraPod, SingleSocketHT, Isolcpus, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0), -+ }, - } - - testExcl := true -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, testCase.isolcpus, topologymanager.NewFakeManager(), nil, testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch deleted file mode 100644 index 890f90136..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch +++ /dev/null @@ -1,319 +0,0 @@ -From 196f2843fe4e6746ca2ba6f97211d9a54733781c Mon Sep 17 00:00:00 2001 -From: Daniel Safta -Date: Wed, 12 Jan 2022 15:23:37 +0200 -Subject: [PATCH 2/7] kubelet cpumanager keep normal containers off reserved - CPUs - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via '--system-reserved=cpu' -or '--kube-reserved=cpu' will be ignored by kubernetes itself. A small -tweak to the default CPU affinity ensures that "normal" Kubernetes -pods won't run on the reserved CPUs. - -Signed-off-by: Daniel Safta -Co-authored-by: Jim Gauld ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 6 ++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 11 ++++-- - pkg/kubelet/cm/cpumanager/policy_static.go | 30 ++++++++++++--- - .../cm/cpumanager/policy_static_test.go | 38 ++++++++++++++----- - 4 files changed, 65 insertions(+), 20 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 29194271..fba0bfd1 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -187,7 +187,11 @@ func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconc - // exclusively allocated. - reservedCPUsFloat := float64(reservedCPUs.MilliValue()) / 1000 - numReservedCPUs := int(math.Ceil(reservedCPUsFloat)) -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions) -+ // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. -+ // This variable is primarily to make testing easier. -+ excludeReserved := true -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions, excludeReserved) -+ - if err != nil { - return nil, fmt.Errorf("new static policy error: %w", err) - } -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index db0a3560..bbfc70b8 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -215,6 +215,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -230,7 +231,8 @@ func TestCPUManagerAdd(t *testing.T) { - 0, - cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), -- nil) -+ nil, -+ testExcl) - testCases := []struct { - description string - updateErr error -@@ -479,8 +481,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - }, - } - -+ testExcl := false - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -991,6 +994,7 @@ func TestReconcileState(t *testing.T) { - // above test cases are without kubelet --reserved-cpus cmd option - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1006,7 +1010,8 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - 1, - cpuset.NewCPUSet(0), - topologymanager.NewFakeManager(), -- nil) -+ nil, -+ testExcl) - testCases := []struct { - description string - updateErr error -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index f5d275d8..3859ae72 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -96,6 +96,8 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // If true, default CPUSet should exclude reserved CPUs -+ excludeReserved bool - // topology manager reference to get container Topology affinity - affinity topologymanager.Store - // set of CPUs to reuse across allocations in a pod -@@ -110,7 +112,7 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, excludeReserved bool) (Policy, error) { - opts, err := NewStaticPolicyOptions(cpuPolicyOptions) - if err != nil { - return nil, err -@@ -141,6 +143,7 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - return &staticPolicy{ - topology: topology, - reserved: reserved, -+ excludeReserved: excludeReserved, - affinity: affinity, - cpusToReuse: make(map[string]cpuset.CPUSet), - options: opts, -@@ -170,7 +173,15 @@ func (p *staticPolicy) validateState(s state.State) error { - } - // state is empty initialize - allCPUs := p.topology.CPUDetails.CPUs() -- s.SetDefaultCPUSet(allCPUs) -+ if p.excludeReserved { -+ // Exclude reserved CPUs from the default CPUSet to keep containers off them -+ // unless explicitly affined. -+ s.SetDefaultCPUSet(allCPUs.Difference(p.reserved)) -+ } else { -+ s.SetDefaultCPUSet(allCPUs) -+ } -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -+ allCPUs, p.reserved, s.GetDefaultCPUSet()) - return nil - } - -@@ -178,11 +189,12 @@ func (p *staticPolicy) validateState(s state.State) error { - // 1. Check if the reserved cpuset is not part of default cpuset because: - // - kube/system reserved have changed (increased) - may lead to some containers not being able to start - // - user tampered with file -- if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -- return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -- p.reserved.String(), tmpDefaultCPUset.String()) -+ if !p.excludeReserved { -+ if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -+ return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -+ p.reserved.String(), tmpDefaultCPUset.String()) -+ } - } -- - // 2. Check if state for static policy is consistent - for pod := range tmpAssignments { - for container, cset := range tmpAssignments[pod] { -@@ -209,6 +221,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } - } - totalKnownCPUs = totalKnownCPUs.UnionAll(tmpCPUSets) -+ if p.excludeReserved { -+ totalKnownCPUs = totalKnownCPUs.Union(p.reserved) -+ } - if !totalKnownCPUs.Equals(p.topology.CPUDetails.CPUs()) { - return fmt.Errorf("current set of available CPUs \"%s\" doesn't match with CPUs in state \"%s\"", - p.topology.CPUDetails.CPUs().String(), totalKnownCPUs.String()) -@@ -294,6 +309,9 @@ func (p *staticPolicy) RemoveContainer(s state.State, podUID string, containerNa - klog.InfoS("Static policy: RemoveContainer", "podUID", podUID, "containerName", containerName) - if toRelease, ok := s.GetCPUSet(podUID, containerName); ok { - s.Delete(podUID, containerName) -+ if p.excludeReserved { -+ toRelease = toRelease.Difference(p.reserved) -+ } - // Mutate the shared pool, adding released cpus. - s.SetDefaultCPUSet(s.GetDefaultCPUSet().Union(toRelease)) - } -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index d2b641fe..80bd04a1 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -33,6 +33,7 @@ type staticPolicyTest struct { - description string - topo *topology.CPUTopology - numReservedCPUs int -+ excludeReserved bool - podUID string - options map[string]string - containerName string -@@ -64,7 +65,8 @@ func (spt staticPolicyTest) PseudoClone() staticPolicyTest { - } - - func TestStaticPolicyName(t *testing.T) { -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ testExcl := false -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -94,6 +96,15 @@ func TestStaticPolicyStart(t *testing.T) { - stDefaultCPUSet: cpuset.NewCPUSet(), - expCSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), - }, -+ { -+ description: "empty cpuset exclude reserved", -+ topo: topoDualSocketHT, -+ numReservedCPUs: 2, -+ excludeReserved: true, -+ stAssignments: state.ContainerCPUAssignments{}, -+ stDefaultCPUSet: cpuset.NewCPUSet(), -+ expCSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 7, 8, 9, 10, 11), -+ }, - { - description: "reserved cores 0 & 6 are not present in available cpuset", - topo: topoDualSocketHT, -@@ -140,7 +151,8 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ - policy := p.(*staticPolicy) - st := &mockState{ - assignments: testCase.stAssignments, -@@ -211,7 +223,7 @@ func TestStaticPolicyAdd(t *testing.T) { - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), - }, - }, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 4, 5), -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), - pod: makePod("fakePod", "fakeContainer3", "2000m", "2000m"), - expErr: nil, - expCPUAlloc: true, -@@ -517,7 +529,8 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options) -+ testExcl := false -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -559,6 +572,7 @@ func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { - } - - func TestStaticPolicyRemove(t *testing.T) { -+ excludeReserved := false - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -617,7 +631,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -639,6 +653,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - func TestTopologyAwareAllocateCPUs(t *testing.T) { -+ excludeReserved := false - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -707,7 +722,7 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -779,9 +794,11 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -+ testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil) -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -+ - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -821,7 +838,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), - expCPUAlloc: false, -@@ -833,7 +850,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), - expErr: nil, - expCPUAlloc: true, -@@ -857,8 +874,9 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - }, - } - -+ testExcl := true - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch deleted file mode 100644 index a58e47d5b..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch +++ /dev/null @@ -1,50 +0,0 @@ -From ba9ab333c8b7dca5252e604837914293dc232732 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Fri, 11 Feb 2022 11:06:35 -0500 -Subject: [PATCH] kubelet: sort isolcpus allocation when SMT enabled - -The existing device manager code returns CPUs as devices in unsorted -order. This numerically sorts isolcpus allocations when SMT/HT is -enabled on the host. This logs SMT pairs, singletons, and algorithm -order details to make the algorithm understandable. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/devicemanager/manager.go | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 609da8ed86b..a4b247714f7 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -686,7 +686,16 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - return cpu_lst[0] - } - } -+ //Make post-analysis of selection algorithm obvious by numerical sorting -+ //the available isolated cpu_id. -+ cpu_ids := make([]int, 0, int(devices.Len())) - for cpu_id := range devices { -+ cpu_id_, _ := strconv.Atoi(cpu_id) -+ cpu_ids = append(cpu_ids, cpu_id_) -+ } -+ sort.Ints(cpu_ids) -+ for _, _cpu_id := range cpu_ids { -+ cpu_id := strconv.Itoa(_cpu_id) - // If we've already found cpu_id as a sibling, skip it. - if _, ok := _iterated_cpu[cpu_id]; ok { - continue -@@ -728,7 +737,9 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - } - } - } -- //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ //This algorithm will get some attention. Show minimal details. -+ klog.Infof("order_devices_by_sibling: needed=%d, smtpairs=%v, singletons=%v, order=%v", -+ needed, sibling_lst, single_lst, dev_lst) - return dev_lst, nil - } - func smt_enabled() bool { --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubernetes-make-isolcpus-allocation-SMT-aware.patch b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubernetes-make-isolcpus-allocation-SMT-aware.patch deleted file mode 100644 index dbc28d503..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/kubernetes-make-isolcpus-allocation-SMT-aware.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 95b7b6e1ddb25511c67a3d4018f62df1e76ee7bc Mon Sep 17 00:00:00 2001 -From: Tao Wang -Date: Tue, 25 Jan 2022 19:25:45 -0500 -Subject: [PATCH] kubernetes: make isolcpus allocation SMT-aware - -Enhance isolcpus support in Kubernetes to allocate isolated SMT -siblings to the same container when SMT/HT is enabled on the host. - -As it stands, the device manager code in Kubernetes is not SMT-aware -(since normally it doesn't deal with CPUs). However, StarlingX -exposes isolated CPUs as devices and if possible we want to allocate -all SMT siblings from a CPU core to the same container in order to -minimize cross- container interference due to resource contention -within the CPU core. - -The solution is basically to take the list of isolated CPUs and -re-order it so that the SMT siblings are next to each other. That -way the existing resource selection code will allocate the siblings -together. As an optimization, if it is known that an odd number -of isolated CPUs are desired, a singleton SMT sibling will be -inserted into the list to avoid breaking up sibling pairs. - -Signed-off-by: Tao Wang ---- - pkg/kubelet/cm/devicemanager/manager.go | 84 ++++++++++++++++++++++++- - 1 file changed, 83 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 60de14a9..609da8ed 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -19,11 +19,14 @@ package devicemanager - import ( - "context" - "fmt" -+ "io/ioutil" - "net" - "os" - "path/filepath" - "runtime" - "sort" -+ "strconv" -+ "strings" - "sync" - "time" - -@@ -41,6 +44,7 @@ import ( - "k8s.io/kubernetes/pkg/features" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors" -+ "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/checkpoint" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" -@@ -667,6 +671,75 @@ func (m *ManagerImpl) UpdateAllocatedDevices() { - m.allocatedDevices = m.podDevices.devices() - } - -+//Given a list of isolated CPUs in 'devices', and the number of desired CPUs in 'needed', -+//return an ordered list of isolated CPUs such that the first 'needed' CPUs in the list -+//contain as many hyperthread sibling pairs as possible. -+func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) { -+ var dev_lst []string -+ var single_lst []string -+ sibling_lst := make([]string, 0, int(devices.Len())) -+ _iterated_cpu := make(map[string]string) -+ get_sibling := func(cpu string, cpu_lst []string) string { -+ if cpu_lst[0] == cpu { -+ return cpu_lst[1] -+ } else { -+ return cpu_lst[0] -+ } -+ } -+ for cpu_id := range devices { -+ // If we've already found cpu_id as a sibling, skip it. -+ if _, ok := _iterated_cpu[cpu_id]; ok { -+ continue -+ } -+ devPath := fmt.Sprintf("/sys/devices/system/cpu/cpu%s/topology/thread_siblings_list", cpu_id) -+ dat, err := ioutil.ReadFile(devPath) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Can't read cpu[%s] thread_siblings_list", cpu_id) -+ } -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cpu_pair_set, err := cpuset.Parse(cpustring) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Unable to parse thread_siblings_list[%s] string to cpuset", cpustring) -+ } -+ var cpu_pair_lst []string -+ for _, v := range cpu_pair_set.ToSlice() { -+ cpu_pair_lst = append(cpu_pair_lst, strconv.Itoa(v)) -+ } -+ sibling_cpu_id := get_sibling(cpu_id, cpu_pair_lst) -+ if _, ok := devices[sibling_cpu_id]; ok { -+ sibling_lst = append(sibling_lst, cpu_id, sibling_cpu_id) -+ _iterated_cpu[sibling_cpu_id] = "" -+ } else { -+ single_lst = append(single_lst, cpu_id) -+ } -+ _iterated_cpu[cpu_id] = "" -+ } -+ if needed%2 == 0 { -+ dev_lst = append(sibling_lst, single_lst...) -+ } else { -+ if len(single_lst) > 1 { -+ _tmp_list := append(sibling_lst, single_lst[1:]...) -+ dev_lst = append(single_lst[0:1], _tmp_list...) -+ } else { -+ if len(single_lst) == 0 { -+ dev_lst = sibling_lst -+ } else { -+ dev_lst = append(single_lst, sibling_lst...) -+ } -+ } -+ } -+ //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ return dev_lst, nil -+} -+func smt_enabled() bool { -+ dat, _ := ioutil.ReadFile("/sys/devices/system/cpu/smt/active") -+ state := strings.TrimSuffix(string(dat), "\n") -+ if state == "0" { -+ return false -+ } -+ return true -+} -+ - // Returns list of device Ids we need to allocate with Allocate rpc call. - // Returns empty list in case we don't need to issue the Allocate rpc call. - func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, required int, reusableDevices sets.String) (sets.String, error) { -@@ -702,7 +775,16 @@ func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, requi - // Create a closure to help with device allocation - // Returns 'true' once no more devices need to be allocated. - allocateRemainingFrom := func(devices sets.String) bool { -- for device := range devices.Difference(allocated) { -+ availableDevices := devices.Difference(allocated).List() -+ // If we're dealing with isolcpus and SMT is enabled, reorder to group SMT siblings together. -+ if resource == "windriver.com/isolcpus" && len(devices) > 0 && smt_enabled() { -+ var err error -+ availableDevices, err = order_devices_by_sibling(devices.Difference(allocated), needed) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ } -+ for _, device := range availableDevices { - m.allocatedDevices[resource].Insert(device) - allocated.Insert(device) - needed-- --- -2.22.5 - diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/series b/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/series deleted file mode 100644 index 7ef750b22..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/patches/series +++ /dev/null @@ -1,9 +0,0 @@ -kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch -kubelet-cpumanager-keep-normal-containers-off-reserv.patch -kubelet-cpumanager-infrastructure-pods-use-system-re.patch -kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch -kubeadm-create-platform-pods-with-zero-CPU-resources.patch -Revert-use-subpath-for-coredns-only-for-default-repo.patch -enable-support-for-kubernetes-to-ignore-isolcpus.patch -kubernetes-make-isolcpus-allocation-SMT-aware.patch -kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/rules b/kubernetes/kubernetes-1.22.5/debian/deb_folder/rules deleted file mode 100755 index d5bec0ac9..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/rules +++ /dev/null @@ -1,140 +0,0 @@ -#!/usr/bin/make -f - -kube_version := 1.22.5 -kube_git_version := v${kube_version} -name := kubernetes-${kube_version} -go_version := 1.16.6 -_stage1 := /usr/local/kubernetes/${kube_version}/stage1 -_stage2 := /usr/local/kubernetes/${kube_version}/stage2 -_bindir := /usr/bin -_local_sbindir := /usr/local/sbin -output_path := src/k8s.io/kubernetes/_output/bin -DEBIAN_DESTDIR := $(CURDIR)/debian/tmp -export DH_VERBOSE = 1 -export PATH := /usr/lib/go-1.16/bin:$(PATH) -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=${kube_version} -export KUBE_GIT_VERSION=${kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace -export PBR_VERSION=${kube_git_version} - - -%: - dh $@ --with=bash-completion --builddirectory=src --without=build-stamp - -override_dh_auto_build: - - mkdir -pv src/k8s.io/kubernetes/ - mv -v $$(ls | grep -v "^src$$" | grep -v "^debian$$") src/k8s.io/kubernetes/. - - go version - which go - - cd src/k8s.io/kubernetes/ && make WHAT="cmd/kube-proxy cmd/kube-apiserver cmd/kube-controller-manager cmd/kubelet cmd/kubeadm cmd/kube-scheduler cmd/kubectl" - - # TODO convert md to man - #./hack/generate-docs.sh || true - #pushd docs ;\ - #pushd admin ;\ - #cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. ;\ - #popd ;\ - #bash genmanpages.sh ;\ - #popd ;\ - #popd ;\ - - -override_dh_install: - - install -m 755 -d ${DEBIAN_DESTDIR}${_bindir} - install -m 755 -d ${DEBIAN_DESTDIR}${_stage1}${_bindir} - install -m 755 -d ${DEBIAN_DESTDIR}${_stage2}${_bindir} - install -m 700 -d ${DEBIAN_DESTDIR}${_stage2}${_local_sbindir} - - echo "+++ INSTALLING kube-apiserver" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-apiserver - - echo "+++ INSTALLING kubeadm" - install -p -m 755 -t ${DEBIAN_DESTDIR}${_stage1}${_bindir} ${output_path}/kubeadm - install -d -m 0755 ${DEBIAN_DESTDIR}${_stage2}/etc/systemd/system/kubelet.service.d - install -p -m 0644 -t ${DEBIAN_DESTDIR}${_stage2}/etc/systemd/system/kubelet.service.d debian/kubeadm.conf - - echo "+++ INSTALLING kubelet-cgroup-setup.sh" - install -p -m 0700 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} debian/kubelet-cgroup-setup.sh - - echo "+++ INSTALLING kube-apiserver"\ - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-apiserver - - echo "+++ INSTALLING kube-controller-manager" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-controller-manager - - echo "+++ INSTALLING kube-scheduler" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-scheduler - - echo "+++ INSTALLING kube-proxy" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-proxy - - echo "+++ INSTALLING kubelet" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} ${output_path}/kubelet - - echo "+++ INSTALLING kubectl" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} ${output_path}/kubectl - - # install the bash completion - install -d -m 0755 ${DEBIAN_DESTDIR}${_stage2}/usr/share/bash-completion/completions/ - ${DEBIAN_DESTDIR}${_stage2}${_bindir}/kubectl completion bash > ${DEBIAN_DESTDIR}${_stage2}/usr/share/bash-completion/completions/kubectl - - # install specific cluster addons for optional use - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons - # Addon: volumesnapshots - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/crd - install -m 0644 -t ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/crd src/k8s.io/kubernetes/cluster/addons/volumesnapshots/crd/* - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/volume-snapshot-controller - install -m 0644 -t ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/volume-snapshot-controller src/k8s.io/kubernetes/cluster/addons/volumesnapshots/volume-snapshot-controller/* - - #TODO install manpages - #install -d ${DEBIAN_DESTDIR}/usr/share/man/man1 - #install -p -m 644 docs/man/man1/* ${DEBIAN_DESTDIR}/usr/share/man/man1 - #rm -Rf ${DEBIAN_DESTDIR}/usr/share/man/man1/cloud-controller-manager.* - # from k8s tarball copied docs/man/man1/*.1 - #popd - - #mv src/k8s.io/kubernetes/*.md . - #mv src/k8s.io/kubernetes/LICENSE . - - - # place files for unit-test rpm - install -d -m 0755 ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/ - # basically, everything from the root directory is needed - # unit-tests needs source code - # integration tests needs docs and other files - # test-cmd.sh atm needs cluster, examples and other - cp -a src ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/ - rm -rf ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/src/k8s.io/kubernetes/_output - - #TODO with install manpages - #cp -a *.md ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/src/k8s.io/kubernetes/ - - dh_install - -override_dh_auto_test: - - echo "******Testing the commands*****" - src/k8s.io/kubernetes/hack/test-cmd.sh - - echo "******Benchmarking kube********" - src/k8s.io/kubernetes/hack/benchmark-go.sh - - echo "******Testing the go code******" - src/k8s.io/kubernetes/hack/test-go.sh - - echo "******Testing integration******" - src/k8s.io/kubernetes/hack/test-integration.sh --use_go_build - -override_dh_fixperms: - dh_fixperms -Xkube-apiserver -Xkubeadm -Xkubeadm.conf \ - -Xkubelet-cgroup-setup.sh -Xkube-apiserver \ - -Xkube-controller-manager -Xkube-scheduler \ - -Xkube-proxy -Xkubelet -Xkubectl - -override_dh_usrlocal: diff --git a/kubernetes/kubernetes-1.22.5/debian/deb_folder/source/format b/kubernetes/kubernetes-1.22.5/debian/deb_folder/source/format deleted file mode 100644 index 163aaf8d8..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/deb_folder/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) diff --git a/kubernetes/kubernetes-1.22.5/debian/meta_data.yaml b/kubernetes/kubernetes-1.22.5/debian/meta_data.yaml deleted file mode 100644 index b16e8e8b3..000000000 --- a/kubernetes/kubernetes-1.22.5/debian/meta_data.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -debver: 1.22.5 -dl_path: - name: kubernetes-1.22.5.tar.gz - url: https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.22.5.tar.gz - md5sum: 98a8b8b66557a7c4cdf79533c2cc77fc - sha256sum: 9ea0605901282e280b500f22a10f5428ef9c874ad55ad6c2aa1eb7bd71686606 -revision: - dist: $STX_DIST - GITREVCOUNT: - BASE_SRCREV: a2e4e02ae4f1b7c3d51e3b2217f2274c012c0515 - SRC_DIR: ${MY_REPO}/stx/integ/kubernetes/kubernetes-1.22.5 diff --git a/kubernetes/kubernetes-1.23.1/centos/Readme.rst b/kubernetes/kubernetes-1.23.1/centos/Readme.rst deleted file mode 100644 index abb8d7a4b..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/Readme.rst +++ /dev/null @@ -1,4 +0,0 @@ -The spec file used here was from the kubernetes 1.10.0 src rpm. -The orig file is included to help show modifications made to that -spec file, to help understand which changes were needed and to -assist with future upversioning. diff --git a/kubernetes/kubernetes-1.23.1/centos/build_srpm.data b/kubernetes/kubernetes-1.23.1/centos/build_srpm.data deleted file mode 100644 index 7166a263b..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/build_srpm.data +++ /dev/null @@ -1,5 +0,0 @@ -VERSION=1.23.1 -TAR_NAME=kubernetes -TAR="$TAR_NAME-v$VERSION.tar.gz" -COPY_LIST="${CGCS_BASE}/downloads/$TAR $FILES_BASE/*" -TIS_PATCH_VER=PKG_GITREVCOUNT diff --git a/kubernetes/kubernetes-1.23.1/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch b/kubernetes/kubernetes-1.23.1/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch deleted file mode 100644 index f56c20ee0..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/Revert-use-subpath-for-coredns-only-for-default-repo.patch +++ /dev/null @@ -1,113 +0,0 @@ -From f9dd597f4e8c8c66f08d661efcbd29479e4e069d Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Tue, 25 Jan 2022 13:56:30 -0500 -Subject: [PATCH] Revert "use subpath for coredns only for default repository" - -This reverts commit 38a41e1557649a7cc763bf737779db9aa03ec75e. - -Co-authored-by: Jim Gauld -Signed-off-by: Gleb Aronsky - -diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go -index c2b8f6e64be..b00ccea315e 100644 ---- a/cmd/kubeadm/app/constants/constants.go -+++ b/cmd/kubeadm/app/constants/constants.go -@@ -337,7 +337,7 @@ const ( - CoreDNSDeploymentName = "coredns" - - // CoreDNSImageName specifies the name of the image for CoreDNS add-on -- CoreDNSImageName = "coredns" -+ CoreDNSImageName = "coredns/coredns" - - // CoreDNSVersion is the version of CoreDNS to be deployed if it is used - CoreDNSVersion = "v1.8.6" -diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go -index ee55eb6c995..bdb61caa373 100644 ---- a/cmd/kubeadm/app/images/images.go -+++ b/cmd/kubeadm/app/images/images.go -@@ -22,7 +22,6 @@ import ( - "k8s.io/klog/v2" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" - ) -@@ -48,10 +47,6 @@ func GetDNSImage(cfg *kubeadmapi.ClusterConfiguration) string { - if cfg.DNS.ImageRepository != "" { - dnsImageRepository = cfg.DNS.ImageRepository - } -- // Handle the renaming of the official image from "k8s.gcr.io/coredns" to "k8s.gcr.io/coredns/coredns -- if dnsImageRepository == kubeadmapiv1beta2.DefaultImageRepository { -- dnsImageRepository = fmt.Sprintf("%s/coredns", dnsImageRepository) -- } - // DNS uses an imageTag that corresponds to the DNS version matching the Kubernetes version - dnsImageTag := constants.CoreDNSVersion - -diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go -index 2b8affce236..91cd4294351 100644 ---- a/cmd/kubeadm/app/images/images_test.go -+++ b/cmd/kubeadm/app/images/images_test.go -@@ -22,7 +22,6 @@ import ( - "testing" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - ) - -@@ -227,51 +226,4 @@ func TestGetAllImages(t *testing.T) { - } - } - --func TestGetDNSImage(t *testing.T) { -- var tests = []struct { -- expected string -- cfg *kubeadmapi.ClusterConfiguration -- }{ -- { -- expected: "foo.io/coredns:v1.8.6", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: kubeadmapiv1beta2.DefaultImageRepository + "/coredns/coredns:v1.8.6", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: kubeadmapiv1beta2.DefaultImageRepository, -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: "foo.io/coredns/coredns:v1.8.6", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- ImageMeta: kubeadmapi.ImageMeta{ -- ImageRepository: "foo.io/coredns", -- }, -- }, -- }, -- }, -- } -- -- for _, test := range tests { -- actual := GetDNSImage(test.cfg) -- if actual != test.expected { -- t.Errorf( -- "failed to GetDNSImage:\n\texpected: %s\n\t actual: %s", -- test.expected, -- actual, -- ) -- } -- } - } --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch b/kubernetes/kubernetes-1.23.1/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch deleted file mode 100644 index 63cdfbdbb..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/enable-support-for-kubernetes-to-ignore-isolcpus.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 087dcfa1a84ec38541fa9870937d76b80a707e2c Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 23 Oct 2020 17:46:10 -0600 -Subject: [PATCH 6/7] enable support for kubernetes to ignore isolcpus - -The normal mechanisms for allocating isolated CPUs do not allow -a mix of isolated and exclusive CPUs in the same container. In -order to allow this in *very* limited cases where the pod spec -is known in advance we will add the ability to disable the normal -isolcpus behaviour. - -If the file "/etc/kubernetes/ignore_isolcpus" exists, then kubelet -will basically forget everything it knows about isolcpus and just -treat them like regular CPUs. - -The admin user can then rely on the fact that CPU allocation is -deterministic to ensure that the isolcpus they configure end up being -allocated to the correct pods. - -Signed-off-by: Daniel Safta ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 8 ++++++++ - pkg/kubelet/cm/cpumanager/policy_static.go | 7 +++++++ - 2 files changed, 15 insertions(+) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 2f5b06dc..d9ec63bb 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -20,6 +20,7 @@ import ( - "fmt" - "io/ioutil" - "math" -+ "os" - "strings" - "sync" - "time" -@@ -55,6 +56,13 @@ const cpuManagerStateFileName = "cpu_manager_state" - - // get the system-level isolated CPUs - func getIsolcpus() cpuset.CPUSet { -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ klog.Infof("[cpumanager] turning off isolcpus awareness") -+ return cpuset.NewCPUSet() -+ } -+ - dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") - if err != nil { - klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 72a99496..ee389a85 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "os" - "strconv" - - v1 "k8s.io/api/core/v1" -@@ -658,6 +659,12 @@ func isKubeInfra(pod *v1.Pod) bool { - - // get the isolated CPUs (if any) from the devices associated with a specific container - func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ return cpuset.NewCPUSet() -+ } -+ - // NOTE: This is required for TestStaticPolicyAdd() since makePod() does - // not create UID. We also need a way to properly stub devicemanager. - if len(string(pod.UID)) == 0 { --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch b/kubernetes/kubernetes-1.23.1/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch deleted file mode 100644 index 14e530c73..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubeadm-create-platform-pods-with-zero-CPU-resources.patch +++ /dev/null @@ -1,108 +0,0 @@ -From de653bd0823b248d623a39c17a3872e85ce952b0 Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 3 Sep 2021 18:05:15 -0400 -Subject: [PATCH 5/7] kubeadm: create platform pods with zero CPU resources - -We want to specify zero CPU resources when creating the manifests -for the static platform pods, as a workaround for the lack of -separate resource tracking for platform resources. - -We also specify zero CPU resources for the coredns deployment. -manifests.go appears to be the main file for this, not sure if the -others are used but I changed them just in case. - -Signed-off-by: Daniel Safta ---- - cluster/addons/dns/coredns/coredns.yaml.base | 2 +- - cluster/addons/dns/coredns/coredns.yaml.in | 2 +- - cluster/addons/dns/coredns/coredns.yaml.sed | 2 +- - cmd/kubeadm/app/phases/addons/dns/manifests.go | 2 +- - cmd/kubeadm/app/phases/controlplane/manifests.go | 6 +++--- - 5 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/cluster/addons/dns/coredns/coredns.yaml.base b/cluster/addons/dns/coredns/coredns.yaml.base -index 4ee054f8ba5..d2b58f4af0e 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.base -+++ b/cluster/addons/dns/coredns/coredns.yaml.base -@@ -138,7 +138,7 @@ spec: - limits: - memory: __DNS__MEMORY__LIMIT__ - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.in b/cluster/addons/dns/coredns/coredns.yaml.in -index 1f791e447c9..ff03a801646 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.in -+++ b/cluster/addons/dns/coredns/coredns.yaml.in -@@ -138,7 +138,7 @@ spec: - limits: - memory: 'dns_memory_limit' - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.sed b/cluster/addons/dns/coredns/coredns.yaml.sed -index 4d64278aaa4..38fc9196b28 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.sed -+++ b/cluster/addons/dns/coredns/coredns.yaml.sed -@@ -138,7 +138,7 @@ spec: - limits: - memory: $DNS_MEMORY_LIMIT - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/addons/dns/manifests.go b/cmd/kubeadm/app/phases/addons/dns/manifests.go -index 3ac6856bfc6..0763b4c63db 100644 ---- a/cmd/kubeadm/app/phases/addons/dns/manifests.go -+++ b/cmd/kubeadm/app/phases/addons/dns/manifests.go -@@ -95,7 +95,7 @@ spec: - limits: - memory: 170Mi - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/controlplane/manifests.go b/cmd/kubeadm/app/phases/controlplane/manifests.go -index 8181bea63a4..4c4b4448dd4 100644 ---- a/cmd/kubeadm/app/phases/controlplane/manifests.go -+++ b/cmd/kubeadm/app/phases/controlplane/manifests.go -@@ -60,7 +60,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS), - ReadinessProbe: staticpodutil.ReadinessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/readyz", int(endpoint.BindPort), v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("250m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeAPIServer), - map[string]string{kubeadmconstants.KubeAPIServerAdvertiseAddressEndpointAnnotationKey: endpoint.String()}), -@@ -72,7 +72,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeControllerManager)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("200m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeControllerManager), nil), - kubeadmconstants.KubeScheduler: staticpodutil.ComponentPod(v1.Container{ -@@ -83,7 +83,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeScheduler)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("100m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeScheduler), nil), - } --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubeadm.conf b/kubernetes/kubernetes-1.23.1/centos/files/kubeadm.conf deleted file mode 100644 index da0611444..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubeadm.conf +++ /dev/null @@ -1,18 +0,0 @@ -# Note: This dropin only works with kubeadm and kubelet v1.11+ -[Service] -Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" -Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" -# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically -EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env -# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use -# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. -EnvironmentFile=-/etc/sysconfig/kubelet -ExecStart= -ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS -ExecStartPre=-/usr/local/sbin/sanitize_kubelet_reserved_cpus.sh /etc/sysconfig/kubelet -ExecStartPre=-/usr/bin/kubelet-cgroup-setup.sh -ExecStartPost=/bin/bash -c 'echo $MAINPID > /var/run/kubelet.pid;' -ExecStopPost=/bin/rm -f /var/run/kubelet.pid -Restart=always -StartLimitInterval=0 -RestartSec=10 diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cgroup-setup.sh b/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cgroup-setup.sh deleted file mode 100644 index 385314bfe..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cgroup-setup.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 Wind River Systems, Inc. -# -# SPDX-License-Identifier: Apache-2.0 -# -# This script does minimal cgroup setup for kubelet. This creates k8s-infra -# cgroup for a minimal set of resource controllers, and configures cpuset -# attributes to span all online cpus and nodes. This will do nothing if -# the k8s-infra cgroup already exists (i.e., assume already configured). -# NOTE: The creation of directories under /sys/fs/cgroup is volatile, and -# does not persist reboots. The cpuset.mems and cpuset.cpus is later updated -# by puppet kubernetes.pp manifest. -# - -# Define minimal path -PATH=/bin:/usr/bin:/usr/local/bin - -# Log info message to /var/log/daemon.log -function LOG { - logger -p daemon.info "$0($$): $@" -} - -# Log error message to /var/log/daemon.log -function ERROR { - logger -s -p daemon.error "$0($$): ERROR: $@" -} - -# Create minimal cgroup directories and configure cpuset attributes if required -function create_cgroup { - local cg_name=$1 - local cg_nodeset=$2 - local cg_cpuset=$3 - - local CGROUP=/sys/fs/cgroup - local CONTROLLERS_AUTO_DELETED=("pids" "hugetlb") - local CONTROLLERS_PRESERVED=("cpuset" "memory" "cpu,cpuacct" "systemd") - local cnt='' - local CGDIR='' - local RC=0 - - # Ensure that these cgroups are created every time as they are auto deleted - for cnt in ${CONTROLLERS_AUTO_DELETED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - continue - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # These cgroups are preserved so if any of these are encountered additional - # cgroup setup is not required - for cnt in ${CONTROLLERS_PRESERVED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - exit ${RC} - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # Customize cpuset attributes - LOG "Configuring cgroup: ${cg_name}, nodeset: ${cg_nodeset}, cpuset: ${cg_cpuset}" - CGDIR=${CGROUP}/cpuset/${cg_name} - local CGMEMS=${CGDIR}/cpuset.mems - local CGCPUS=${CGDIR}/cpuset.cpus - local CGTASKS=${CGDIR}/tasks - - # Assign cgroup memory nodeset - LOG "Assign nodeset ${cg_nodeset} to ${CGMEMS}" - /bin/echo ${cg_nodeset} > ${CGMEMS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Unable to write to: ${CGMEMS}, rc=${RC}" - exit ${RC} - fi - - # Assign cgroup cpus - LOG "Assign cpuset ${cg_cpuset} to ${CGCPUS}" - /bin/echo ${cg_cpuset} > ${CGCPUS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Assigning: ${cg_cpuset} to ${CGCPUS}, rc=${RC}" - exit ${RC} - fi - - # Set file ownership - chown root:root ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting owner for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - # Set file mode permissions - chmod 644 ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting mode for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - return ${RC} -} - -if [ $UID -ne 0 ]; then - ERROR "Require sudo/root." - exit 1 -fi - -# Configure default kubepods cpuset to span all online cpus and nodes. -ONLINE_NODESET=$(/bin/cat /sys/devices/system/node/online) -ONLINE_CPUSET=$(/bin/cat /sys/devices/system/cpu/online) - -# Configure kubelet cgroup to match cgroupRoot. -create_cgroup 'k8s-infra' ${ONLINE_NODESET} ${ONLINE_CPUSET} - -exit $? - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch b/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch deleted file mode 100644 index fc115417d..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch +++ /dev/null @@ -1,287 +0,0 @@ -From cde296d121955a9ee4f148f775d73bb746a17310 Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Fri, 21 Jan 2022 17:03:57 -0500 -Subject: kubelet cpumanager disable CFS quota throttling for - Guaranteed pods - -This disables CFS CPU quota to avoid performance degradation due to -Linux kernel CFS quota implementation. Note that 4.18 kernel attempts -to solve the CFS throttling problem, but there are reports that it is -not completely effective. - -This disables CFS quota throttling for Guaranteed pods for both -parent and container cgroups by writing -1 to cgroup cpu.cfs_quota_us. -Disabling has a dramatic latency improvement for HTTP response times. - -This patch is refactored in 1.22.5 due to new internal_container_lifecycle -framework. We leverage the same mechanism to set Linux resources as: -cpu manager: specify the container CPU set during the creation - -Co-authored-by: Jim Gauld -Signed-off-by: Gleb Aronsky - ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 7 +++ - pkg/kubelet/cm/cpumanager/fake_cpu_manager.go | 12 +++-- - pkg/kubelet/cm/helpers_linux.go | 12 ++++- - pkg/kubelet/cm/helpers_linux_test.go | 45 ++++++++++--------- - .../cm/internal_container_lifecycle_linux.go | 11 ++++- - 5 files changed, 61 insertions(+), 26 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index a876d413870..6ad289336ea 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -72,6 +72,9 @@ type Manager interface { - // State returns a read-only interface to the internal CPU manager state. - State() state.Reader - -+ // GetCPUPolicy returns the assigned CPU manager policy -+ GetCPUPolicy() string -+ - // GetTopologyHints implements the topologymanager.HintProvider Interface - // and is consulted to achieve NUMA aware resource alignment among this - // and other resource controllers. -@@ -314,6 +317,10 @@ func (m *manager) State() state.Reader { - return m.state - } - -+func (m *manager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *manager) GetTopologyHints(pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - // The pod is during the admission phase. We need to save the pod to avoid it - // being cleaned before the admission ended -diff --git a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -index 93369705135..8082bbeebcb 100644 ---- a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -@@ -17,7 +17,7 @@ limitations under the License. - package cpumanager - - import ( -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/kubelet/cm/containermap" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" -@@ -28,7 +28,8 @@ import ( - ) - - type fakeManager struct { -- state state.State -+ policy Policy -+ state state.State - } - - func (m *fakeManager) Start(activePods ActivePodsFunc, sourcesReady config.SourcesReady, podStatusProvider status.PodStatusProvider, containerRuntime runtimeService, initialContainers containermap.ContainerMap) error { -@@ -70,6 +71,10 @@ func (m *fakeManager) State() state.Reader { - return m.state - } - -+func (m *fakeManager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *fakeManager) GetExclusiveCPUs(podUID, containerName string) cpuset.CPUSet { - klog.InfoS("GetExclusiveCPUs", "podUID", podUID, "containerName", containerName) - return cpuset.CPUSet{} -@@ -88,6 +93,7 @@ func (m *fakeManager) GetCPUAffinity(podUID, containerName string) cpuset.CPUSet - // NewFakeManager creates empty/fake cpu manager - func NewFakeManager() Manager { - return &fakeManager{ -- state: state.NewMemoryState(), -+ policy: &nonePolicy{}, -+ state: state.NewMemoryState(), - } - } -diff --git a/pkg/kubelet/cm/helpers_linux.go b/pkg/kubelet/cm/helpers_linux.go -index 83c80501f5d..6e8f232e4d6 100644 ---- a/pkg/kubelet/cm/helpers_linux.go -+++ b/pkg/kubelet/cm/helpers_linux.go -@@ -25,7 +25,7 @@ import ( - - libcontainercgroups "github.com/opencontainers/runc/libcontainer/cgroups" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/kubernetes/pkg/api/v1/resource" -@@ -182,6 +182,16 @@ func ResourceConfigForPod(pod *v1.Pod, enforceCPULimits bool, cpuPeriod uint64, - // build the result - result := &ResourceConfig{} - if qosClass == v1.PodQOSGuaranteed { -+ // Disable CFS CPU quota to avoid performance degradation due to -+ // Linux kernel CFS throttle implementation. -+ // NOTE: 4.18 kernel attempts to solve CFS throttling problem, -+ // but there are reports that it is not completely effective. -+ // This will configure cgroup CFS parameters at pod level: -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_period_us -+ cpuQuota = int64(-1) -+ cpuPeriod = uint64(100000) -+ - result.CpuShares = &cpuShares - result.CpuQuota = &cpuQuota - result.CpuPeriod = &cpuPeriod -diff --git a/pkg/kubelet/cm/helpers_linux_test.go b/pkg/kubelet/cm/helpers_linux_test.go -index 101b21e682a..91c5782e3b4 100644 ---- a/pkg/kubelet/cm/helpers_linux_test.go -+++ b/pkg/kubelet/cm/helpers_linux_test.go -@@ -25,7 +25,7 @@ import ( - "testing" - "time" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - utilfeature "k8s.io/apiserver/pkg/util/feature" - featuregatetesting "k8s.io/component-base/featuregate/testing" -@@ -64,8 +64,9 @@ func TestResourceConfigForPod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -204,8 +205,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -218,8 +219,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guarenteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -232,8 +233,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -246,8 +247,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "burstable-partial-limits-with-init-containers": { - pod: &v1.Pod{ -@@ -309,8 +310,10 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) -+ - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -449,8 +452,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -463,8 +466,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -477,8 +480,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -491,8 +494,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -diff --git a/pkg/kubelet/cm/internal_container_lifecycle_linux.go b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -index cb7c0cfa543..956696a51e8 100644 ---- a/pkg/kubelet/cm/internal_container_lifecycle_linux.go -+++ b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -@@ -23,8 +23,9 @@ import ( - "strconv" - "strings" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" -+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos" - ) - - func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, container *v1.Container, containerConfig *runtimeapi.ContainerConfig) error { -@@ -35,6 +36,14 @@ func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, contain - } - } - -+ // Disable cgroup CFS throttle at the container level. -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_period_us -+ if i.cpuManager.GetCPUPolicy() == "static" && v1qos.GetPodQOS(pod) == v1.PodQOSGuaranteed { -+ containerConfig.Linux.Resources.CpuPeriod = int64(100000) -+ containerConfig.Linux.Resources.CpuQuota = int64(-1) -+ } -+ - if i.memoryManager != nil { - numaNodes := i.memoryManager.GetMemoryNUMANodes(pod, container) - if numaNodes.Len() > 0 { --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch b/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch deleted file mode 100644 index d7b9f05de..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch +++ /dev/null @@ -1,149 +0,0 @@ -From fd82223092ebbe1c4f598014bbd51391f115115d Mon Sep 17 00:00:00 2001 -From: Thiago Miranda -Date: Mon, 21 Mar 2022 17:25:07 -0300 -Subject: [PATCH] kubelet cpumanager infra pods use system reserved CPUs - -This assigns system infrastructure pods to the "reserved" cpuset -to isolate them from the shared pool of CPUs. - -Infrastructure pods include any pods that belong to the kube-system, -armada, cert-manager, vault, platform-deployment-manager, portieris, -notification, flux-helm or metrics-server namespaces. - -The implementation is a bit simplistic, it is assumed that the -"reserved" cpuset is large enough to handle all infrastructure pods -CPU allocations. - -This also prevents infrastucture pods from using Guaranteed resources. - -Co-authored-by: Jim Gauld -Signed-off-by: Gleb Aronsky -Signed-off-by: Thiago Miranda ---- - pkg/kubelet/cm/cpumanager/policy_static.go | 47 +++++++++++++++++-- - .../cm/cpumanager/policy_static_test.go | 19 +++++++- - 2 files changed, 61 insertions(+), 5 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 9697f4d4bb0..f603daf4c88 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -53,6 +53,11 @@ func (e SMTAlignmentError) Type() string { - return ErrorSMTAlignment - } - -+// Define namespaces used by platform infrastructure pods -+var infraNamespaces = [...]string{ -+ "kube-system", "armada", "cert-manager", "platform-deployment-manager", "portieris", "vault", "notification", "flux-helm", "metrics-server", -+} -+ - // staticPolicy is a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. -@@ -121,10 +126,11 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - klog.InfoS("Static policy created with configuration", "options", opts) - - policy := &staticPolicy{ -- topology: topology, -- affinity: affinity, -- cpusToReuse: make(map[string]cpuset.CPUSet), -- options: opts, -+ topology: topology, -+ affinity: affinity, -+ excludeReserved: excludeReserved, -+ cpusToReuse: make(map[string]cpuset.CPUSet), -+ options: opts, - } - - allCPUs := topology.CPUDetails.CPUs() -@@ -263,6 +269,25 @@ func (p *staticPolicy) updateCPUsToReuse(pod *v1.Pod, container *v1.Container, c - } - - func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Container) error { -+ // Process infra pods before guaranteed pods -+ if isKubeInfra(pod) { -+ // Container belongs in reserved pool. -+ // We don't want to fall through to the p.guaranteedCPUs() clause below so return either nil or error. -+ if _, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ klog.Infof("[cpumanager] static policy: reserved container already present in state, skipping (namespace: %s, pod UID: %s, pod: %s, container: %s)", pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } -+ -+ cpuset := p.reserved -+ if cpuset.IsEmpty() { -+ // If this happens then someone messed up. -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ } -+ s.SetCPUSet(string(pod.UID), container.Name, cpuset) -+ klog.Infof("[cpumanager] static policy: reserved: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -+ return nil -+ } -+ - if numCPUs := p.guaranteedCPUs(pod, container); numCPUs != 0 { - klog.InfoS("Static policy: Allocate", "pod", klog.KObj(pod), "containerName", container.Name) - // container belongs in an exclusively allocated pool -@@ -367,6 +392,10 @@ func (p *staticPolicy) guaranteedCPUs(pod *v1.Pod, container *v1.Container) int - if cpuQuantity.Value()*1000 != cpuQuantity.MilliValue() { - return 0 - } -+ // Infrastructure pods use reserved CPUs even if they're in the Guaranteed QoS class -+ if isKubeInfra(pod) { -+ return 0 -+ } - // Safe downcast to do for all systems with < 2.1 billion CPUs. - // Per the language spec, `int` is guaranteed to be at least 32 bits wide. - // https://golang.org/ref/spec#Numeric_types -@@ -580,3 +609,13 @@ func (p *staticPolicy) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, reu - - return hints - } -+ -+// check if a given pod is in a platform infrastructure namespace -+func isKubeInfra(pod *v1.Pod) bool { -+ for _, namespace := range infraNamespaces { -+ if namespace == pod.Namespace { -+ return true -+ } -+ } -+ return false -+} -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 80bd04a1f92..34c5a23c553 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -830,7 +830,8 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - } - - func TestStaticPolicyAddWithResvList(t *testing.T) { -- -+ infraPod := makePod("fakePod", "fakeContainer2", "200m", "200m") -+ infraPod.Namespace = "kube-system" - testCases := []staticPolicyTestWithResvList{ - { - description: "GuPodSingleCore, SingleSocketHT, ExpectError", -@@ -872,6 +873,22 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(4, 5), - }, -+ { -+ description: "InfraPod, SingleSocketHT, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0, 1), -+ }, - } - - testExcl := true --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch b/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch deleted file mode 100644 index d48d38cf9..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch +++ /dev/null @@ -1,562 +0,0 @@ -From 5264e7af1d645a5eb27a6d204f73c08cc72afa70 Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Tue, 25 Jan 2022 13:27:25 -0500 -Subject: [PATCH] kubelet cpumanager introduce concept of isolated CPUs - -This introduces the concept of "isolated CPUs", which are CPUs that -have been isolated at the kernel level via the "isolcpus" kernel boot -parameter. - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via -'--system-reserved=cpu' will be used for infrastructure pods while the -isolated CPUs should be reserved via '--kube-reserved=cpu' to cause -kubelet to skip over them for "normal" CPU resource tracking. The -kubelet code will double-check that the specified isolated CPUs match -what the kernel exposes in "/sys/devices/system/cpu/isolated". - -A plugin (outside the scope of this commit) will expose the isolated -CPUs to kubelet via the device plugin API. - -If a pod specifies some number of "isolcpus" resources, the device -manager will allocate them. In this code we check whether such -resources have been allocated, and if so we set the container cpuset to -the isolated CPUs. This does mean that it really only makes sense to -specify "isolcpus" resources for best-effort or burstable pods, not for -guaranteed ones since that would throw off the accounting code. In -order to ensure the accounting still works as designed, if "isolcpus" -are specified for guaranteed pods, the affinity will be set to the -non-isolated CPUs. - -This patch was refactored in 1.21.3 due to upstream API change -node: podresources: make GetDevices() consistent -(commit ad68f9588c72d6477b5a290c548a9031063ac659). - -The routine podIsolCPUs() was refactored in 1.21.3 since the API -p.deviceManager.GetDevices() is returning multiple devices with -a device per cpu. The resultant cpuset needs to be the aggregate. - -The routine NewStaticPolicy was refactored in 1.22.5, adding a new argument -in its signature: cpuPolicyOptions map[string]string. This change is implies -shifting the new arguments(deviceManager, excludeReserved) with one position -to the right. - -Co-authored-by: Jim Gauld -Co-authored-by: Chris Friesen -Signed-off-by: Gleb Aronsky ---- - pkg/kubelet/cm/container_manager_linux.go | 1 + - pkg/kubelet/cm/cpumanager/cpu_manager.go | 35 +++++++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 14 +++- - pkg/kubelet/cm/cpumanager/policy_static.go | 83 +++++++++++++++++-- - .../cm/cpumanager/policy_static_test.go | 50 ++++++++--- - 5 files changed, 164 insertions(+), 19 deletions(-) - -diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go -index 3892bae081d..9a1e9c406eb 100644 ---- a/pkg/kubelet/cm/container_manager_linux.go -+++ b/pkg/kubelet/cm/container_manager_linux.go -@@ -340,6 +340,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I - cm.GetNodeAllocatableReservation(), - nodeConfig.KubeletRootDir, - cm.topologyManager, -+ cm.deviceManager, - ) - if err != nil { - klog.ErrorS(err, "Failed to initialize cpu manager") -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 8336e7b0fd4..defa03cd180 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -18,7 +18,9 @@ package cpumanager - - import ( - "fmt" -+ "io/ioutil" - "math" -+ "strings" - "sync" - "time" - -@@ -32,6 +34,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" - kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" -@@ -50,6 +53,25 @@ type policyName string - // cpuManagerStateFileName is the file name where cpu manager stores its state - const cpuManagerStateFileName = "cpu_manager_state" - -+// get the system-level isolated CPUs -+func getIsolcpus() cpuset.CPUSet { -+ dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -+ return cpuset.NewCPUSet() -+ } -+ -+ // The isolated cpus string ends in a newline -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cset, err := cpuset.Parse(cpustring) -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to parse sysfs isolcpus string to cpuset") -+ return cpuset.NewCPUSet() -+ } -+ -+ return cset -+} -+ - // Manager interface provides methods for Kubelet to manage pod cpus. - type Manager interface { - // Start is called during Kubelet initialization. -@@ -153,7 +175,8 @@ func (s *sourcesReadyStub) AddSource(source string) {} - func (s *sourcesReadyStub) AllReady() bool { return true } - - // NewManager creates new cpu manager based on provided policy --func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store) (Manager, error) { -+func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store, deviceManager devicemanager.Manager) (Manager, error) { -+ - var topo *topology.CPUTopology - var policy Policy - var err error -@@ -194,7 +217,15 @@ func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconc - // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. - // This variable is primarily to make testing easier. - excludeReserved := true -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions, excludeReserved) -+ -+ // isolCPUs is the set of kernel-isolated CPUs. They should be a subset of specificCPUs or -+ // of the CPUs that NewStaticPolicy() will pick if numReservedCPUs is set. It's only in the -+ // argument list here for ease of testing, it's really internal to the policy. -+ isolCPUs := getIsolcpus() -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, isolCPUs, affinity, cpuPolicyOptions, deviceManager, excludeReserved) -+ if err != nil { -+ return nil, fmt.Errorf("new static policy error: %v", err) -+ } - - if err != nil { - return nil, fmt.Errorf("new static policy error: %w", err) -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index 2c8349662c4..31e4d0585fb 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -37,6 +37,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - ) - -@@ -215,6 +216,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ -@@ -230,8 +232,10 @@ func TestCPUManagerAdd(t *testing.T) { - }, - 0, - cpuset.NewCPUSet(), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), - nil, -+ testDM, - testExcl) - testCases := []struct { - description string -@@ -482,8 +486,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - } - - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -638,7 +643,9 @@ func TestCPUManagerGenerate(t *testing.T) { - } - defer os.RemoveAll(sDir) - -- mgr, err := NewManager(testCase.cpuPolicyName, nil, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager()) -+ testDM, err := devicemanager.NewManagerStub() -+ mgr, err := NewManager(testCase.cpuPolicyName, nil, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager(), testDM) -+ - if testCase.expectedError != nil { - if !strings.Contains(err.Error(), testCase.expectedError.Error()) { - t.Errorf("Unexpected error message. Have: %s wants %s", err.Error(), testCase.expectedError.Error()) -@@ -1232,6 +1239,7 @@ func TestReconcileState(t *testing.T) { - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1246,8 +1254,10 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - }, - 1, - cpuset.NewCPUSet(0), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), - nil, -+ testDM, - testExcl) - testCases := []struct { - description string -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index aeac7fdc8cb..3799795963b 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "strconv" - - v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" -@@ -25,6 +26,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - ) -@@ -101,6 +103,10 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // subset of reserved CPUs with isolcpus attribute -+ isolcpus cpuset.CPUSet -+ // parent containerManager, used to get device list -+ deviceManager devicemanager.Manager - // If true, default CPUSet should exclude reserved CPUs - excludeReserved bool - // topology manager reference to get container Topology affinity -@@ -117,7 +123,8 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, excludeReserved bool) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, isolCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, deviceManager devicemanager.Manager, excludeReserved bool) (Policy, error) { -+ - opts, err := NewStaticPolicyOptions(cpuPolicyOptions) - if err != nil { - return nil, err -@@ -128,6 +135,8 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - policy := &staticPolicy{ - topology: topology, - affinity: affinity, -+ isolcpus: isolCPUs, -+ deviceManager: deviceManager, - excludeReserved: excludeReserved, - cpusToReuse: make(map[string]cpuset.CPUSet), - options: opts, -@@ -154,6 +163,12 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - klog.InfoS("Reserved CPUs not available for exclusive assignment", "reservedSize", reserved.Size(), "reserved", reserved) - policy.reserved = reserved - -+ if !isolCPUs.IsSubsetOf(reserved) { -+ klog.Errorf("[cpumanager] isolCPUs %v is not a subset of reserved %v", isolCPUs, reserved) -+ reserved = reserved.Union(isolCPUs) -+ klog.Warningf("[cpumanager] mismatch isolCPUs %v, force reserved %v", isolCPUs, reserved) -+ } -+ - return policy, nil - } - -@@ -187,8 +202,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } else { - s.SetDefaultCPUSet(allCPUs) - } -- klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -- allCPUs, p.reserved, s.GetDefaultCPUSet()) -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, isolcpus:%v, default:%v\n", -+ allCPUs, p.reserved, p.isolcpus, s.GetDefaultCPUSet()) -+ - return nil - } - -@@ -278,10 +294,11 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - return nil - } - -- cpuset := p.reserved -+ cpuset := p.reserved.Clone().Difference(p.isolcpus) - if cpuset.IsEmpty() { - // If this happens then someone messed up. -- return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v, isolcpus:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved, p.isolcpus) -+ - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - klog.Infof("[cpumanager] static policy: reserved: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -@@ -325,8 +342,34 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - p.updateCPUsToReuse(pod, container, cpuset) -+ klog.Infof("[cpumanager] guaranteed: AddContainer "+ -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); numCPUS=%d, cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, numCPUs, cpuset) -+ return nil -+ } - -+ if isolcpus := p.podIsolCPUs(pod, container); isolcpus.Size() > 0 { -+ // container has requested isolated CPUs -+ if set, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ if set.Equals(isolcpus) { -+ klog.Infof("[cpumanager] isolcpus container already present in state, skipping (namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } else { -+ klog.Infof("[cpumanager] isolcpus container state has cpus %v, should be %v (namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ isolcpus, set, pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ } -+ } -+ // Note that we do not do anything about init containers here. -+ // It looks like devices are allocated per-pod based on effective requests/limits -+ // and extra devices from initContainers are not freed up when the regular containers start. -+ // TODO: confirm this is still true for 1.20 -+ s.SetCPUSet(string(pod.UID), container.Name, isolcpus) -+ klog.Infof("[cpumanager] isolcpus: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, isolcpus) -+ return nil - } -+ - // container belongs in the shared pool (nothing to do; use default cpuset) - return nil - } -@@ -619,3 +662,33 @@ func isKubeInfra(pod *v1.Pod) bool { - } - return false - } -+ -+// get the isolated CPUs (if any) from the devices associated with a specific container -+func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // NOTE: This is required for TestStaticPolicyAdd() since makePod() does -+ // not create UID. We also need a way to properly stub devicemanager. -+ if len(string(pod.UID)) == 0 { -+ return cpuset.NewCPUSet() -+ } -+ resContDevices := p.deviceManager.GetDevices(string(pod.UID), container.Name) -+ cpuSet := cpuset.NewCPUSet() -+ for resourceName, resourceDevs := range resContDevices { -+ // this resource name needs to match the isolcpus device plugin -+ if resourceName == "windriver.com/isolcpus" { -+ for devID, _ := range resourceDevs { -+ cpuStrList := []string{devID} -+ if len(cpuStrList) > 0 { -+ // loop over the list of strings, convert each one to int, add to cpuset -+ for _, cpuStr := range cpuStrList { -+ cpu, err := strconv.Atoi(cpuStr) -+ if err != nil { -+ panic(err) -+ } -+ cpuSet = cpuSet.Union(cpuset.NewCPUSet(cpu)) -+ } -+ } -+ } -+ } -+ } -+ return cpuSet -+} -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 34c5a23c553..a0eb451b60e 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -25,6 +25,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - ) -@@ -65,8 +66,9 @@ func (spt staticPolicyTest) PseudoClone() staticPolicyTest { - } - - func TestStaticPolicyName(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -76,6 +78,7 @@ func TestStaticPolicyName(t *testing.T) { - } - - func TestStaticPolicyStart(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "non-corrupted state", -@@ -151,7 +154,7 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testCase.excludeReserved) - - policy := p.(*staticPolicy) - st := &mockState{ -@@ -199,7 +202,7 @@ func TestStaticPolicyAdd(t *testing.T) { - largeTopoCPUSet := largeTopoBuilder.Result() - largeTopoSock0CPUSet := largeTopoSock0Builder.Result() - largeTopoSock1CPUSet := largeTopoSock1Builder.Result() -- -+ testDM, _ := devicemanager.NewManagerStub() - // these are the cases which must behave the same regardless the policy options. - // So we will permutate the options to ensure this holds true. - optionsInsensitiveTestCases := []staticPolicyTest{ -@@ -529,8 +532,9 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -573,6 +577,7 @@ func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { - - func TestStaticPolicyRemove(t *testing.T) { - excludeReserved := false -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -631,7 +636,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -654,6 +659,7 @@ func TestStaticPolicyRemove(t *testing.T) { - - func TestTopologyAwareAllocateCPUs(t *testing.T) { - excludeReserved := false -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -722,7 +728,8 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, excludeReserved) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, excludeReserved) -+ - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -755,6 +762,7 @@ type staticPolicyTestWithResvList struct { - topo *topology.CPUTopology - numReservedCPUs int - reserved cpuset.CPUSet -+ isolcpus cpuset.CPUSet - stAssignments state.ContainerCPUAssignments - stDefaultCPUSet cpuset.CPUSet - pod *v1.Pod -@@ -765,6 +773,8 @@ type staticPolicyTestWithResvList struct { - } - - func TestStaticPolicyStartWithResvList(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() -+ testExcl := false - testCases := []staticPolicyTestWithResvList{ - { - description: "empty cpuset", -@@ -794,11 +804,9 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -- testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -- -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -838,6 +846,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), -@@ -850,6 +859,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), -@@ -862,6 +872,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -878,6 +889,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -889,11 +901,29 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(0, 1), - }, -+ { -+ description: "InfraPod, SingleSocketHT, Isolcpus, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0), -+ }, - } - - testExcl := true -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, testCase.isolcpus, topologymanager.NewFakeManager(), nil, testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch b/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch deleted file mode 100644 index e9b457928..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-cpumanager-keep-normal-containers-off-reserv.patch +++ /dev/null @@ -1,311 +0,0 @@ -From f2186adb445f1420184aa5af5536bb777536a798 Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Mon, 24 Jan 2022 15:52:24 -0500 -Subject: [PATCH] kubelet cpumanager keep normal containers off reserved CPUs - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via -'--system-reserved=cpu' -or '--kube-reserved=cpu' will be ignored by kubernetes itself. A small -tweak to the default CPU affinity ensures that "normal" Kubernetes -pods won't run on the reserved CPUs. - -Co-authored-by: Jim Gauld -Signed-off-by: Gleb Aronsky ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 6 ++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 11 ++++-- - pkg/kubelet/cm/cpumanager/policy_static.go | 29 +++++++++++--- - .../cm/cpumanager/policy_static_test.go | 38 ++++++++++++++----- - 4 files changed, 64 insertions(+), 20 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 6ad289336ea..8336e7b0fd4 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -191,7 +191,11 @@ func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconc - // exclusively allocated. - reservedCPUsFloat := float64(reservedCPUs.MilliValue()) / 1000 - numReservedCPUs := int(math.Ceil(reservedCPUsFloat)) -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions) -+ // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. -+ // This variable is primarily to make testing easier. -+ excludeReserved := true -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions, excludeReserved) -+ - if err != nil { - return nil, fmt.Errorf("new static policy error: %w", err) - } -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index 9b3e24fc3b2..2c8349662c4 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -215,6 +215,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -230,7 +231,8 @@ func TestCPUManagerAdd(t *testing.T) { - 0, - cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), -- nil) -+ nil, -+ testExcl) - testCases := []struct { - description string - updateErr error -@@ -479,8 +481,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - }, - } - -+ testExcl := false - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -1228,6 +1231,7 @@ func TestReconcileState(t *testing.T) { - // above test cases are without kubelet --reserved-cpus cmd option - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1243,7 +1247,8 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - 1, - cpuset.NewCPUSet(0), - topologymanager.NewFakeManager(), -- nil) -+ nil, -+ testExcl) - testCases := []struct { - description string - updateErr error -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index f7ff26cd313..9697f4d4bb0 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -96,6 +96,8 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // If true, default CPUSet should exclude reserved CPUs -+ excludeReserved bool - // topology manager reference to get container Topology affinity - affinity topologymanager.Store - // set of CPUs to reuse across allocations in a pod -@@ -110,7 +112,7 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, excludeReserved bool) (Policy, error) { - opts, err := NewStaticPolicyOptions(cpuPolicyOptions) - if err != nil { - return nil, err -@@ -172,7 +174,15 @@ func (p *staticPolicy) validateState(s state.State) error { - } - // state is empty initialize - allCPUs := p.topology.CPUDetails.CPUs() -- s.SetDefaultCPUSet(allCPUs) -+ if p.excludeReserved { -+ // Exclude reserved CPUs from the default CPUSet to keep containers off them -+ // unless explicitly affined. -+ s.SetDefaultCPUSet(allCPUs.Difference(p.reserved)) -+ } else { -+ s.SetDefaultCPUSet(allCPUs) -+ } -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -+ allCPUs, p.reserved, s.GetDefaultCPUSet()) - return nil - } - -@@ -180,11 +190,12 @@ func (p *staticPolicy) validateState(s state.State) error { - // 1. Check if the reserved cpuset is not part of default cpuset because: - // - kube/system reserved have changed (increased) - may lead to some containers not being able to start - // - user tampered with file -- if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -- return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -- p.reserved.String(), tmpDefaultCPUset.String()) -+ if !p.excludeReserved { -+ if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -+ return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -+ p.reserved.String(), tmpDefaultCPUset.String()) -+ } - } -- - // 2. Check if state for static policy is consistent - for pod := range tmpAssignments { - for container, cset := range tmpAssignments[pod] { -@@ -211,6 +222,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } - } - totalKnownCPUs = totalKnownCPUs.UnionAll(tmpCPUSets) -+ if p.excludeReserved { -+ totalKnownCPUs = totalKnownCPUs.Union(p.reserved) -+ } - if !totalKnownCPUs.Equals(p.topology.CPUDetails.CPUs()) { - return fmt.Errorf("current set of available CPUs \"%s\" doesn't match with CPUs in state \"%s\"", - p.topology.CPUDetails.CPUs().String(), totalKnownCPUs.String()) -@@ -296,6 +310,9 @@ func (p *staticPolicy) RemoveContainer(s state.State, podUID string, containerNa - klog.InfoS("Static policy: RemoveContainer", "podUID", podUID, "containerName", containerName) - if toRelease, ok := s.GetCPUSet(podUID, containerName); ok { - s.Delete(podUID, containerName) -+ if p.excludeReserved { -+ toRelease = toRelease.Difference(p.reserved) -+ } - // Mutate the shared pool, adding released cpus. - s.SetDefaultCPUSet(s.GetDefaultCPUSet().Union(toRelease)) - } -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index d2b641fe3a0..80bd04a1f92 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -33,6 +33,7 @@ type staticPolicyTest struct { - description string - topo *topology.CPUTopology - numReservedCPUs int -+ excludeReserved bool - podUID string - options map[string]string - containerName string -@@ -64,7 +65,8 @@ func (spt staticPolicyTest) PseudoClone() staticPolicyTest { - } - - func TestStaticPolicyName(t *testing.T) { -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ testExcl := false -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -94,6 +96,15 @@ func TestStaticPolicyStart(t *testing.T) { - stDefaultCPUSet: cpuset.NewCPUSet(), - expCSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), - }, -+ { -+ description: "empty cpuset exclude reserved", -+ topo: topoDualSocketHT, -+ numReservedCPUs: 2, -+ excludeReserved: true, -+ stAssignments: state.ContainerCPUAssignments{}, -+ stDefaultCPUSet: cpuset.NewCPUSet(), -+ expCSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 7, 8, 9, 10, 11), -+ }, - { - description: "reserved cores 0 & 6 are not present in available cpuset", - topo: topoDualSocketHT, -@@ -140,7 +151,8 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ - policy := p.(*staticPolicy) - st := &mockState{ - assignments: testCase.stAssignments, -@@ -211,7 +223,7 @@ func TestStaticPolicyAdd(t *testing.T) { - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), - }, - }, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 4, 5), -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), - pod: makePod("fakePod", "fakeContainer3", "2000m", "2000m"), - expErr: nil, - expCPUAlloc: true, -@@ -517,7 +529,8 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options) -+ testExcl := false -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -559,6 +572,7 @@ func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { - } - - func TestStaticPolicyRemove(t *testing.T) { -+ excludeReserved := false - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -617,7 +631,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -639,6 +653,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - func TestTopologyAwareAllocateCPUs(t *testing.T) { -+ excludeReserved := false - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -707,7 +722,7 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -779,9 +794,11 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -+ testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil) -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -+ - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -821,7 +838,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), - expCPUAlloc: false, -@@ -833,7 +850,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), - expErr: nil, - expCPUAlloc: true, -@@ -857,8 +874,9 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - }, - } - -+ testExcl := true - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch b/kubernetes/kubernetes-1.23.1/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch deleted file mode 100644 index a58e47d5b..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch +++ /dev/null @@ -1,50 +0,0 @@ -From ba9ab333c8b7dca5252e604837914293dc232732 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Fri, 11 Feb 2022 11:06:35 -0500 -Subject: [PATCH] kubelet: sort isolcpus allocation when SMT enabled - -The existing device manager code returns CPUs as devices in unsorted -order. This numerically sorts isolcpus allocations when SMT/HT is -enabled on the host. This logs SMT pairs, singletons, and algorithm -order details to make the algorithm understandable. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/devicemanager/manager.go | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 609da8ed86b..a4b247714f7 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -686,7 +686,16 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - return cpu_lst[0] - } - } -+ //Make post-analysis of selection algorithm obvious by numerical sorting -+ //the available isolated cpu_id. -+ cpu_ids := make([]int, 0, int(devices.Len())) - for cpu_id := range devices { -+ cpu_id_, _ := strconv.Atoi(cpu_id) -+ cpu_ids = append(cpu_ids, cpu_id_) -+ } -+ sort.Ints(cpu_ids) -+ for _, _cpu_id := range cpu_ids { -+ cpu_id := strconv.Itoa(_cpu_id) - // If we've already found cpu_id as a sibling, skip it. - if _, ok := _iterated_cpu[cpu_id]; ok { - continue -@@ -728,7 +737,9 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - } - } - } -- //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ //This algorithm will get some attention. Show minimal details. -+ klog.Infof("order_devices_by_sibling: needed=%d, smtpairs=%v, singletons=%v, order=%v", -+ needed, sibling_lst, single_lst, dev_lst) - return dev_lst, nil - } - func smt_enabled() bool { --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch b/kubernetes/kubernetes-1.23.1/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch deleted file mode 100644 index dbc28d503..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/files/kubernetes-make-isolcpus-allocation-SMT-aware.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 95b7b6e1ddb25511c67a3d4018f62df1e76ee7bc Mon Sep 17 00:00:00 2001 -From: Tao Wang -Date: Tue, 25 Jan 2022 19:25:45 -0500 -Subject: [PATCH] kubernetes: make isolcpus allocation SMT-aware - -Enhance isolcpus support in Kubernetes to allocate isolated SMT -siblings to the same container when SMT/HT is enabled on the host. - -As it stands, the device manager code in Kubernetes is not SMT-aware -(since normally it doesn't deal with CPUs). However, StarlingX -exposes isolated CPUs as devices and if possible we want to allocate -all SMT siblings from a CPU core to the same container in order to -minimize cross- container interference due to resource contention -within the CPU core. - -The solution is basically to take the list of isolated CPUs and -re-order it so that the SMT siblings are next to each other. That -way the existing resource selection code will allocate the siblings -together. As an optimization, if it is known that an odd number -of isolated CPUs are desired, a singleton SMT sibling will be -inserted into the list to avoid breaking up sibling pairs. - -Signed-off-by: Tao Wang ---- - pkg/kubelet/cm/devicemanager/manager.go | 84 ++++++++++++++++++++++++- - 1 file changed, 83 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 60de14a9..609da8ed 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -19,11 +19,14 @@ package devicemanager - import ( - "context" - "fmt" -+ "io/ioutil" - "net" - "os" - "path/filepath" - "runtime" - "sort" -+ "strconv" -+ "strings" - "sync" - "time" - -@@ -41,6 +44,7 @@ import ( - "k8s.io/kubernetes/pkg/features" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors" -+ "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/checkpoint" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" -@@ -667,6 +671,75 @@ func (m *ManagerImpl) UpdateAllocatedDevices() { - m.allocatedDevices = m.podDevices.devices() - } - -+//Given a list of isolated CPUs in 'devices', and the number of desired CPUs in 'needed', -+//return an ordered list of isolated CPUs such that the first 'needed' CPUs in the list -+//contain as many hyperthread sibling pairs as possible. -+func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) { -+ var dev_lst []string -+ var single_lst []string -+ sibling_lst := make([]string, 0, int(devices.Len())) -+ _iterated_cpu := make(map[string]string) -+ get_sibling := func(cpu string, cpu_lst []string) string { -+ if cpu_lst[0] == cpu { -+ return cpu_lst[1] -+ } else { -+ return cpu_lst[0] -+ } -+ } -+ for cpu_id := range devices { -+ // If we've already found cpu_id as a sibling, skip it. -+ if _, ok := _iterated_cpu[cpu_id]; ok { -+ continue -+ } -+ devPath := fmt.Sprintf("/sys/devices/system/cpu/cpu%s/topology/thread_siblings_list", cpu_id) -+ dat, err := ioutil.ReadFile(devPath) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Can't read cpu[%s] thread_siblings_list", cpu_id) -+ } -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cpu_pair_set, err := cpuset.Parse(cpustring) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Unable to parse thread_siblings_list[%s] string to cpuset", cpustring) -+ } -+ var cpu_pair_lst []string -+ for _, v := range cpu_pair_set.ToSlice() { -+ cpu_pair_lst = append(cpu_pair_lst, strconv.Itoa(v)) -+ } -+ sibling_cpu_id := get_sibling(cpu_id, cpu_pair_lst) -+ if _, ok := devices[sibling_cpu_id]; ok { -+ sibling_lst = append(sibling_lst, cpu_id, sibling_cpu_id) -+ _iterated_cpu[sibling_cpu_id] = "" -+ } else { -+ single_lst = append(single_lst, cpu_id) -+ } -+ _iterated_cpu[cpu_id] = "" -+ } -+ if needed%2 == 0 { -+ dev_lst = append(sibling_lst, single_lst...) -+ } else { -+ if len(single_lst) > 1 { -+ _tmp_list := append(sibling_lst, single_lst[1:]...) -+ dev_lst = append(single_lst[0:1], _tmp_list...) -+ } else { -+ if len(single_lst) == 0 { -+ dev_lst = sibling_lst -+ } else { -+ dev_lst = append(single_lst, sibling_lst...) -+ } -+ } -+ } -+ //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ return dev_lst, nil -+} -+func smt_enabled() bool { -+ dat, _ := ioutil.ReadFile("/sys/devices/system/cpu/smt/active") -+ state := strings.TrimSuffix(string(dat), "\n") -+ if state == "0" { -+ return false -+ } -+ return true -+} -+ - // Returns list of device Ids we need to allocate with Allocate rpc call. - // Returns empty list in case we don't need to issue the Allocate rpc call. - func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, required int, reusableDevices sets.String) (sets.String, error) { -@@ -702,7 +775,16 @@ func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, requi - // Create a closure to help with device allocation - // Returns 'true' once no more devices need to be allocated. - allocateRemainingFrom := func(devices sets.String) bool { -- for device := range devices.Difference(allocated) { -+ availableDevices := devices.Difference(allocated).List() -+ // If we're dealing with isolcpus and SMT is enabled, reorder to group SMT siblings together. -+ if resource == "windriver.com/isolcpus" && len(devices) > 0 && smt_enabled() { -+ var err error -+ availableDevices, err = order_devices_by_sibling(devices.Difference(allocated), needed) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ } -+ for _, device := range availableDevices { - m.allocatedDevices[resource].Insert(device) - allocated.Insert(device) - needed-- --- -2.22.5 - diff --git a/kubernetes/kubernetes-1.23.1/centos/kubernetes.spec b/kubernetes/kubernetes-1.23.1/centos/kubernetes.spec deleted file mode 100644 index bcab6d66b..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/kubernetes.spec +++ /dev/null @@ -1,2254 +0,0 @@ -%if 0%{?fedora} -%global with_devel 1 -%global with_bundled 0 -%global with_debug 1 -%else -%global with_devel 0 -%global with_bundled 1 -%global with_debug 0 -%endif - -%if 0%{?with_debug} -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%else -%global debug_package %{nil} -%endif - -%global provider github -%global provider_tld com -%global project kubernetes -%global repo kubernetes -# https://github.com/kubernetes/kubernetes - -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global import_path k8s.io/kubernetes -%global commit 1.23.1 - -%global kube_version 1.23.1 -%global kube_git_version v%{kube_version} - -%global go_version 1.17.5 -%global go_path /usr/lib/golang-%{go_version}-%{go_version}/bin - -# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work -%global _buildshell /bin/bash -%global _checkshell /bin/bash - -# Used to simplify the paths for install and files -%global _stage1 %{_exec_prefix}/local/kubernetes/%{kube_version}/stage1 -%global _stage2 %{_exec_prefix}/local/kubernetes/%{kube_version}/stage2 - -############################################## -Name: kubernetes-%{kube_version} -Version: %{kube_version} -Release: 1%{?_tis_dist}.%{tis_patch_ver} -Summary: Container cluster management -License: ASL 2.0 -URL: https://%{import_path} -ExclusiveArch: x86_64 aarch64 ppc64le s390x -Source0: %{project}-v%{kube_version}.tar.gz -Source4: kubeadm.conf -Source5: kubelet-cgroup-setup.sh - -Patch1: kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch -Patch2: kubelet-cpumanager-keep-normal-containers-off-reserv.patch -Patch3: kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch -Patch4: kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch -Patch5: kubeadm-create-platform-pods-with-zero-CPU-resources.patch -Patch6: enable-support-for-kubernetes-to-ignore-isolcpus.patch -Patch7: Revert-use-subpath-for-coredns-only-for-default-repo.patch -Patch8: kubernetes-make-isolcpus-allocation-SMT-aware.patch -Patch9: kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch - -# It obsoletes cadvisor but needs its source code (literally integrated) -Obsoletes: cadvisor - -# kubernetes is decomposed into master and node subpackages -# require both of them for updates -Requires: kubernetes-%{kube_version}-master -Requires: kubernetes-%{kube_version}-node - -%description -%{summary} - -%if 0%{?with_devel} -%package devel -Summary: %{summary} -BuildArch: noarch - -Provides: golang(%{import_path}/cmd/genutils) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubectl/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/normalization) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/install) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/conversion-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/deepcopy-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/generator) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/go-to-protobuf/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/import-boss/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/namer) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/parser) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/set-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/types) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/install) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/pkg/federation-controller/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/admission) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/annotations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/endpoints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta/metatypes) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest/resttest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing/compat) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery/registered) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v0) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v2alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/audit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator/bearertoken) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/union) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/handlers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/chaosclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/leaderelection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/record) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/restclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/testing/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/transport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/dynamic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/adapters/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/auth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient/simple) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/azure) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/cloudstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/gce) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/mesos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/openstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/ovirt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/rackspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/vsphere) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/daemon) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/disruption) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework/informers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector/metaonly) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podgc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/route) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/statusupdater) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion/queryparams) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/dns) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fieldpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fields) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/openapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/healthz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/httplog) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/rollout) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/set) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/templates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/editor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/jsonmerge) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/metricsutil) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/client) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cm) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/custommetrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockershim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockertools) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/envvars) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/events) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/eviction) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/images) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/kuberuntime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/leaky) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hairpin) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/kubenet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/mock_network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pleg) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/results) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/qos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/remote) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt/mock_os) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rktshim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/status) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/format) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/ioutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/queue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/sliceutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubemark) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master/ports) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/http) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/tcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/healthcheck) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/userspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/evaluator/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/subjectaccessreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/cachesize) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/componentstatus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/experimental/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rangeallocation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/registrytest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/tokenreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/recognizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/streaming) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/versioning) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontext) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/seccomp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/selection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ssh) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/etcdtest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing/testingcert) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend/factory) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ui) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/async) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/bandwidth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chmod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chown) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/clock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/codeinspector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/configz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crlf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crypto) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/dbus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/diff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/ebtables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/env) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flowcontrol) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flushwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/framer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap/exponentialbackoff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/hash) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/homedir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream/spdy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/integer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/interrupt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/intstr) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/io) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/jsonpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/keymutex) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/limitwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/logs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/maps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/mount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/oom) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/parsers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/procfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/resourcecontainer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rlimit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/slice) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strategicpatch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strings) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/system) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/term) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/threading) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/uuid) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation/field) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wait) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/workqueue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wsstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/verflag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/aws_ebs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_dd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_file) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cephfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cinder) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/downwardapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/empty_dir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/fc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flexvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flocker) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/gce_pd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/git_repo) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/glusterfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/host_path) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/iscsi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/nfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/quobyte) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/rbd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/nestedpendingoperations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/operationexecutor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/volumehelper) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/vsphere_volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/versioned) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/admit) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/alwayspullimages) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/antiaffinity) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/deny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/exec) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/initialresources) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/limitranger) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/autoprovision) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/exists) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/persistentvolume/label) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/securitycontext/scdeny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/storageclass/default) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/allow) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/keystone) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/passwordfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/basicauth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/union) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/x509) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokenfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokentest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/predicates) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities/util) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider/defaults) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/factory) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/schedulercache) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/webhook) = %{version}-%{release} - -%description devel -Libraries for building packages importing k8s.io/kubernetes. -Currently, the devel is not suitable for development. -It is meant only as a buildtime dependency for other projects. - -This package contains library source intended for -building other packages which use %{project}/%{repo}. -%endif - -############################################## -%package unit-test -Summary: %{summary} - for running unit tests - -# below Rs used for testing -Requires: golang-%{go_version} -Requires: etcd >= 2.0.9 -Requires: hostname -Requires: rsync -Requires: NetworkManager - -%description unit-test -%{summary} - for running unit tests - -############################################## -%package master -Summary: Kubernetes services for master host - -# Build with the recommended golang for this Kubernetes version -BuildRequires: golang-%{go_version} -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: kubernetes-%{kube_version}-client - -%description master -Kubernetes services for master host - -############################################## -%package node -Summary: Kubernetes services for node host - -%if 0%{?fedora} >= 27 -Requires: (docker or docker-ce) -Suggests: docker-ce -%else -Requires: docker-ce -%endif -Requires: conntrack-tools - -BuildRequires: golang-%{go_version} -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: socat -Requires: kubernetes-%{kube_version}-client - -%description node -Kubernetes services for node host - -############################################## -%package kubeadm -Summary: Kubernetes tool for standing up clusters -Requires: kubernetes-%{kube_version}-client -Requires: containernetworking-cni - -%description kubeadm -Kubernetes tool for standing up clusters - -############################################## -%package client -Summary: Kubernetes client tools - -BuildRequires: golang-%{go_version} -BuildRequires: go-bindata - -%description client -Kubernetes client tools like kubectl - -############################################## -%package kube-misc -Summary: dummy package -%description kube-misc -Kubernetes dummy package for misc stuff we don't want to -install in production. - -############################################## - -%prep -%setup -q -n %{repo}-%{commit} -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 - -#src/k8s.io/kubernetes/pkg/util/certificates -# Patch the code to remove eliptic.P224 support -for dir in vendor/github.com/google/certificate-transparency/go/x509 pkg/util/certificates; do - if [ -d "${dir}" ]; then - pushd ${dir} - sed -i "/^[^=]*$/ s/oidNamedCurveP224/oidNamedCurveP256/g" *.go - sed -i "/^[^=]*$/ s/elliptic\.P224/elliptic.P256/g" *.go - popd - fi -done - -# Move all the code under src/k8s.io/kubernetes directory -mkdir -p src/k8s.io/kubernetes -mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. - -############### - -%build -export PATH=%{go_path}:$PATH -export PBR_VERSION=%{version} -pushd src/k8s.io/kubernetes/ -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=%{commit} -export KUBE_GIT_VERSION=%{kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace - -# Verify the go version we will build against -go version - -# https://bugzilla.redhat.com/show_bug.cgi?id=1392922#c1 -%ifarch ppc64le -export GOLDFLAGS='-linkmode=external' -%endif - -# uncomment these two lines to build unoptimized binaries for debugging. -# export GOLDFLAGS="" -# export GOGCFLAGS="-N -l" -make WHAT="cmd/kube-proxy cmd/kube-apiserver cmd/kube-controller-manager cmd/kubelet cmd/kubeadm cmd/kube-scheduler cmd/kubectl" - -# convert md to man -./hack/generate-docs.sh || true -pushd docs -pushd admin -cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. -popd -popd - -%install -# go_path required for setup_env golang version check -export PATH=%{go_path}:$PATH -export PBR_VERSION=%{version} -pushd src/k8s.io/kubernetes/ -. hack/lib/init.sh -kube::golang::setup_env - -%ifarch ppc64le -output_path="_output/local/go/bin" -%else -output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" -%endif - -install -m 755 -d %{buildroot}%{_bindir} -install -m 755 -d %{buildroot}%{_stage1}%{_bindir} -install -m 755 -d %{buildroot}%{_stage2}%{_bindir} - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kubeadm" -install -p -m 755 -t %{buildroot}%{_stage1}%{_bindir} ${output_path}/kubeadm -install -d -m 0755 %{buildroot}%{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d -install -p -m 0644 -t %{buildroot}%{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE4} - -echo "+++ INSTALLING kubelet-cgroup-setup.sh" -install -p -m 0700 -t %{buildroot}%{_stage2}%{_bindir} %{SOURCE5} - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kube-controller-manager" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-controller-manager - -echo "+++ INSTALLING kube-scheduler" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-scheduler - -echo "+++ INSTALLING kube-proxy" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-proxy - -echo "+++ INSTALLING kubelet" -install -p -m 754 -t %{buildroot}%{_stage2}%{_bindir} ${output_path}/kubelet - -echo "+++ INSTALLING kubectl" -install -p -m 754 -t %{buildroot}%{_stage2}%{_bindir} ${output_path}/kubectl - -# install the bash completion -install -d -m 0755 %{buildroot}%{_stage2}%{_datadir}/bash-completion/completions/ -%{buildroot}%{_stage2}%{_bindir}/kubectl completion bash > %{buildroot}%{_stage2}%{_datadir}/bash-completion/completions/kubectl - -# install specific cluster addons for optional use -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons -# Addon: volumesnapshots -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/crd -install -m 0644 -t %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/crd cluster/addons/volumesnapshots/crd/* -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller -install -m 0644 -t %{buildroot}%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller cluster/addons/volumesnapshots/volume-snapshot-controller/* - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 -rm -Rf %{buildroot}%{_mandir}/man1/cloud-controller-manager.* -# from k8s tarball copied docs/man/man1/*.1 - -# source codes for building projects -%if 0%{?with_devel} -install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ -echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list -# find all *.go but no *_test.go files and generate devel.file-list -for file in $(find . -iname "*.go" \! -iname "*_test.go") ; do - echo "%%dir %%{gopath}/src/%%{import_path}/$(dirname $file)" >> devel.file-list - install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$(dirname $file) - cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file - echo "%%{gopath}/src/%%{import_path}/$file" >> devel.filelist -done -%endif - - -%if 0%{?with_devel} -sort -u -o devel.file-list devel.file-list -%endif - -popd - -%if 0%{?with_devel} -mv src/k8s.io/kubernetes/devel.file-list . -%endif - -mv src/k8s.io/kubernetes/*.md . -mv src/k8s.io/kubernetes/LICENSE . - - -# place files for unit-test rpm -install -d -m 0755 %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -# basically, everything from the root directory is needed -# unit-tests needs source code -# integration tests needs docs and other files -# test-cmd.sh atm needs cluster, examples and other -cp -a src %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -rm -rf %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/_output -cp -a *.md %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/ - -%check -# Fedora, RHEL7 and CentOS are tested via unit-test subpackage -if [ 1 != 1 ]; then -echo "******Testing the commands*****" -hack/test-cmd.sh -echo "******Benchmarking kube********" -hack/benchmark-go.sh - -# In Fedora 20 and RHEL7 the go cover tools isn't available correctly -%if 0%{?fedora} >= 21 -echo "******Testing the go code******" -hack/test-go.sh -echo "******Testing integration******" -hack/test-integration.sh --use_go_build -%endif -fi - -############################################## -%files -# empty as it depends on master and node - -############################################## -%files master -%license LICENSE -%doc *.md -%attr(754, -, root) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver -%{_bindir}/kube-controller-manager -%{_bindir}/kube-scheduler -%dir %{_sysconfdir}/%{name} -%dir %{_sysconfdir}/%{name}/addons -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots/crd -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshots.yaml -%dir %{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller -%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller/volume-snapshot-controller-deployment.yaml -%{_sysconfdir}/%{name}/addons/volumesnapshots/volume-snapshot-controller/rbac-volume-snapshot-controller.yaml - -############################################## -%files node -%license LICENSE -%{_stage2}%{_bindir}/kubelet -%{_stage2}%{_bindir}/kubelet-cgroup-setup.sh - -############################################## -%files kubeadm -%license LICENSE -%{_stage1}%{_bindir}/kubeadm -%dir %{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d -%config(noreplace) %{_stage2}%{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf - -############################################## -%files client -%license LICENSE -%{_stage2}%{_bindir}/kubectl -%{_stage2}%{_datadir}/bash-completion/completions/kubectl - -############################################## -%files unit-test -%{_sharedstatedir}/kubernetes-unit-test/ - -%if 0%{?with_devel} -%files devel -f devel.file-list -%doc *.md -%dir %{gopath}/src/k8s.io -%endif - -############################################## -%files kube-misc -%{_mandir}/man1/kube-apiserver.1* -%{_mandir}/man1/kube-controller-manager.1* -%{_mandir}/man1/kube-scheduler.1* -%{_mandir}/man1/kube-proxy.1* -%{_bindir}/kube-proxy -%{_mandir}/man1/kubelet.1* -%{_mandir}/man1/kubeadm.1* -%{_mandir}/man1/kubeadm-* -%{_mandir}/man1/kubectl.1* -%{_mandir}/man1/kubectl-* - -############################################## - -%pre master - -%post master -%systemd_post kube-apiserver kube-scheduler kube-controller-manager - -%preun master -%systemd_preun kube-apiserver kube-scheduler kube-controller-manager - -%postun master -%systemd_postun - - -%pre node - -%post node - -%preun node - -%postun node -%systemd_postun - -############################################ -%changelog -* Tue Mar 27 2018 Spyros Trigazis - 1.10.0-1 -- Bump to upstream v1.10.0 - -* Thu Mar 22 2018 Spyros Trigazis - 1.9.6-1 -- Bump to upstream v1.9.6 - -* Tue Mar 20 2018 Jan Chaloupka - 1.9.5-1 -- Bump to upstream v1.9.5 - resolves: #1554420 - -* Sun Feb 11 2018 Spyros Trigazis - 1.9.3-1 -- Bump to upstream v1.9.3 - -* Fri Feb 09 2018 Jan Chaloupka - 1.9.1-5 -- Add --fail-swap-on=false flag to the /etc/kubernetes/kubelet - resolves: #1542476 - -* Thu Feb 08 2018 Igor Gnatenko - 1.9.1-4 -- Escape macro in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 1.9.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Jan 15 2018 Jan Chaloupka - 1.9.1-2 -- If docker is not available, try docker-ce instead (use boolean dependencies) - resolves: #1534508 - -* Fri Jan 12 2018 Spyros Trigazis - 1.9.1-1 -- Update to upstream v1.9.1 - resolves #1533794 - -* Tue Oct 24 2017 Jan Chaloupka - 1.8.1-1 -- Update to upstream v1.8.1 - resolves: #1497135 - -* Mon Oct 02 2017 Jan Chaloupka - 1.8.0-1 -- Update to upstream v1.8.0 - related: #1497625 - -* Mon Oct 02 2017 Jan Chaloupka - 1.7.7-1 -- Update to upstream v1.7.7 - resolves: #1497625 - -* Mon Sep 18 2017 Jan Chaloupka - 1.7.6-1 -- Update to upstream v1.7.6 - resolves: #1492551 - -* Mon Sep 11 2017 Jan Chaloupka - 1.7.5-1 -- Update to upstream v1.7.5 - resolves: #1490316 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.4-1 -- Fix the version - related: #1482874 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.3-2 -- Update to upstream v1.7.4 - resolves: #1482874 - -* Tue Aug 08 2017 Jan Chaloupka - 1.7.3-1 -- Update to upstream v1.7.3 - resolves: #1479685 - -* Thu Aug 03 2017 Fedora Release Engineering - 1.7.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Sun Jul 30 2017 Florian Weimer - 1.7.2-3 -- Rebuild with binutils fix for ppc64le (#1475636) - -* Wed Jul 26 2017 Fedora Release Engineering - 1.7.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.2-1 -- Update to upstream v1.7.2 - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.1-2 -- Sync kubeadm.conf with upstream service configuration (set Restart,StartLimitInterval,RestartSec) - -* Fri Jul 14 2017 Jan Chaloupka - 1.7.1-1 -- Update to upstream v1.7.1 - resolves: #1471767 - -* Sat Jul 08 2017 Jan Chaloupka - 1.6.7-1 -- Update to upstream v1.6.7 - resolves: #1468823 - resolves: #1468752 - -* Fri May 19 2017 Timothy St. Clair - 1.6.4-1 -- Add kubeadm subpackage to enable upstream deployments - -* Thu May 18 2017 Jan Chaloupka - 1.6.3-1 -- Update to upstream v1.6.3 - resolves: #1452101 - -* Fri May 12 2017 Jan Chaloupka - 1.6.2-2 -- Extend archs with s390x - resolves: #1400000 - -* Tue May 02 2017 Jan Chaloupka - 1.6.2-1 -- Update to upstream v1.6.2 - resolves: #1447338 - -* Tue Apr 11 2017 Jan Chaloupka - 1.6.1-1 -- Update to upstream v1.6.1 - related: #1422889 - -* Fri Mar 31 2017 Jan Chaloupka - 1.5.6-1 -- Update to upstream v1.5.6 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.5-4 -- Update to upstream v1.5.5 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.4-3 -- re-enable debug-info - related: #1422889 - -* Thu Mar 09 2017 Jan Chaloupka - 1.5.4-2 -- Bump to upstream 7243c69eb523aa4377bce883e7c0dd76b84709a1 - related: #1422889 - -* Thu Feb 16 2017 Jan Chaloupka - 1.5.3-1 -- Update to upstream v1.5.3 - resolves: #1422889 - -* Fri Feb 10 2017 Fedora Release Engineering - 1.5.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Wed Jan 18 2017 Jan Chaloupka - 1.5.2-2 -- fix rootScopeNaming generate selfLink - resolves: #1413997 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.2-1 -- Bump version as well - related: #1412996 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.1-2 -- Bump to upstream 1.5.2 - resolves: #1412996 - -* Thu Jan 05 2017 Jan Chaloupka - 1.5.1-1 -- Bump to upstream 1.5.1 - resolves: #1410186 - -* Wed Jan 04 2017 Jan Chaloupka - 1.4.7-2 -- Generate the md files before they are converted to man pages - resolves: #1409943 - -* Mon Dec 12 2016 Jan Chaloupka - 1.4.7-1 -- Bump to upstream v1.4.7 - resolves: #1403823 - New conntrack-tools dependency of kube-proxy - Build kubernetes on ppc64le with linkmode=external - resolves: #1392922 - -* Mon Nov 14 2016 jchaloup - 1.4.5-3 -- Patch unit-test subpackage to run tests over k8s distro binaries - -* Wed Nov 09 2016 jchaloup - 1.4.5-2 -- Add missing if devel around generated devel.file-list - related: #1390074 - -* Tue Nov 08 2016 jchaloup - 1.4.5-1 -- Bump to upstream v1.4.5 (flip back to upstream based Kubernetes) - related: #1390074 - -* Mon Oct 31 2016 jchaloup - 1.4.0-0.1.beta3.git52492b4 -- Update to origin v1.4.0-alpha.0 (ppc64le and arm unbuildable with the current golang version) - resolves: #1390074 - -* Mon Oct 24 2016 jchaloup - 1.3.0-0.4.git52492b4 -- Update to origin v1.3.1 - resolves: #1388092 - -* Thu Sep 08 2016 jchaloup - 1.3.0-0.3.rc1.git507d3a7 -- Update to origin v1.3.0-rc1 - resolves: #1374361 - -* Thu Aug 11 2016 Dennis Gilmore -1.3.0-0.2.git4a3f9c5 -- enable armv7hl and aarch64 - -* Tue Aug 09 2016 jchaloup - 1.3.0-0.1.git4a3f9c5 -- Update to origin v1.3.0-alpha.3 - resolves: #1365601 - -* Thu Jul 21 2016 Fedora Release Engineering - 1.2.0-0.27.git4a3f9c5 -- https://fedoraproject.org/wiki/Changes/golang1.7 - -* Sun Jul 17 2016 jchaloup - 1.2.0-0.26.git4a3f9c5 -- Update to origin v1.2.1 - resolves: #1357261 - -* Wed Jul 13 2016 jchaloup - 1.2.0-0.25.git4a3f9c5 -- Enable CPU and Memory accounting on a node - -* Wed Jun 29 2016 jchaloup - 1.2.0-0.24.git4a3f9c5 -- Be more verbose about devel subpackage - resolves: #1269449 - -* Tue Jun 28 2016 jchaloup - 1.2.0-0.23.git4a3f9c5 -- Own /run/kubernetes directory - resolves: #1264699 - -* Sat May 28 2016 jchaloup - 1.2.0-0.22.git4a3f9c5 -- Bump to origin v1.2.0 - resolves: #1340643 - -* Wed May 04 2016 jchaloup - 1.2.0-0.21.git4a3f9c5 -- Extend uni-test subpackage to run other tests - -* Mon Apr 25 2016 jchaloup - 1.2.0-0.20.git4a3f9c5 -- Update support for ppc64le to use go compiler - related: #1306214 - -* Thu Apr 21 2016 jchaloup - 1.2.0-0.19.git4a3f9c5 -- Fix support for ppc64le - related: #1306214 - -* Tue Apr 19 2016 jchaloup - 1.2.0-0.18.git4a3f9c5 -- Bump to origin v1.1.6 - resolves: #1328357 - -* Mon Apr 11 2016 jchaloup - 1.2.0-0.17.alpha6.git4a3f9c5 -- Don't disable extensions/v1beta1 by default to conform with upstream documentation - -* Wed Mar 30 2016 jchaloup - 1.2.0-0.16.alpha6.git4a3f9c5 - Update to origin's v1.1.5 - Build on ppc64le as well - resolves: #1306214 - -* Tue Mar 08 2016 jchaloup - 1.2.0-0.15.alpha6.gitf0cd09a -- hyperkube.server: don't parse args for any command - -* Fri Mar 04 2016 jchaloup - 1.2.0-0.14.alpha6.gitf0cd09a -- Disable extensions/v1beta1 implicitly - -* Tue Mar 01 2016 jchaloup - 1.2.0-0.13.alpha6.gitf0cd09a -- Hyperkube checks flags of individual commands/servers even if it does not define their flags. - Thus resulting in 'uknown shorthand flag' error - -* Mon Feb 29 2016 jchaloup - 1.2.0-0.12.alpha6.gitf0cd09a -- Disable v1beta3 -- hyperkube-kubectl-dont shift os.Args - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.11.alpha6.gitf0cd09a -- add kube- prefix to controller-manager, proxy and scheduler - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.10.alpha6.gitf0cd09a -- Hardlink kube-controller-manager, kuber-scheduler, kubectl, kubelet and kube-proxy into hyperkube -- Keep kube-apiserver binary as it is (it has different permission and capabilities) - -* Thu Feb 25 2016 jchaloup - 1.2.0-0.9.alpha6.gitf0cd09a -- Fix Content-Type of docker client response - resolves: #1311861 - -* Mon Feb 22 2016 Fedora Release Engineering - 1.2.0-0.8.alpha6.gitf0cd09a -- https://fedoraproject.org/wiki/Changes/golang1.6 - -* Mon Feb 22 2016 jchaloup - 1.2.0-0.7.alpha6.git4c8e6f4 -- Bump to origin 1.1.3 - kube-version-change command replaced with kubectl convert (check out docs/admin/cluster-management.md) - related: 1295066 - -* Thu Feb 04 2016 Fedora Release Engineering - 1.2.0-0.6.alpha1.git4c8e6f4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jan 21 2016 jchaloup - 1.2.0-0.5.alpha1.git4c8e6f4 -- Bump to upstream e1d9873c1d5711b83fd3dd7eefe83a88ceb92c08 - related: #1291860 - -* Thu Jan 07 2016 jchaloup - 1.2.0-0.4.alpha1.git4c8e6f4 -- Move definition of all version, git and commit macros at one place - resolves: #1291860 - -* Fri Jan 01 2016 jchaloup - 1.2.0-0.3.alpha1.git4c8e6f4 -- Bump to upstream bf56e235826baded1772fb340266b8419c3e8f30 - Rebase to origin's "v1.1.0.1 - Security Update to v1.1" release - resolves: #1295066 - -* Thu Nov 26 2015 jchaloup - 1.2.0-0.2.alpha1.git4c8e6f4 -- Bump to origin upstream a41c9ff38d52fd508481c3c2bac13d52871fde02 -- Build kubernetes from origin's Godeps using hack/build-go.sh - origin's Godeps = kubernetes upstream + additional patches - -* Tue Oct 20 2015 jchaloup - 1.2.0-0.1.alpha1.git4c8e6f4 -- Bump to upstream 403de3874fba420fd096f2329b45fe2f5ae97e46 - related: #1211266 - -* Wed Oct 14 2015 jchaloup - 1.1.0-0.41.alpha1.gite9a6ef1 -- Bump to origin upstream e9a6ef1cd4c29d45730289a497d18b19d7ba450d - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.40.alpha1.git5f38cb0 -- Add missing short option for --server of kubectl -- Update unit-test-subpackage (only test-cmd.sh atm) - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.39.alpha1.git5f38cb0 -- Add normalization of flags - related: #1211266 - -* Fri Oct 02 2015 jchaloup - 1.1.0-0.38.alpha1.git5f38cb0 -- Restore unit-test subpackage (not yet tested) - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.37.alpha1.git5f38cb0 -- Do not unset default cluster, otherwise k8s ends with error when no cluster set - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.36.alpha0.git5f38cb0 -- Bump to o4n 5f38cb0e98c9e854cafba9c7f98dafd51e955ad8 - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.35.alpha1.git2695cdc -- Update git version of k8s and o4n, add macros - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.34.alpha1.git2695cdc -- Built k8s from o4n tarball -- Bump to upstream 2695cdcd29a8f11ef60278758e11f4817daf3c7c - related: #1211266 - -* Tue Sep 22 2015 jchaloup - 1.1.0-0.33.alpha1.git09cf38e -- Bump to upstream 09cf38e9a80327e2d41654db277d00f19e2c84d0 - related: #1211266 - -* Thu Sep 17 2015 jchaloup - 1.1.0-0.32.alpha1.git400e685 -- Bump to upstream 400e6856b082ecf4b295568acda68d630fc000f1 - related: #1211266 - -* Wed Sep 16 2015 jchaloup - 1.1.0-0.31.gitd549fc4 -- Bump to upstream d549fc400ac3e5901bd089b40168e1e6fb17341d - related: #1211266 - -* Tue Sep 15 2015 jchaloup - 1.1.0-0.30.gitc9570e3 -- Bump to upstream c9570e34d03c6700d83f796c0125d17c5064e57d - related: #1211266 - -* Mon Sep 14 2015 jchaloup - 1.1.0-0.29.git86b4e77 -- Bump to upstream 86b4e777e1947c1bc00e422306a3ca74cbd54dbe - related: #1211266 - -* Thu Sep 10 2015 jchaloup - 1.1.0-0.28.gitf867ba3 -- Bump to upstream f867ba3ba13e3dad422efd21c74f52b9762de37e - related: #1211266 - -* Wed Sep 09 2015 jchaloup - 1.1.0-0.27.git0f4fa4e -- Bump to upstream 0f4fa4ed25ae9a9d1824fe55aeefb4d4ebfecdfd - related: #1211266 - -* Tue Sep 08 2015 jchaloup - 1.1.0-0.26.git196f58b -- Bump to upstream 196f58b9cb25a2222c7f9aacd624737910b03acb - related: #1211266 - -* Mon Sep 07 2015 jchaloup - 1.1.0-0.25.git96e0ed5 -- Bump to upstream 96e0ed5749608d4cc32f61b3674deb04c8fa90ad - related: #1211266 - -* Sat Sep 05 2015 jchaloup - 1.1.0-0.24.git2e2def3 -- Bump to upstream 2e2def36a904fe9a197da5fc70e433e2e884442f - related: #1211266 - -* Fri Sep 04 2015 jchaloup - 1.1.0-0.23.gite724a52 -- Bump to upstream e724a5210adf717f62a72162621ace1e08730c75 - related: #1211266 - -* Thu Sep 03 2015 jchaloup - 1.1.0-0.22.gitb6f2f39 -- Bump to upstream b6f2f396baec5105ff928cf61903c2c368259b21 - related: #1211266 - -* Wed Sep 02 2015 jchaloup - 1.1.0-0.21.gitb4a3698 -- Bump to upstream b4a3698faed81410468eccf9f328ca6df3d0cca3 - related: #1211266 - -* Tue Sep 01 2015 jchaloup - 1.1.0-0.20.git2f9652c -- Bump to upstream 2f9652c7f1d4b8f333c0b5c8c1270db83b913436 - related: #1211266 - -* Mon Aug 31 2015 jchaloup - 1.1.0-0.19.git66a644b -- Bump to upstream 66a644b275ede9ddb98eb3f76e8d1840cafc2147 - related: #1211266 - -* Thu Aug 27 2015 jchaloup - 1.1.0-0.18.gitab73849 -- Bump to upstream ab7384943748312f5e9294f42d42ed3983c7c96c - related: #1211266 - -* Wed Aug 26 2015 jchaloup - 1.1.0-0.17.git00e3442 -- Bump to upstream 00e34429e0242323ed34347cf0ab65b3d62b21f7 - related: #1211266 - -* Tue Aug 25 2015 jchaloup - 1.1.0-0.16.gita945785 -- Bump to upstream a945785409d5b68f3a2721d2209300edb5abf1ce - related: #1211266 - -* Mon Aug 24 2015 jchaloup - 1.1.0-0.15.git5fe7029 -- Bump to upstream 5fe7029e688e1e5873a0b95a622edda5b5156d2b - related: #1211266 - -* Fri Aug 21 2015 jchaloup - 1.1.0-0.14.gitb6f18c7 -- Bump to upstream b6f18c7ce08714c8d4f6019463879a164a41750e - related: #1211266 - -* Thu Aug 20 2015 jchaloup - 1.1.0-0.13.git44fa48e -- Bump to upstream 44fa48e5af44d3e988fa943d96a2de732d8cc666 - related: #1211266 - -* Wed Aug 19 2015 jchaloup - 1.1.0-0.12.gitb5a4a54 -- Bump to upstream b5a4a548df0cffb99bdcc3b9b9e48d4025d0541c - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.11.git919c7e9 -- Bump to upstream 919c7e94e23d2dcd5bdd96896e0a7990f9ae3338 - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.10.git280b66c -- Bump to upstream 280b66c9012c21e253acd4e730f8684c39ca08ec - related: #1211266 - -* Mon Aug 17 2015 jchaloup - 1.1.0-0.9.git081d9c6 -- Bump to upstream 081d9c64d25c20ec16035036536511811118173d - related: #1211266 - -* Fri Aug 14 2015 jchaloup - 1.1.0-0.8.git8dcbeba -- Bump to upstream 8dcbebae5ef6a7191d9dfb65c68833c6852a21ad - related: #1211266 - -* Thu Aug 13 2015 jchaloup - 1.1.0-0.7.git968cbbe -- Bump to upstream 968cbbee5d4964bd916ba379904c469abb53d623 - related: #1211266 - -* Wed Aug 12 2015 jchaloup - 1.1.0-0.6.gitc91950f -- Bump to upstream c91950f01cb14ad47486dfcd2fdfb4be3ee7f36b - related: #1211266 - -* Tue Aug 11 2015 jchaloup - 1.1.0-0.5.gite44c8e6 -- Bump to upstream e44c8e6661c931f7fd434911b0d3bca140e1df3a - related: #1211266 - -* Mon Aug 10 2015 jchaloup - 1.1.0-0.4.git2bfa9a1 -- Bump to upstream 2bfa9a1f98147cfdc2e9f4cf50e2c430518d91eb - related: #1243827 - -* Thu Aug 06 2015 jchaloup - 1.1.0-0.3.git4c42e13 -- Bump to upstream 4c42e1302d3b351f3cb6074d32aa420bbd45e07d -- Change import path prefix to k8s.io/kubernetes - related: #1243827 - -* Wed Aug 05 2015 jchaloup - 1.1.0-0.2.git159ba48 -- Bump to upstream 159ba489329e9f6ce422541e13f97e1166090ec8 - related: #1243827 - -* Sat Aug 01 2015 jchaloup - 1.1.0-0.1.git6129d3d -- Bump to upstream 6129d3d4eb80714286650818081a64ce2699afed - related: #1243827 - -* Fri Jul 31 2015 jchaloup - 1.0.0-0.18.gitff058a1 -- Bump to upstream ff058a1afeb63474f7a35805941f3b07c27aae0f - related: #1243827 - -* Thu Jul 30 2015 jchaloup - 1.0.0-0.17.git769230e -- Bump to upstream 769230e735993bb0bf924279a40593c147c9a6ab - related: #1243827 - -* Wed Jul 29 2015 jchaloup - 1.0.0-0.16.gitdde7222 -- Bump to upstream dde72229dc9cbbdacfb2e44b22d9d5b357027020 - related: #1243827 - -* Tue Jul 28 2015 jchaloup - 1.0.0-0.15.gitc5bffaa -- Bump to upstream c5bffaaf3166513da6259c44a5d1ba8e86bea5ce - related: #1243827 - -* Sat Jul 25 2015 jchaloup - 1.0.0-0.14.git5bd82ff -- Bump to upstream 5bd82ffe6da8f4e72e71b362635e558bfc412106 - related: #1243827 - -* Fri Jul 24 2015 jchaloup - 1.0.0-0.13.git291acd1 -- Bump to upstream 291acd1a09ac836ec7524b060a19a6498d9878dd - related: #1243827 - -* Thu Jul 23 2015 jchaloup - 1.0.0-0.12.gitfbed349 -- Bump to upstream fbed3492bfa09e59b1c423fdd7c1ecad333a06ef - related: #1243827 - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.11.gitfbc85e9 -- Add runtime dependency of kubernetes-node on socat (so kubectl port-forward works on AH) - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.10.gitfbc85e9 -- Update the build script for go1.5 as well -- Bump to upstream fbc85e9838f25547be94fbffeeb92a756d908ca0 - related: #1243827 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.9.git2d88675 -- Bump to upstream 2d88675f2203d316d4bac312c7ccad12991b56c2 -- Change KUBE_ETCD_SERVERS to listen on 2379 ports instead of 4001 - resolves: #1243827 -- Add kubernetes-client to provide kubectl command - resolves: #1241469 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.8.gitb2dafda -- Fix dependency and tests for go-1.5 -- with_debug off as the builds ends with error "ELFRESERVE too small: ..." - -* Sat Jul 18 2015 Eric Paris - 1.0.0-0.7.gitb2dafda -- Update apiserver binary gid - -* Fri Jul 17 2015 jchaloup - 1.0.0-0.6.gitb2dafda -- Bump to upstream b2dafdaef5aceafad503ab56254b60f80da9e980 - related: #1211266 - -* Thu Jul 16 2015 jchaloup - 1.0.0-0.5.git596a8a4 -- Bump to upstream 596a8a40d12498b5335140f50753980bfaea4f6b - related: #1211266 - -* Wed Jul 15 2015 jchaloup - 1.0.0-0.4.git6ba532b -- Bump to upstream 6ba532b218cb5f5ea3f0e8dce5395182f388536c - related: #1211266 - -* Tue Jul 14 2015 jchaloup - 1.0.0-0.3.gitc616182 -- Bump to upstream c6161824db3784e6156131307a5e94647e5557fd - related: #1211266 - -* Mon Jul 13 2015 jchaloup - 1.0.0-0.2.git2c27b1f -- Bump to upstream 2c27b1fa64f4e70f04575d1b217494f49332390e - related: #1211266 - -* Sat Jul 11 2015 jchaloup - 1.0.0-0.1.git1b37059 -- Bump to upstream 1b370599ccf271741e657335c4943cb8c7dba28b - related: #1211266 - -* Fri Jul 10 2015 jchaloup - 0.21.1-0.2.gitccc4cfc -- Bump to upstream ccc4cfc7e11e0f127ac1cea045017dd799be3c63 - related: #1211266 - -* Thu Jul 09 2015 jchaloup - 0.21.1-0.1.git41f8907 -- Update generating of man pages from md (add genmanpages.sh) -- Bump to upstream 41f89075396329cd46c58495c7d3f7e13adcaa96 - related: #1211266 - -* Wed Jul 08 2015 jchaloup - 0.20.2-0.5.git77be29e -- Bump to upstream 77be29e3da71f0a136b6aa4048b2f0575c2598e4 - related: #1211266 - -* Tue Jul 07 2015 jchaloup - 0.20.2-0.4.git639a7da -- Bump to upstream 639a7dac50a331414cc6c47083323388da0d8756 - related: #1211266 - -* Mon Jul 06 2015 jchaloup - 0.20.2-0.3.gitbb6f2f7 -- Bump to upstream bb6f2f7ad90596d624d84cc691eec0f518e90cc8 - related: #1211266 - -* Fri Jul 03 2015 jchaloup - 0.20.2-0.2.git974377b -- Bump to upstream 974377b3064ac59b6e5694bfa568d67128026171 - related: #1211266 - -* Thu Jul 02 2015 jchaloup - 0.20.2-0.1.gitef41ceb -- Bump to upstream ef41ceb3e477ceada84c5522f429f02ab0f5948e - related: #1211266 - -* Tue Jun 30 2015 jchaloup - 0.20.0-0.3.git835eded -- Bump to upstream 835eded2943dfcf13a89518715e4be842a6a3ac0 -- Generate missing man pages - related: #1211266 - -* Mon Jun 29 2015 jchaloup - 0.20.0-0.2.git1c0b765 -- Bump to upstream 1c0b765df6dabfe9bd0e20489ed3bd18e6b3bda8 - Comment out missing man pages - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.20.0-0.1.git8ebd896 -- Bump to upstream 8ebd896351513d446d56bc5785c070d2909226a3 - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.19.3-0.6.git712f303 -- Bump to upstream 712f303350b35e70a573f3cb19193c8ec7ee7544 - related: #1211266 - -* Thu Jun 25 2015 jchaloup - 0.19.3-0.5.git2803b86 -- Bump to upstream 2803b86a42bf187afa816a7ce14fec754cc2af51 - related: #1211266 - -* Wed Jun 24 2015 Eric Paris - 0.19.3-0.4.git5b4dc4e -- Set CAP_NET_BIND_SERVICE on the kube-apiserver so it can use 443 - -* Wed Jun 24 2015 jchaloup - 0.19.3-0.3.git5b4dc4e -- Bump to upstream 5b4dc4edaa14e1ab4e3baa19df0388fa54dab344 - pkg/cloudprovider/* packages does not conform to golang language specification - related: #1211266 - -* Tue Jun 23 2015 jchaloup - 0.19.3-0.2.gita2ce3ea -- Bump to upstream a2ce3ea5293553b1fe0db3cbc6d53bdafe061d79 - related: #1211266 - -* Mon Jun 22 2015 jchaloup - 0.19.1-0.1.gitff0546d -- Bump to upstream ff0546da4fc23598de59db9f747c535545036463 - related: #1211266 - -* Fri Jun 19 2015 jchaloup - 0.19.0-0.7.gitb2e9fed -- Bump to upstream b2e9fed3490274509506285bdba309c50afb5c39 - related: #1211266 - -* Thu Jun 18 2015 jchaloup - 0.19.0-0.6.gitf660940 -- Bump to upstream f660940dceb3fe6ffb1b14ba495a47d91b5cd910 - related: #1211266 - -* Wed Jun 17 2015 jchaloup - 0.19.0-0.5.git43889c6 -- Bump to upstream 43889c612c4d396dcd8fbf3fbd217e106eaf5bce - related: #1211266 - -* Tue Jun 16 2015 jchaloup - 0.19.0-0.4.gita8269e3 -- Bump to upstream a8269e38c9e2bf81ba18cd6420e2309745d5b0b9 - related: #1211266 - -* Sun Jun 14 2015 jchaloup - 0.19.0-0.3.git5e5c1d1 -- Bump to upstream 5e5c1d10976f2f26d356ca60ef7d0d715c9f00a2 - related: #1211266 - -* Fri Jun 12 2015 jchaloup - 0.19.0-0.2.git0ca96c3 -- Bump to upstream 0ca96c3ac8b47114169f3b716ae4521ed8c7657c - related: #1211266 - -* Thu Jun 11 2015 jchaloup - 0.19.0-0.1.git5a02fc0 -- Bump to upstream 5a02fc07d8a943132b9e68fe7169778253318487 - related: #1211266 - -* Wed Jun 10 2015 jchaloup - 0.18.2-0.3.git0dfb681 -- Bump to upstream 0dfb681ba5d5dba535895ace9d650667904b5df7 - related: #1211266 - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.2.gitb68e08f -- golang-cover is not needed - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.1.gitb68e08f -- Bump to upstream b68e08f55f5ae566c4ea3905d0993a8735d6d34f - related: #1211266 - -* Sat Jun 06 2015 jchaloup - 0.18.1-0.3.git0f1c4c2 -- Bump to upstream 0f1c4c25c344f70c3592040b2ef092ccdce0244f - related: #1211266 - -* Fri Jun 05 2015 jchaloup - 0.18.1-0.2.git7309e1f -- Bump to upstream 7309e1f707ea5dd08c51f803037d7d22c20e2b92 - related: #1211266 - -* Thu Jun 04 2015 jchaloup - 0.18.1-0.1.gita161edb -- Bump to upstream a161edb3960c01ff6e14813858c2eeb85910009b - related: #1211266 - -* Wed Jun 03 2015 jchaloup - 0.18.0-0.3.gitb5a91bd -- Bump to upstream b5a91bda103ed2459f933959241a2b57331747ba -- Don't run %%check section (kept only for local run). Tests are now handled via CI. - related: #1211266 - -* Tue Jun 02 2015 jchaloup - 0.18.0-0.2.git5520386 -- Bump to upstream 5520386b180d3ddc4fa7b7dfe6f52642cc0c25f3 - related: #1211266 - -* Mon Jun 01 2015 jchaloup - 0.18.0-0.1.git0bb78fe -- Bump to upstream 0bb78fe6c53ce38198cc3805c78308cdd4805ac8 - related: #1211266 - -* Fri May 29 2015 jchaloup - 0.17.1-6 -- Bump to upstream ed4898d98c46869e9cbdb44186dfdeda9ff80cc2 - related: #1211266 - -* Thu May 28 2015 jchaloup - 0.17.1-5 -- Bump to upstream 6fa2777e26559fc008eacac83eb165d25bd9a7de - related: #1211266 - -* Tue May 26 2015 jchaloup - 0.17.1-4 -- Bump to upstream 01fcb58673001e56c69e128ab57e0c3f701aeea5 - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-3 -- Decompose package into master and node subpackage. - Thanks to Avesh for testing and patience. - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-2 -- Bump to upstream cf7b0bdc2a41d38613ac7f8eeea91cae23553fa2 - related: #1211266 - -* Fri May 22 2015 jchaloup - 0.17.1-1 -- Bump to upstream d9d12fd3f7036c92606fc3ba9046b365212fcd70 - related: #1211266 - -* Wed May 20 2015 jchaloup - 0.17.0-12 -- Bump to upstream a76bdd97100c66a46e2b49288540dcec58a954c4 - related: #1211266 - -* Tue May 19 2015 jchaloup - 0.17.0-11 -- Bump to upstream 10339d72b66a31592f73797a9983e7c207481b22 - related: #1211266 - -* Mon May 18 2015 jchaloup - 0.17.0-10 -- Bump to upstream efb42b302d871f7217394205d84e5ae82335d786 - related: #1211266 - -* Sat May 16 2015 jchaloup - 0.17.0-9 -- Bump to upstream d51e131726b925e7088b90915e99042459b628e0 - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-8 -- Bump to upstream 1ee33ac481a14db7b90e3bbac8cec4ceea822bfb - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-7 -- Bump to upstream d3c6fb0d6a13c0177dcd67556d72963c959234ea - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-6 -- Bump to upstream f57f31783089f41c0bdca8cb87a1001ca94e1a45 - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-5 -- Bump to upstream c90d381d0d5cf8ab7b8412106f5a6991d7e13c7d - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-4 -- Bump to upstream 5010b2dde0f9b9eb820fe047e3b34bc9fa6324de -- Add debug info - related: #1211266 - -* Wed May 13 2015 jchaloup - 0.17.0-3 -- Bump to upstream ec19d41b63f5fe7b2c939e7738a41c0fbe65d796 - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-2 -- Provide /usr/bin/kube-version-change binary - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-1 -- Bump to upstream 962f10ee580eea30e5f4ea725c4e9e3743408a58 - related: #1211266 - -* Mon May 11 2015 jchaloup - 0.16.2-7 -- Bump to upstream 63182318c5876b94ac9b264d1224813b2b2ab541 - related: #1211266 - -* Fri May 08 2015 jchaloup - 0.16.2-6 -- Bump to upstream d136728df7e2694df9e082902f6239c11b0f2b00 -- Add NetworkManager as dependency for /etc/resolv.conf - related: #1211266 - -* Thu May 07 2015 jchaloup - 0.16.2-5 -- Bump to upstream ca0f678b9a0a6dc795ac7a595350d0dbe9d0ac3b - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-4 -- Add docs to kubernetes-unit-test - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-3 -- Bump to upstream 3a24c0e898cb3060d7905af6df275a3be562451d - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-2 -- Add api and README.md to kubernetes-unit-test - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-1 -- Bump to upstream 72048a824ca16c3921354197953fabecede5af47 - related: #1211266 - -* Mon May 04 2015 jchaloup - 0.16.1-2 -- Bump to upstream 1dcd80cdf3f00409d55cea1ef0e7faef0ae1d656 - related: #1211266 - -* Sun May 03 2015 jchaloup - 0.16.1-1 -- Bump to upstream 86751e8c90a3c0e852afb78d26cb6ba8cdbc37ba - related: #1211266 - -* Fri May 01 2015 jchaloup - 0.16.0-2 -- Bump to upstream 72708d74b9801989ddbdc8403fc5ba4aafb7c1ef - related: #1211266 - -* Wed Apr 29 2015 jchaloup - 0.16.0-1 -- Bump to upstream 7dcce2eeb7f28643d599c8b6a244523670d17c93 - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-10 -- Add unit-test subpackage - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-9 -- Bump to upstream 99fc906f78cd2bcb08536c262867fa6803f816d5 - related: #1211266 - -* Mon Apr 27 2015 jchaloup - 0.15.0-8 -- Bump to upstream 051dd96c542799dfab39184d2a7c8bacf9e88d85 - related: #1211266 - -* Fri Apr 24 2015 jchaloup - 0.15.0-7 -- Bump to upstream 9f753c2592481a226d72cea91648db8fb97f0da8 - related: #1211266 - -* Thu Apr 23 2015 jchaloup - 0.15.0-6 -- Bump to upstream cf824ae5e07965ba0b4b15ee88e08e2679f36978 - related: #1211266 - -* Tue Apr 21 2015 jchaloup - 0.15.0-5 -- Bump to upstream 21788d8e6606038a0a465c97f5240b4e66970fbb - related: #1211266 - -* Mon Apr 20 2015 jchaloup - 0.15.0-4 -- Bump to upstream eb1ea269954da2ce557f3305fa88d42e3ade7975 - related: #1211266 - -* Fri Apr 17 2015 jchaloup - 0.15.0-3 -- Obsolete cadvisor as it is integrated in kubelet - related: #1211266 - -* Wed Apr 15 2015 jchaloup - 0.15.0-0.2.git0ea87e4 -- Bump to upstream 0ea87e486407298dc1e3126c47f4076b9022fb09 - related: #1211266 - -* Tue Apr 14 2015 jchaloup - 0.15.0-0.1.gitd02139d -- Bump to upstream d02139d2b454ecc5730cc535d415c1963a7fb2aa - related: #1211266 - -* Sun Apr 12 2015 jchaloup - 0.14.2-0.2.gitd577db9 -- Bump to upstream d577db99873cbf04b8e17b78f17ec8f3a27eca30 - -* Wed Apr 08 2015 jchaloup - 0.14.2-0.1.git2719194 -- Bump to upstream 2719194154ffd38fd1613699a9dd10a00909957e - Use etcd-2.0.8 and higher - -* Tue Apr 07 2015 jchaloup - 0.14.1-0.2.gitd2f4734 -- Bump to upstream d2f473465738e6b6f7935aa704319577f5e890ba - -* Thu Apr 02 2015 jchaloup - 0.14.1-0.1.gita94ffc8 -- Bump to upstream a94ffc8625beb5e2a39edb01edc839cb8e59c444 - -* Wed Apr 01 2015 jchaloup - 0.14.0-0.2.git8168344 -- Bump to upstream 81683441b96537d4b51d146e39929b7003401cd5 - -* Tue Mar 31 2015 jchaloup - 0.14.0-0.1.git9ed8761 -- Bump to upstream 9ed87612d07f75143ac96ad90ff1ff68f13a2c67 -- Remove [B]R from devel branch until the package has stable API - -* Mon Mar 30 2015 jchaloup - 0.13.2-0.6.git8a7a127 -- Bump to upstream 8a7a127352263439e22253a58628d37a93fdaeb2 - -* Fri Mar 27 2015 jchaloup - 0.13.2-0.5.git8d94c43 -- Bump to upstream 8d94c43e705824f23791b66ad5de4ea095d5bb32 - resolves: #1205362 - -* Wed Mar 25 2015 jchaloup - 0.13.2-0.4.git455fe82 -- Bump to upstream 455fe8235be8fd9ba0ce21bf4f50a69d42e18693 - -* Mon Mar 23 2015 jchaloup - 0.13.2-0.3.gitef75888 -- Remove runtime dependency on etcd - resolves: #1202923 - -* Sun Mar 22 2015 jchaloup - 0.13.2-0.2.gitef75888 -- Bump to upstream ef758881d108bb53a128126c503689104d17f477 - -* Fri Mar 20 2015 jchaloup - 0.13.2-0.1.gita8f2cee -- Bump to upstream a8f2cee8c5418676ee33a311fad57d6821d3d29a - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.9.git53b25a7 -- Bump to upstream 53b25a7890e31bdec6f2a95b32200d6cc27ae2ca - fix kube-proxy.service and kubelet - resolves: #1200919 #1200924 - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.8.git39dceb1 -- Bump to upstream 39dceb13a511a83963a766a439cb386d10764310 - -* Thu Mar 12 2015 Eric Paris - 0.12.0-0.7.gita3fd0a9 -- Move from /etc/tmpfiles.d to %%{_tmpfilesdir} - resolves: #1200969 - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.6.gita3fd0a9 -- Place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /etc/tmpfiles.d/kubernetes.conf - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.5.gita3fd0a9 -- Bump to upstream a3fd0a9fd516bb6033f32196ae97aaecf8c096b1 - -* Tue Mar 10 2015 jchaloup - 0.12.0-0.4.gita4d871a -- Bump to upstream a4d871a10086436557f804930812f2566c9d4d39 - -* Fri Mar 06 2015 jchaloup - 0.12.0-0.3.git2700871 -- Bump to upstream 2700871b049d5498167671cea6de8317099ad406 - -* Thu Mar 05 2015 jchaloup - 0.12.0-0.2.git8b627f5 -- Bump to upstream 8b627f516fd3e4f62da90d401ceb3d38de6f8077 - -* Tue Mar 03 2015 jchaloup - 0.12.0-0.1.gitecca426 -- Bump to upstream ecca42643b91a7117de8cd385b64e6bafecefd65 - -* Mon Mar 02 2015 jchaloup - 0.11.0-0.5.git6c5b390 -- Bump to upstream 6c5b390160856cd8334043344ef6e08568b0a5c9 - -* Sat Feb 28 2015 jchaloup - 0.11.0-0.4.git0fec31a -- Bump to upstream 0fec31a11edff14715a1efb27f77262a7c3770f4 - -* Fri Feb 27 2015 jchaloup - 0.11.0-0.3.git08402d7 -- Bump to upstream 08402d798c8f207a2e093de5a670c5e8e673e2de - -* Wed Feb 25 2015 jchaloup - 0.11.0-0.2.git86434b4 -- Bump to upstream 86434b4038ab87ac40219562ad420c3cc58c7c6b - -* Tue Feb 24 2015 jchaloup - 0.11.0-0.1.git754a2a8 -- Bump to upstream 754a2a8305c812121c3845d8293efdd819b6a704 - turn off integration tests until "FAILED: unexpected endpoints: - timed out waiting for the condition" problem is resolved - Adding back devel subpackage ([B]R list outdated) - -* Fri Feb 20 2015 jchaloup - 0.10.1-0.3.git4c87805 -- Bump to upstream 4c87805870b1b22e463c4bd711238ef68c77f0af - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.2.git6f84bda -- Bump to upstream 6f84bdaba853872dbac69c84d3ab4b6964e85d8c - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.1.git7d6130e -- Bump to upstream 7d6130edcdfabd7dd2e6a06fdc8fe5e333f07f5c - -* Sat Feb 07 2015 jchaloup - 0.9.1-0.7.gitc9c98ab -- Bump to upstream c9c98ab19eaa6f0b2ea17152c9a455338853f4d0 - Since some dependencies are broken, we can not build Kubernetes from Fedora deps. - Switching to vendored source codes until Go draft is resolved - -* Wed Feb 04 2015 jchaloup - 0.9.1-0.6.git7f5ed54 -- Bump to upstream 7f5ed541f794348ae6279414cf70523a4d5133cc - -* Tue Feb 03 2015 jchaloup - 0.9.1-0.5.git2ac6bbb -- Bump to upstream 2ac6bbb7eba7e69eac71bd9acd192cda97e67641 - -* Mon Feb 02 2015 jchaloup - 0.9.1-0.4.gite335e2d -- Bump to upstream e335e2d3e26a9a58d3b189ccf41ceb3770d1bfa9 - -* Fri Jan 30 2015 jchaloup - 0.9.1-0.3.git55793ac -- Bump to upstream 55793ac2066745f7243c666316499e1a8cf074f0 - -* Thu Jan 29 2015 jchaloup - 0.9.1-0.2.gitca6de16 -- Bump to upstream ca6de16df7762d4fc9b4ad44baa78d22e3f30742 - -* Tue Jan 27 2015 jchaloup - 0.9.1-0.1.git3623a01 -- Bump to upstream 3623a01bf0e90de6345147eef62894057fe04b29 -- update tests for etcd-2.0 - -* Thu Jan 22 2015 jchaloup - 0.8.2-571.gitb2f287c -+- Bump to upstream b2f287c259d856f4c08052a51cd7772c563aff77 - -* Thu Jan 22 2015 Eric Paris - 0.8.2-570.gitb2f287c -- patch kubelet service file to use docker.service not docker.socket - -* Wed Jan 21 2015 jchaloup - 0.8.2-0.1.git5b04640 -- Bump to upstream 5b046406a957a1e7eda7c0c86dd7a89e9c94fc5f - -* Sun Jan 18 2015 jchaloup - 0.8.0-126.0.git68298f0 -- Add some missing dependencies -- Add devel subpackage - -* Fri Jan 09 2015 Eric Paris - 0.8.0-125.0.git68298f0 -- Bump to upstream 68298f08a4980f95dfbf7b9f58bfec1808fb2670 - -* Tue Dec 16 2014 Eric Paris - 0.7.0-18.0.git52e165a -- Bump to upstream 52e165a4fd720d1703ebc31bd6660e01334227b8 - -* Mon Dec 15 2014 Eric Paris - 0.6-297.0.git5ef34bf -- Bump to upstream 5ef34bf52311901b997119cc49eff944c610081b - -* Wed Dec 03 2014 Eric Paris -- Replace patch to use old googlecode/go.net/ with BuildRequires on golang.org/x/net/ - -* Tue Dec 02 2014 Eric Paris - 0.6-4.0.git993ef88 -- Bump to upstream 993ef88eec9012b221f79abe8f2932ee97997d28 - -* Mon Dec 01 2014 Eric Paris - 0.5-235.0.git6aabd98 -- Bump to upstream 6aabd9804fb75764b70e9172774002d4febcae34 - -* Wed Nov 26 2014 Eric Paris - 0.5-210.0.gitff1e9f4 -- Bump to upstream ff1e9f4c191342c24974c030e82aceaff8ea9c24 - -* Tue Nov 25 2014 Eric Paris - 0.5-174.0.git64e07f7 -- Bump to upstream 64e07f7fe03d8692c685b09770c45f364967a119 - -* Mon Nov 24 2014 Eric Paris - 0.5-125.0.git162e498 -- Bump to upstream 162e4983b947d2f6f858ca7607869d70627f5dff - -* Fri Nov 21 2014 Eric Paris - 0.5-105.0.git3f74a1e -- Bump to upstream 3f74a1e9f56b3c3502762930c0c551ccab0557ea - -* Thu Nov 20 2014 Eric Paris - 0.5-65.0.gitc6158b8 -- Bump to upstream c6158b8aa9c40fbf1732650a8611429536466b21 -- include go-restful build requirement - -* Tue Nov 18 2014 Eric Paris - 0.5-14.0.gitdf0981b -- Bump to upstream df0981bc01c5782ad30fc45cb6f510f365737fc1 - -* Tue Nov 11 2014 Eric Paris - 0.4-680.0.git30fcf24 -- Bump to upstream 30fcf241312f6d0767c7d9305b4c462f1655f790 - -* Mon Nov 10 2014 Eric Paris - 0.4-633.0.git6c70227 -- Bump to upstream 6c70227a2eccc23966d32ea6d558ee05df46e400 - -* Fri Nov 07 2014 Eric Paris - 0.4-595.0.gitb695650 -- Bump to upstream b6956506fa2682afa93770a58ea8c7ba4b4caec1 - -* Thu Nov 06 2014 Eric Paris - 0.4-567.0.git3b1ef73 -- Bump to upstream 3b1ef739d1fb32a822a22216fb965e22cdd28e7f - -* Thu Nov 06 2014 Eric Paris - 0.4-561.0.git06633bf -- Bump to upstream 06633bf4cdc1ebd4fc848f85025e14a794b017b4 -- Make spec file more RHEL/CentOS friendly - -* Tue Nov 04 2014 Eric Paris - 0.4-0.0.git4452163 -- rebase to v0.4 -- include man pages - -* Tue Oct 14 2014 jchaloup - 0.3-0.3.git98ac8e1 -- create /var/lib/kubelet -- Use bash completions from upstream -- Bump to upstream 98ac8e178fcf1627399d659889bcb5fe25abdca4 -- all by Eric Paris - -* Mon Sep 29 2014 Jan Chaloupka - 0.3-0.2.git88fdb65 -- replace * with coresponding files -- remove dependency on gcc - -* Wed Sep 24 2014 Eric Paris - 0.1-0.4.git6ebe69a -- prefer autosetup instead of setup (revert setup change in 0-0.3.git) -https://fedoraproject.org/wiki/Autosetup_packaging_draft -- revert version number to 0.1 - -* Mon Sep 08 2014 Lokesh Mandvekar - 0-0.3.git6ebe69a -- gopath defined in golang package already -- package owns /etc/kubernetes -- bash dependency implicit -- keep buildroot/$RPM_BUILD_ROOT macros consistent -- replace with macros wherever possible -- set version, release and source tarball prep as per -https://fedoraproject.org/wiki/Packaging:SourceURL#Github - -* Mon Sep 08 2014 Eric Paris -- make services restart automatically on error - -* Sat Sep 06 2014 Eric Paris -- update to upstream -- redo build to use project scripts -- use project scripts in %%check -- rework deletion of third_party packages to easily detect changes -- run apiserver and controller-manager as non-root - -* Mon Aug 11 2014 Adam Miller -- update to upstream -- decouple the rest of third_party - -* Thu Aug 7 2014 Eric Paris -- update to head -- update package to include config files - -* Wed Jul 16 2014 Colin Walters -- Initial package diff --git a/kubernetes/kubernetes-1.23.1/centos/kubernetes.spec.orig b/kubernetes/kubernetes-1.23.1/centos/kubernetes.spec.orig deleted file mode 100644 index fd43ef4cd..000000000 --- a/kubernetes/kubernetes-1.23.1/centos/kubernetes.spec.orig +++ /dev/null @@ -1,2282 +0,0 @@ -%if 0%{?fedora} -%global with_devel 1 -%global with_bundled 0 -%global with_debug 1 -%else -%global with_devel 0 -%global with_bundled 1 -%global with_debug 0 -%endif - -%if 0%{?with_debug} -# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 -%global _dwz_low_mem_die_limit 0 -%else -%global debug_package %{nil} -%endif - -%global provider github -%global provider_tld com -%global project kubernetes -%global repo kubernetes -# https://github.com/kubernetes/kubernetes - -%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} -%global import_path k8s.io/kubernetes -%global commit fc32d2f3698e36b93322a3465f63a14e9f0eaead -%global shortcommit %(c=%{commit}; echo ${c:0:7}) - -%global con_provider github -%global con_provider_tld com -%global con_project kubernetes -%global con_repo contrib -# https://github.com/kubernetes/contrib -%global con_provider_prefix %{con_provider}.%{con_provider_tld}/%{con_project}/%{con_repo} -%global con_commit 5b445f1c53aa8d6457523526340077935f62e691 -%global con_shortcommit %(c=%{con_commit}; echo ${c:0:7}) - -%global kube_version 1.10.0 -%global kube_git_version v%{kube_version} - -# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work -%global _buildshell /bin/bash -%global _checkshell /bin/bash - -############################################## -Name: kubernetes -Version: %{kube_version} -Release: 1%{?dist} -Summary: Container cluster management -License: ASL 2.0 -URL: https://%{import_path} -ExclusiveArch: x86_64 aarch64 ppc64le s390x -Source0: https://%{provider_prefix}/archive/%{commit}/%{repo}-%{shortcommit}.tar.gz -Source1: https://%{con_provider_prefix}/archive/%{con_commit}/%{con_repo}-%{con_shortcommit}.tar.gz -Source3: kubernetes-accounting.conf -Source4: kubeadm.conf - -Source33: genmanpages.sh - -Patch3: build-with-debug-info.patch -#Patch4: make-test-cmd-run-over-hyperkube-based-kubectl.patch -#Patch5: make-e2e_node-run-over-distro-bins.patch - -# ppc64le -Patch16: fix-support-for-ppc64le.patch - -Patch20: use_go_build-is-not-fully-propagated-so-make-it-fixe.patch - -# It obsoletes cadvisor but needs its source code (literally integrated) -Obsoletes: cadvisor - -# kubernetes is decomposed into master and node subpackages -# require both of them for updates -Requires: kubernetes-master = %{version}-%{release} -Requires: kubernetes-node = %{version}-%{release} - -%description -%{summary} - -%if 0%{?with_devel} -%package devel -Summary: %{summary} -BuildArch: noarch - -Provides: golang(%{import_path}/cmd/genutils) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-apiserver/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-controller-manager/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kube-proxy/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubectl/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/kubelet/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/args) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/generators/normalization) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/install) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/test_apis/testgroup.k8s.io/v1) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/client-gen/testoutput/clientset_generated/test_internalclientset/typed/testgroup.k8s.io/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/conversion-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/deepcopy-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/generator) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/go-to-protobuf/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/import-boss/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/namer) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/parser) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/set-gen/generators) = %{version}-%{release} -Provides: golang(%{import_path}/cmd/libs/go2idl/types) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/install) = %{version}-%{release} -Provides: golang(%{import_path}/federation/apis/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_internalclientset/typed/federation/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_3/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/federation/client/clientset_generated/federation_release_1_4/typed/federation/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/federation/pkg/federation-controller/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/admission) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/annotations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/endpoints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/errors/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/meta/metatypes) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/rest/resttest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/testing/compat) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/unversioned/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apimachinery/registered) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v0) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/abac/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/apps/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authentication/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/authorization/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/autoscaling/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/v2alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/batch/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/certificates/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/componentconfig/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/extensions/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/imagepolicy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/policy/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/rbac/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apis/storage/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/audit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/apiserver/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authenticator/bearertoken) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/abac) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/authorizer/union) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/handlers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/auth/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/chaosclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authentication/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/authorization/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/autoscaling/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/batch/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/certificates/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/core/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/extensions/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/rbac/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/internalclientset/typed/storage/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_2/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_3/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/authorization/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/autoscaling/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/batch/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/core/v1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/extensions/v1beta1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/clientset_generated/release_1_4/typed/policy/v1alpha1/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/leaderelection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/metrics/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/record) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/restclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/testing/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/transport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/discovery/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/typed/dynamic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/adapters/internalclientset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/auth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/clientcmd/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/client/unversioned/testclient/simple) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/azure) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/cloudstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/fake) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/gce) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/mesos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/openstack) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/ovirt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/rackspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/cloudprovider/providers/vsphere) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/daemon) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/deployment/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/disruption) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/framework/informers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/garbagecollector/metaonly) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podautoscaler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/podgc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replicaset/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/replication) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/route) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/statusupdater) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/attachdetach/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/controller/volume/persistentvolume/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/conversion/queryparams) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/aws) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/credentialprovider/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/dns) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fieldpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/fields) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/openapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/options) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/genericapiserver/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/healthz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/httplog) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/hyperkube) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/rollout) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/set) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/templates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/editor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/cmd/util/jsonmerge) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/metricsutil) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/resource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubectl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/api/v1alpha1/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cadvisor/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/client) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/cm) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/container/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/custommetrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockershim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/dockertools) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/envvars) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/events) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/eviction) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/images) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/kuberuntime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/leaky) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/cni/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hairpin) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/hostport/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/kubenet) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/mock_network) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/network/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pleg) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/pod/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/results) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/prober/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/qos) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/remote) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rkt/mock_os) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/rktshim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/portforward) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/remotecommand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/server/stats) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/status) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/format) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/ioutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/queue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/util/sliceutils) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/populator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubelet/volumemanager/reconciler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/kubemark) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/master/ports) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/http) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/probe/tcp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/healthcheck) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/proxy/userspace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/evaluator/core) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/quota/install) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/subjectaccessreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/authorization/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/cachesize) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/certificates/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrole/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/clusterrolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/componentstatus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/configmap/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/daemonset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/deployment/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/endpoint/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/event/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/experimental/controller/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/registry) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/generic/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/horizontalpodautoscaler/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/ingress/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/job/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/limitrange/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/namespace/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/networkpolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/node/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolume/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/persistentvolumeclaim/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/petset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/pod/rest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/poddisruptionbudget/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podsecuritypolicy/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/podtemplate/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rangeallocation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/registrytest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/replicaset/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/resourcequota/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/role/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/rolebinding/policybased) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/scheduledjob/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/secret/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/securitycontextconstraints/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/allocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/ipallocator/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/service/portallocator/controller) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/serviceaccount/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/storageclass/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresource/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/thirdpartyresourcedata/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/registry/tokenreview) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/protobuf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/recognizer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/streaming) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/versioning) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/runtime/serializer/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/apparmor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/security/podsecuritypolicy/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontext) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/capabilities) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/group) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/seccomp) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/user) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/securitycontextconstraints/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/selection) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ssh) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/etcdtest) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/testing/testingcert) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/etcd3) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/storagebackend/factory) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/storage/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/ui) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/async) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/bandwidth) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/cache) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/certificates) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chmod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/chown) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/clock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/codeinspector) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/config) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/configz) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crlf) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/crypto) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/dbus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/diff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/ebtables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/env) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/errors) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/exec) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flock) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flowcontrol) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/flushwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/framer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/goroutinemap/exponentialbackoff) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/hash) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/homedir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/httpstream/spdy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/integer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/interrupt) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/intstr) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/io) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/iptables/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/jsonpath) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/keymutex) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/labels) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/limitwriter) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/logs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/maps) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/mount) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/net/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/node) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/oom) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/parsers) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/pod) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/procfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/proxy) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rand) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/replicaset) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/resourcecontainer) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/rlimit) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/runtime) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/selinux) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sets/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/slice) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strategicpatch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/strings) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/sysctl/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/system) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/term) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/threading) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/uuid) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/validation/field) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wait) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/workqueue) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/wsstream) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/util/yaml) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/prometheus) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/version/verflag) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/aws_ebs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_dd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/azure_file) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cephfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/cinder) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/configmap) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/downwardapi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/empty_dir) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/fc) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flexvolume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/flocker) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/gce_pd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/git_repo) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/glusterfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/host_path) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/iscsi) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/nfs) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/quobyte) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/rbd) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/secret) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/testing) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/nestedpendingoperations) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/operationexecutor) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/types) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/util/volumehelper) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/volume/vsphere_volume) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/json) = %{version}-%{release} -Provides: golang(%{import_path}/pkg/watch/versioned) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/cmd/kube-scheduler/app/options) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/admit) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/alwayspullimages) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/antiaffinity) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/deny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/exec) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/imagepolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/initialresources) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/limitranger) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/autoprovision) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/exists) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/namespace/lifecycle) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/persistentvolume/label) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/resourcequota) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/security/podsecuritypolicy) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/securitycontext/scdeny) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/serviceaccount) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/admission/storageclass/default) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/allow) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/keystone) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/password/passwordfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/basicauth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/union) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/request/x509) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/oidc/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokenfile) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/tokentest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authenticator/token/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/rbac) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/auth/authorizer/webhook) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/gcp) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/client/auth/oidc) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/predicates) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithm/priorities/util) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/algorithmprovider/defaults) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/latest) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/v1) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/api/validation) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/factory) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/metrics) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/schedulercache) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/scheduler/testing) = %{version}-%{release} -Provides: golang(%{import_path}/plugin/pkg/webhook) = %{version}-%{release} - -%description devel -Libraries for building packages importing k8s.io/kubernetes. -Currently, the devel is not suitable for development. -It is meant only as a buildtime dependency for other projects. - -This package contains library source intended for -building other packages which use %{project}/%{repo}. -%endif - -############################################## -%package unit-test -Summary: %{summary} - for running unit tests - -# below Rs used for testing -Requires: golang >= 1.2-7 -Requires: etcd >= 2.0.9 -Requires: hostname -Requires: rsync -Requires: NetworkManager - -%description unit-test -%{summary} - for running unit tests - -############################################## -%package master -Summary: Kubernetes services for master host - -BuildRequires: golang >= 1.2-7 -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: kubernetes-client = %{version}-%{release} - -# if node is installed with node, version and release must be the same -Conflicts: kubernetes-node < %{version}-%{release} -Conflicts: kubernetes-node > %{version}-%{release} - -%description master -Kubernetes services for master host - -############################################## -%package node -Summary: Kubernetes services for node host - -%if 0%{?fedora} >= 27 -Requires: (docker or docker-ce) -Suggests: docker -%else -Requires: docker -%endif -Requires: conntrack-tools - -BuildRequires: golang >= 1.2-7 -BuildRequires: systemd -BuildRequires: rsync -BuildRequires: go-md2man -BuildRequires: go-bindata - -Requires(pre): shadow-utils -Requires: socat -Requires: kubernetes-client = %{version}-%{release} - -# if master is installed with node, version and release must be the same -Conflicts: kubernetes-master < %{version}-%{release} -Conflicts: kubernetes-master > %{version}-%{release} - -%description node -Kubernetes services for node host - -############################################## -%package kubeadm -Summary: Kubernetes tool for standing up clusters -Requires: kubernetes-node = %{version}-%{release} -Requires: containernetworking-cni - -%description kubeadm -Kubernetes tool for standing up clusters - -############################################## -%package client -Summary: Kubernetes client tools - -BuildRequires: golang >= 1.2-7 -BuildRequires: go-bindata - -%description client -Kubernetes client tools like kubectl - -############################################## - -%prep -%setup -q -n %{con_repo}-%{con_commit} -T -b 1 -%setup -q -n %{repo}-%{commit} - -%if 0%{?with_debug} -%patch3 -p1 -%endif - -%patch20 -p1 - -# copy contrib folder -mkdir contrib -cp -r ../%{con_repo}-%{con_commit}/init contrib/. - -#src/k8s.io/kubernetes/pkg/util/certificates -# Patch the code to remove eliptic.P224 support -for dir in vendor/github.com/google/certificate-transparency/go/x509 pkg/util/certificates; do - if [ -d "${dir}" ]; then - pushd ${dir} - sed -i "/^[^=]*$/ s/oidNamedCurveP224/oidNamedCurveP256/g" *.go - sed -i "/^[^=]*$/ s/elliptic\.P224/elliptic.P256/g" *.go - popd - fi -done - -# Move all the code under src/k8s.io/kubernetes directory -mkdir -p src/k8s.io/kubernetes -mv $(ls | grep -v "^src$") src/k8s.io/kubernetes/. - -# Patch tests to be run over distro bins -#patch4 -p1 -#patch5 -p1 - -%ifarch ppc64le -%patch16 -p1 -%endif - -############### - -%build -pushd src/k8s.io/kubernetes/ -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=%{commit} -export KUBE_GIT_VERSION=%{kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace - -# https://bugzilla.redhat.com/show_bug.cgi?id=1392922#c1 -%ifarch ppc64le -export GOLDFLAGS='-linkmode=external' -%endif -make WHAT="--use_go_build cmd/hyperkube cmd/kube-apiserver cmd/kubeadm" - -# convert md to man -./hack/generate-docs.sh || true -pushd docs -pushd admin -cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. -popd -cp %{SOURCE33} genmanpages.sh -bash genmanpages.sh -popd -popd - -%install -pushd src/k8s.io/kubernetes/ -. hack/lib/init.sh -kube::golang::setup_env - -%ifarch ppc64le -output_path="_output/local/go/bin" -%else -output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" -%endif - -install -m 755 -d %{buildroot}%{_bindir} - -echo "+++ INSTALLING hyperkube" -install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/hyperkube - -echo "+++ INSTALLING kube-apiserver" -install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver - -echo "+++ INSTALLING kubeadm" -install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/kubeadm -install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d -install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service.d %{SOURCE4} - -binaries=(kube-controller-manager kube-scheduler kube-proxy kubelet kubectl) -for bin in "${binaries[@]}"; do - echo "+++ HARDLINKING ${bin} to hyperkube" - ln %{buildroot}%{_bindir}/hyperkube %{buildroot}%{_bindir}/${bin} -done - -# install the bash completion -install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/ -%{buildroot}%{_bindir}/kubectl completion bash > %{buildroot}%{_datadir}/bash-completion/completions/kubectl - -# install config files -install -d -m 0755 %{buildroot}%{_sysconfdir}/%{name} -install -m 644 -t %{buildroot}%{_sysconfdir}/%{name} contrib/init/systemd/environ/* - -# install service files -install -d -m 0755 %{buildroot}%{_unitdir} -install -m 0644 -t %{buildroot}%{_unitdir} contrib/init/systemd/*.service - -# install manpages -install -d %{buildroot}%{_mandir}/man1 -install -p -m 644 docs/man/man1/* %{buildroot}%{_mandir}/man1 -rm %{buildroot}%{_mandir}/man1/cloud-controller-manager.* -# from k8s tarball copied docs/man/man1/*.1 - -# install the place the kubelet defaults to put volumes -install -d %{buildroot}%{_sharedstatedir}/kubelet - -# place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /usr/lib/tmpfiles.d/kubernetes.conf -install -d -m 0755 %{buildroot}%{_tmpfilesdir} -install -p -m 0644 -t %{buildroot}/%{_tmpfilesdir} contrib/init/systemd/tmpfiles.d/kubernetes.conf -mkdir -p %{buildroot}/run -install -d -m 0755 %{buildroot}/run/%{name}/ - -# enable CPU and Memory accounting -install -d -m 0755 %{buildroot}/%{_sysconfdir}/systemd/system.conf.d -install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system.conf.d %{SOURCE3} - -# source codes for building projects -%if 0%{?with_devel} -install -d -p %{buildroot}/%{gopath}/src/%{import_path}/ -echo "%%dir %%{gopath}/src/%%{import_path}/." >> devel.file-list -# find all *.go but no *_test.go files and generate devel.file-list -for file in $(find . -iname "*.go" \! -iname "*_test.go") ; do - echo "%%dir %%{gopath}/src/%%{import_path}/$(dirname $file)" >> devel.file-list - install -d -p %{buildroot}/%{gopath}/src/%{import_path}/$(dirname $file) - cp -pav $file %{buildroot}/%{gopath}/src/%{import_path}/$file - echo "%%{gopath}/src/%%{import_path}/$file" >> devel.file-list -done -%endif - -%if 0%{?with_devel} -sort -u -o devel.file-list devel.file-list -%endif - -popd - -%if 0%{?with_devel} -mv src/k8s.io/kubernetes/devel.file-list . -%endif - -mv src/k8s.io/kubernetes/*.md . -mv src/k8s.io/kubernetes/LICENSE . - - -# place files for unit-test rpm -install -d -m 0755 %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -# basically, everything from the root directory is needed -# unit-tests needs source code -# integration tests needs docs and other files -# test-cmd.sh atm needs cluster, examples and other -cp -a src %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/ -rm -rf %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/_output -cp -a *.md %{buildroot}%{_sharedstatedir}/kubernetes-unit-test/src/k8s.io/kubernetes/ - -%check -# Fedora, RHEL7 and CentOS are tested via unit-test subpackage -if [ 1 != 1 ]; then -echo "******Testing the commands*****" -hack/test-cmd.sh -echo "******Benchmarking kube********" -hack/benchmark-go.sh - -# In Fedora 20 and RHEL7 the go cover tools isn't available correctly -%if 0%{?fedora} >= 21 -echo "******Testing the go code******" -hack/test-go.sh -echo "******Testing integration******" -hack/test-integration.sh --use_go_build -%endif -fi - -############################################## -%files -# empty as it depends on master and node - -############################################## -%files master -%license LICENSE -%doc *.md -%{_mandir}/man1/kube-apiserver.1* -%{_mandir}/man1/kube-controller-manager.1* -%{_mandir}/man1/kube-scheduler.1* -%attr(754, -, kube) %caps(cap_net_bind_service=ep) %{_bindir}/kube-apiserver -%{_bindir}/kube-controller-manager -%{_bindir}/kube-scheduler -%{_bindir}/hyperkube -%{_unitdir}/kube-apiserver.service -%{_unitdir}/kube-controller-manager.service -%{_unitdir}/kube-scheduler.service -%dir %{_sysconfdir}/%{name} -%config(noreplace) %{_sysconfdir}/%{name}/apiserver -%config(noreplace) %{_sysconfdir}/%{name}/scheduler -%config(noreplace) %{_sysconfdir}/%{name}/config -%config(noreplace) %{_sysconfdir}/%{name}/controller-manager -%{_tmpfilesdir}/kubernetes.conf -%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} - -############################################## -%files node -%license LICENSE -%doc *.md -%{_mandir}/man1/kubelet.1* -%{_mandir}/man1/kube-proxy.1* -%{_bindir}/kubelet -%{_bindir}/kube-proxy -%{_bindir}/hyperkube -%{_unitdir}/kube-proxy.service -%{_unitdir}/kubelet.service -%dir %{_sharedstatedir}/kubelet -%dir %{_sysconfdir}/%{name} -%config(noreplace) %{_sysconfdir}/%{name}/config -%config(noreplace) %{_sysconfdir}/%{name}/kubelet -%config(noreplace) %{_sysconfdir}/%{name}/proxy -%config(noreplace) %{_sysconfdir}/systemd/system.conf.d/kubernetes-accounting.conf -%{_tmpfilesdir}/kubernetes.conf -%verify(not size mtime md5) %attr(755, kube,kube) %dir /run/%{name} - -############################################## -%files kubeadm -%license LICENSE -%doc *.md -%{_mandir}/man1/kubeadm.1* -%{_mandir}/man1/kubeadm-* -%{_bindir}/kubeadm -%dir %{_sysconfdir}/systemd/system/kubelet.service.d -%config(noreplace) %{_sysconfdir}/systemd/system/kubelet.service.d/kubeadm.conf - -############################################## -%files client -%license LICENSE -%doc *.md -%{_mandir}/man1/kubectl.1* -%{_mandir}/man1/kubectl-* -%{_bindir}/kubectl -%{_bindir}/hyperkube -%{_datadir}/bash-completion/completions/kubectl - -############################################## -%files unit-test -%{_sharedstatedir}/kubernetes-unit-test/ - -%if 0%{?with_devel} -%files devel -f devel.file-list -%doc *.md -%dir %{gopath}/src/k8s.io -%endif - -############################################## - -%pre master -getent group kube >/dev/null || groupadd -r kube -getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \ - -c "Kubernetes user" kube - -%post master -%systemd_post kube-apiserver kube-scheduler kube-controller-manager - -%preun master -%systemd_preun kube-apiserver kube-scheduler kube-controller-manager - -%postun master -%systemd_postun - - -%pre node -getent group kube >/dev/null || groupadd -r kube -getent passwd kube >/dev/null || useradd -r -g kube -d / -s /sbin/nologin \ - -c "Kubernetes user" kube - -%post node -%systemd_post kubelet kube-proxy -# If accounting is not currently enabled systemd reexec -if [[ `systemctl show docker kubelet | grep -q -e CPUAccounting=no -e MemoryAccounting=no; echo $?` -eq 0 ]]; then - systemctl daemon-reexec -fi - -%preun node -%systemd_preun kubelet kube-proxy - -%postun node -%systemd_postun - -############################################ -%changelog -* Tue Mar 27 2018 Spyros Trigazis - 1.10.0-1 -- Bump to upstream v1.10.0 - -* Thu Mar 22 2018 Spyros Trigazis - 1.9.6-1 -- Bump to upstream v1.9.6 - -* Tue Mar 20 2018 Jan Chaloupka - 1.9.5-1 -- Bump to upstream v1.9.5 - resolves: #1554420 - -* Sun Feb 11 2018 Spyros Trigazis - 1.9.3-1 -- Bump to upstream v1.9.3 - -* Fri Feb 09 2018 Jan Chaloupka - 1.9.1-5 -- Add --fail-swap-on=false flag to the /etc/kubernetes/kubelet - resolves: #1542476 - -* Thu Feb 08 2018 Igor Gnatenko - 1.9.1-4 -- Escape macro in %%changelog - -* Wed Feb 07 2018 Fedora Release Engineering - 1.9.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Mon Jan 15 2018 Jan Chaloupka - 1.9.1-2 -- If docker is not available, try docker-ce instead (use boolean dependencies) - resolves: #1534508 - -* Fri Jan 12 2018 Spyros Trigazis - 1.9.1-1 -- Update to upstream v1.9.1 - resolves #1533794 - -* Tue Oct 24 2017 Jan Chaloupka - 1.8.1-1 -- Update to upstream v1.8.1 - resolves: #1497135 - -* Mon Oct 02 2017 Jan Chaloupka - 1.8.0-1 -- Update to upstream v1.8.0 - related: #1497625 - -* Mon Oct 02 2017 Jan Chaloupka - 1.7.7-1 -- Update to upstream v1.7.7 - resolves: #1497625 - -* Mon Sep 18 2017 Jan Chaloupka - 1.7.6-1 -- Update to upstream v1.7.6 - resolves: #1492551 - -* Mon Sep 11 2017 Jan Chaloupka - 1.7.5-1 -- Update to upstream v1.7.5 - resolves: #1490316 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.4-1 -- Fix the version - related: #1482874 - -* Fri Aug 18 2017 Jan Chaloupka - 1.7.3-2 -- Update to upstream v1.7.4 - resolves: #1482874 - -* Tue Aug 08 2017 Jan Chaloupka - 1.7.3-1 -- Update to upstream v1.7.3 - resolves: #1479685 - -* Thu Aug 03 2017 Fedora Release Engineering - 1.7.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Sun Jul 30 2017 Florian Weimer - 1.7.2-3 -- Rebuild with binutils fix for ppc64le (#1475636) - -* Wed Jul 26 2017 Fedora Release Engineering - 1.7.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.2-1 -- Update to upstream v1.7.2 - -* Mon Jul 24 2017 Jan Chaloupka - 1.7.1-2 -- Sync kubeadm.conf with upstream service configuration (set Restart,StartLimitInterval,RestartSec) - -* Fri Jul 14 2017 Jan Chaloupka - 1.7.1-1 -- Update to upstream v1.7.1 - resolves: #1471767 - -* Sat Jul 08 2017 Jan Chaloupka - 1.6.7-1 -- Update to upstream v1.6.7 - resolves: #1468823 - resolves: #1468752 - -* Fri May 19 2017 Timothy St. Clair - 1.6.4-1 -- Add kubeadm subpackage to enable upstream deployments - -* Thu May 18 2017 Jan Chaloupka - 1.6.3-1 -- Update to upstream v1.6.3 - resolves: #1452101 - -* Fri May 12 2017 Jan Chaloupka - 1.6.2-2 -- Extend archs with s390x - resolves: #1400000 - -* Tue May 02 2017 Jan Chaloupka - 1.6.2-1 -- Update to upstream v1.6.2 - resolves: #1447338 - -* Tue Apr 11 2017 Jan Chaloupka - 1.6.1-1 -- Update to upstream v1.6.1 - related: #1422889 - -* Fri Mar 31 2017 Jan Chaloupka - 1.5.6-1 -- Update to upstream v1.5.6 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.5-4 -- Update to upstream v1.5.5 - related: #1422889 - -* Mon Mar 27 2017 Jan Chaloupka - 1.5.4-3 -- re-enable debug-info - related: #1422889 - -* Thu Mar 09 2017 Jan Chaloupka - 1.5.4-2 -- Bump to upstream 7243c69eb523aa4377bce883e7c0dd76b84709a1 - related: #1422889 - -* Thu Feb 16 2017 Jan Chaloupka - 1.5.3-1 -- Update to upstream v1.5.3 - resolves: #1422889 - -* Fri Feb 10 2017 Fedora Release Engineering - 1.5.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Wed Jan 18 2017 Jan Chaloupka - 1.5.2-2 -- fix rootScopeNaming generate selfLink - resolves: #1413997 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.2-1 -- Bump version as well - related: #1412996 - -* Fri Jan 13 2017 Jan Chaloupka - 1.5.1-2 -- Bump to upstream 1.5.2 - resolves: #1412996 - -* Thu Jan 05 2017 Jan Chaloupka - 1.5.1-1 -- Bump to upstream 1.5.1 - resolves: #1410186 - -* Wed Jan 04 2017 Jan Chaloupka - 1.4.7-2 -- Generate the md files before they are converted to man pages - resolves: #1409943 - -* Mon Dec 12 2016 Jan Chaloupka - 1.4.7-1 -- Bump to upstream v1.4.7 - resolves: #1403823 - New conntrack-tools dependency of kube-proxy - Build kubernetes on ppc64le with linkmode=external - resolves: #1392922 - -* Mon Nov 14 2016 jchaloup - 1.4.5-3 -- Patch unit-test subpackage to run tests over k8s distro binaries - -* Wed Nov 09 2016 jchaloup - 1.4.5-2 -- Add missing if devel around generated devel.file-list - related: #1390074 - -* Tue Nov 08 2016 jchaloup - 1.4.5-1 -- Bump to upstream v1.4.5 (flip back to upstream based Kubernetes) - related: #1390074 - -* Mon Oct 31 2016 jchaloup - 1.4.0-0.1.beta3.git52492b4 -- Update to origin v1.4.0-alpha.0 (ppc64le and arm unbuildable with the current golang version) - resolves: #1390074 - -* Mon Oct 24 2016 jchaloup - 1.3.0-0.4.git52492b4 -- Update to origin v1.3.1 - resolves: #1388092 - -* Thu Sep 08 2016 jchaloup - 1.3.0-0.3.rc1.git507d3a7 -- Update to origin v1.3.0-rc1 - resolves: #1374361 - -* Thu Aug 11 2016 Dennis Gilmore -1.3.0-0.2.git4a3f9c5 -- enable armv7hl and aarch64 - -* Tue Aug 09 2016 jchaloup - 1.3.0-0.1.git4a3f9c5 -- Update to origin v1.3.0-alpha.3 - resolves: #1365601 - -* Thu Jul 21 2016 Fedora Release Engineering - 1.2.0-0.27.git4a3f9c5 -- https://fedoraproject.org/wiki/Changes/golang1.7 - -* Sun Jul 17 2016 jchaloup - 1.2.0-0.26.git4a3f9c5 -- Update to origin v1.2.1 - resolves: #1357261 - -* Wed Jul 13 2016 jchaloup - 1.2.0-0.25.git4a3f9c5 -- Enable CPU and Memory accounting on a node - -* Wed Jun 29 2016 jchaloup - 1.2.0-0.24.git4a3f9c5 -- Be more verbose about devel subpackage - resolves: #1269449 - -* Tue Jun 28 2016 jchaloup - 1.2.0-0.23.git4a3f9c5 -- Own /run/kubernetes directory - resolves: #1264699 - -* Sat May 28 2016 jchaloup - 1.2.0-0.22.git4a3f9c5 -- Bump to origin v1.2.0 - resolves: #1340643 - -* Wed May 04 2016 jchaloup - 1.2.0-0.21.git4a3f9c5 -- Extend uni-test subpackage to run other tests - -* Mon Apr 25 2016 jchaloup - 1.2.0-0.20.git4a3f9c5 -- Update support for ppc64le to use go compiler - related: #1306214 - -* Thu Apr 21 2016 jchaloup - 1.2.0-0.19.git4a3f9c5 -- Fix support for ppc64le - related: #1306214 - -* Tue Apr 19 2016 jchaloup - 1.2.0-0.18.git4a3f9c5 -- Bump to origin v1.1.6 - resolves: #1328357 - -* Mon Apr 11 2016 jchaloup - 1.2.0-0.17.alpha6.git4a3f9c5 -- Don't disable extensions/v1beta1 by default to conform with upstream documentation - -* Wed Mar 30 2016 jchaloup - 1.2.0-0.16.alpha6.git4a3f9c5 - Update to origin's v1.1.5 - Build on ppc64le as well - resolves: #1306214 - -* Tue Mar 08 2016 jchaloup - 1.2.0-0.15.alpha6.gitf0cd09a -- hyperkube.server: don't parse args for any command - -* Fri Mar 04 2016 jchaloup - 1.2.0-0.14.alpha6.gitf0cd09a -- Disable extensions/v1beta1 implicitly - -* Tue Mar 01 2016 jchaloup - 1.2.0-0.13.alpha6.gitf0cd09a -- Hyperkube checks flags of individual commands/servers even if it does not define their flags. - Thus resulting in 'uknown shorthand flag' error - -* Mon Feb 29 2016 jchaloup - 1.2.0-0.12.alpha6.gitf0cd09a -- Disable v1beta3 -- hyperkube-kubectl-dont shift os.Args - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.11.alpha6.gitf0cd09a -- add kube- prefix to controller-manager, proxy and scheduler - -* Fri Feb 26 2016 jchaloup - 1.2.0-0.10.alpha6.gitf0cd09a -- Hardlink kube-controller-manager, kuber-scheduler, kubectl, kubelet and kube-proxy into hyperkube -- Keep kube-apiserver binary as it is (it has different permission and capabilities) - -* Thu Feb 25 2016 jchaloup - 1.2.0-0.9.alpha6.gitf0cd09a -- Fix Content-Type of docker client response - resolves: #1311861 - -* Mon Feb 22 2016 Fedora Release Engineering - 1.2.0-0.8.alpha6.gitf0cd09a -- https://fedoraproject.org/wiki/Changes/golang1.6 - -* Mon Feb 22 2016 jchaloup - 1.2.0-0.7.alpha6.git4c8e6f4 -- Bump to origin 1.1.3 - kube-version-change command replaced with kubectl convert (check out docs/admin/cluster-management.md) - related: 1295066 - -* Thu Feb 04 2016 Fedora Release Engineering - 1.2.0-0.6.alpha1.git4c8e6f4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Thu Jan 21 2016 jchaloup - 1.2.0-0.5.alpha1.git4c8e6f4 -- Bump to upstream e1d9873c1d5711b83fd3dd7eefe83a88ceb92c08 - related: #1291860 - -* Thu Jan 07 2016 jchaloup - 1.2.0-0.4.alpha1.git4c8e6f4 -- Move definition of all version, git and commit macros at one place - resolves: #1291860 - -* Fri Jan 01 2016 jchaloup - 1.2.0-0.3.alpha1.git4c8e6f4 -- Bump to upstream bf56e235826baded1772fb340266b8419c3e8f30 - Rebase to origin's "v1.1.0.1 - Security Update to v1.1" release - resolves: #1295066 - -* Thu Nov 26 2015 jchaloup - 1.2.0-0.2.alpha1.git4c8e6f4 -- Bump to origin upstream a41c9ff38d52fd508481c3c2bac13d52871fde02 -- Build kubernetes from origin's Godeps using hack/build-go.sh - origin's Godeps = kubernetes upstream + additional patches - -* Tue Oct 20 2015 jchaloup - 1.2.0-0.1.alpha1.git4c8e6f4 -- Bump to upstream 403de3874fba420fd096f2329b45fe2f5ae97e46 - related: #1211266 - -* Wed Oct 14 2015 jchaloup - 1.1.0-0.41.alpha1.gite9a6ef1 -- Bump to origin upstream e9a6ef1cd4c29d45730289a497d18b19d7ba450d - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.40.alpha1.git5f38cb0 -- Add missing short option for --server of kubectl -- Update unit-test-subpackage (only test-cmd.sh atm) - related: #1211266 - -* Fri Oct 09 2015 jchaloup - 1.1.0-0.39.alpha1.git5f38cb0 -- Add normalization of flags - related: #1211266 - -* Fri Oct 02 2015 jchaloup - 1.1.0-0.38.alpha1.git5f38cb0 -- Restore unit-test subpackage (not yet tested) - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.37.alpha1.git5f38cb0 -- Do not unset default cluster, otherwise k8s ends with error when no cluster set - related: #1211266 - -* Wed Sep 30 2015 jchaloup - 1.1.0-0.36.alpha0.git5f38cb0 -- Bump to o4n 5f38cb0e98c9e854cafba9c7f98dafd51e955ad8 - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.35.alpha1.git2695cdc -- Update git version of k8s and o4n, add macros - related: #1211266 - -* Tue Sep 29 2015 jchaloup - 1.1.0-0.34.alpha1.git2695cdc -- Built k8s from o4n tarball -- Bump to upstream 2695cdcd29a8f11ef60278758e11f4817daf3c7c - related: #1211266 - -* Tue Sep 22 2015 jchaloup - 1.1.0-0.33.alpha1.git09cf38e -- Bump to upstream 09cf38e9a80327e2d41654db277d00f19e2c84d0 - related: #1211266 - -* Thu Sep 17 2015 jchaloup - 1.1.0-0.32.alpha1.git400e685 -- Bump to upstream 400e6856b082ecf4b295568acda68d630fc000f1 - related: #1211266 - -* Wed Sep 16 2015 jchaloup - 1.1.0-0.31.gitd549fc4 -- Bump to upstream d549fc400ac3e5901bd089b40168e1e6fb17341d - related: #1211266 - -* Tue Sep 15 2015 jchaloup - 1.1.0-0.30.gitc9570e3 -- Bump to upstream c9570e34d03c6700d83f796c0125d17c5064e57d - related: #1211266 - -* Mon Sep 14 2015 jchaloup - 1.1.0-0.29.git86b4e77 -- Bump to upstream 86b4e777e1947c1bc00e422306a3ca74cbd54dbe - related: #1211266 - -* Thu Sep 10 2015 jchaloup - 1.1.0-0.28.gitf867ba3 -- Bump to upstream f867ba3ba13e3dad422efd21c74f52b9762de37e - related: #1211266 - -* Wed Sep 09 2015 jchaloup - 1.1.0-0.27.git0f4fa4e -- Bump to upstream 0f4fa4ed25ae9a9d1824fe55aeefb4d4ebfecdfd - related: #1211266 - -* Tue Sep 08 2015 jchaloup - 1.1.0-0.26.git196f58b -- Bump to upstream 196f58b9cb25a2222c7f9aacd624737910b03acb - related: #1211266 - -* Mon Sep 07 2015 jchaloup - 1.1.0-0.25.git96e0ed5 -- Bump to upstream 96e0ed5749608d4cc32f61b3674deb04c8fa90ad - related: #1211266 - -* Sat Sep 05 2015 jchaloup - 1.1.0-0.24.git2e2def3 -- Bump to upstream 2e2def36a904fe9a197da5fc70e433e2e884442f - related: #1211266 - -* Fri Sep 04 2015 jchaloup - 1.1.0-0.23.gite724a52 -- Bump to upstream e724a5210adf717f62a72162621ace1e08730c75 - related: #1211266 - -* Thu Sep 03 2015 jchaloup - 1.1.0-0.22.gitb6f2f39 -- Bump to upstream b6f2f396baec5105ff928cf61903c2c368259b21 - related: #1211266 - -* Wed Sep 02 2015 jchaloup - 1.1.0-0.21.gitb4a3698 -- Bump to upstream b4a3698faed81410468eccf9f328ca6df3d0cca3 - related: #1211266 - -* Tue Sep 01 2015 jchaloup - 1.1.0-0.20.git2f9652c -- Bump to upstream 2f9652c7f1d4b8f333c0b5c8c1270db83b913436 - related: #1211266 - -* Mon Aug 31 2015 jchaloup - 1.1.0-0.19.git66a644b -- Bump to upstream 66a644b275ede9ddb98eb3f76e8d1840cafc2147 - related: #1211266 - -* Thu Aug 27 2015 jchaloup - 1.1.0-0.18.gitab73849 -- Bump to upstream ab7384943748312f5e9294f42d42ed3983c7c96c - related: #1211266 - -* Wed Aug 26 2015 jchaloup - 1.1.0-0.17.git00e3442 -- Bump to upstream 00e34429e0242323ed34347cf0ab65b3d62b21f7 - related: #1211266 - -* Tue Aug 25 2015 jchaloup - 1.1.0-0.16.gita945785 -- Bump to upstream a945785409d5b68f3a2721d2209300edb5abf1ce - related: #1211266 - -* Mon Aug 24 2015 jchaloup - 1.1.0-0.15.git5fe7029 -- Bump to upstream 5fe7029e688e1e5873a0b95a622edda5b5156d2b - related: #1211266 - -* Fri Aug 21 2015 jchaloup - 1.1.0-0.14.gitb6f18c7 -- Bump to upstream b6f18c7ce08714c8d4f6019463879a164a41750e - related: #1211266 - -* Thu Aug 20 2015 jchaloup - 1.1.0-0.13.git44fa48e -- Bump to upstream 44fa48e5af44d3e988fa943d96a2de732d8cc666 - related: #1211266 - -* Wed Aug 19 2015 jchaloup - 1.1.0-0.12.gitb5a4a54 -- Bump to upstream b5a4a548df0cffb99bdcc3b9b9e48d4025d0541c - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.11.git919c7e9 -- Bump to upstream 919c7e94e23d2dcd5bdd96896e0a7990f9ae3338 - related: #1211266 - -* Tue Aug 18 2015 jchaloup - 1.1.0-0.10.git280b66c -- Bump to upstream 280b66c9012c21e253acd4e730f8684c39ca08ec - related: #1211266 - -* Mon Aug 17 2015 jchaloup - 1.1.0-0.9.git081d9c6 -- Bump to upstream 081d9c64d25c20ec16035036536511811118173d - related: #1211266 - -* Fri Aug 14 2015 jchaloup - 1.1.0-0.8.git8dcbeba -- Bump to upstream 8dcbebae5ef6a7191d9dfb65c68833c6852a21ad - related: #1211266 - -* Thu Aug 13 2015 jchaloup - 1.1.0-0.7.git968cbbe -- Bump to upstream 968cbbee5d4964bd916ba379904c469abb53d623 - related: #1211266 - -* Wed Aug 12 2015 jchaloup - 1.1.0-0.6.gitc91950f -- Bump to upstream c91950f01cb14ad47486dfcd2fdfb4be3ee7f36b - related: #1211266 - -* Tue Aug 11 2015 jchaloup - 1.1.0-0.5.gite44c8e6 -- Bump to upstream e44c8e6661c931f7fd434911b0d3bca140e1df3a - related: #1211266 - -* Mon Aug 10 2015 jchaloup - 1.1.0-0.4.git2bfa9a1 -- Bump to upstream 2bfa9a1f98147cfdc2e9f4cf50e2c430518d91eb - related: #1243827 - -* Thu Aug 06 2015 jchaloup - 1.1.0-0.3.git4c42e13 -- Bump to upstream 4c42e1302d3b351f3cb6074d32aa420bbd45e07d -- Change import path prefix to k8s.io/kubernetes - related: #1243827 - -* Wed Aug 05 2015 jchaloup - 1.1.0-0.2.git159ba48 -- Bump to upstream 159ba489329e9f6ce422541e13f97e1166090ec8 - related: #1243827 - -* Sat Aug 01 2015 jchaloup - 1.1.0-0.1.git6129d3d -- Bump to upstream 6129d3d4eb80714286650818081a64ce2699afed - related: #1243827 - -* Fri Jul 31 2015 jchaloup - 1.0.0-0.18.gitff058a1 -- Bump to upstream ff058a1afeb63474f7a35805941f3b07c27aae0f - related: #1243827 - -* Thu Jul 30 2015 jchaloup - 1.0.0-0.17.git769230e -- Bump to upstream 769230e735993bb0bf924279a40593c147c9a6ab - related: #1243827 - -* Wed Jul 29 2015 jchaloup - 1.0.0-0.16.gitdde7222 -- Bump to upstream dde72229dc9cbbdacfb2e44b22d9d5b357027020 - related: #1243827 - -* Tue Jul 28 2015 jchaloup - 1.0.0-0.15.gitc5bffaa -- Bump to upstream c5bffaaf3166513da6259c44a5d1ba8e86bea5ce - related: #1243827 - -* Sat Jul 25 2015 jchaloup - 1.0.0-0.14.git5bd82ff -- Bump to upstream 5bd82ffe6da8f4e72e71b362635e558bfc412106 - related: #1243827 - -* Fri Jul 24 2015 jchaloup - 1.0.0-0.13.git291acd1 -- Bump to upstream 291acd1a09ac836ec7524b060a19a6498d9878dd - related: #1243827 - -* Thu Jul 23 2015 jchaloup - 1.0.0-0.12.gitfbed349 -- Bump to upstream fbed3492bfa09e59b1c423fdd7c1ecad333a06ef - related: #1243827 - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.11.gitfbc85e9 -- Add runtime dependency of kubernetes-node on socat (so kubectl port-forward works on AH) - -* Tue Jul 21 2015 jchaloup - 1.0.0-0.10.gitfbc85e9 -- Update the build script for go1.5 as well -- Bump to upstream fbc85e9838f25547be94fbffeeb92a756d908ca0 - related: #1243827 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.9.git2d88675 -- Bump to upstream 2d88675f2203d316d4bac312c7ccad12991b56c2 -- Change KUBE_ETCD_SERVERS to listen on 2379 ports instead of 4001 - resolves: #1243827 -- Add kubernetes-client to provide kubectl command - resolves: #1241469 - -* Mon Jul 20 2015 jchaloup - 1.0.0-0.8.gitb2dafda -- Fix dependency and tests for go-1.5 -- with_debug off as the builds ends with error "ELFRESERVE too small: ..." - -* Sat Jul 18 2015 Eric Paris - 1.0.0-0.7.gitb2dafda -- Update apiserver binary gid - -* Fri Jul 17 2015 jchaloup - 1.0.0-0.6.gitb2dafda -- Bump to upstream b2dafdaef5aceafad503ab56254b60f80da9e980 - related: #1211266 - -* Thu Jul 16 2015 jchaloup - 1.0.0-0.5.git596a8a4 -- Bump to upstream 596a8a40d12498b5335140f50753980bfaea4f6b - related: #1211266 - -* Wed Jul 15 2015 jchaloup - 1.0.0-0.4.git6ba532b -- Bump to upstream 6ba532b218cb5f5ea3f0e8dce5395182f388536c - related: #1211266 - -* Tue Jul 14 2015 jchaloup - 1.0.0-0.3.gitc616182 -- Bump to upstream c6161824db3784e6156131307a5e94647e5557fd - related: #1211266 - -* Mon Jul 13 2015 jchaloup - 1.0.0-0.2.git2c27b1f -- Bump to upstream 2c27b1fa64f4e70f04575d1b217494f49332390e - related: #1211266 - -* Sat Jul 11 2015 jchaloup - 1.0.0-0.1.git1b37059 -- Bump to upstream 1b370599ccf271741e657335c4943cb8c7dba28b - related: #1211266 - -* Fri Jul 10 2015 jchaloup - 0.21.1-0.2.gitccc4cfc -- Bump to upstream ccc4cfc7e11e0f127ac1cea045017dd799be3c63 - related: #1211266 - -* Thu Jul 09 2015 jchaloup - 0.21.1-0.1.git41f8907 -- Update generating of man pages from md (add genmanpages.sh) -- Bump to upstream 41f89075396329cd46c58495c7d3f7e13adcaa96 - related: #1211266 - -* Wed Jul 08 2015 jchaloup - 0.20.2-0.5.git77be29e -- Bump to upstream 77be29e3da71f0a136b6aa4048b2f0575c2598e4 - related: #1211266 - -* Tue Jul 07 2015 jchaloup - 0.20.2-0.4.git639a7da -- Bump to upstream 639a7dac50a331414cc6c47083323388da0d8756 - related: #1211266 - -* Mon Jul 06 2015 jchaloup - 0.20.2-0.3.gitbb6f2f7 -- Bump to upstream bb6f2f7ad90596d624d84cc691eec0f518e90cc8 - related: #1211266 - -* Fri Jul 03 2015 jchaloup - 0.20.2-0.2.git974377b -- Bump to upstream 974377b3064ac59b6e5694bfa568d67128026171 - related: #1211266 - -* Thu Jul 02 2015 jchaloup - 0.20.2-0.1.gitef41ceb -- Bump to upstream ef41ceb3e477ceada84c5522f429f02ab0f5948e - related: #1211266 - -* Tue Jun 30 2015 jchaloup - 0.20.0-0.3.git835eded -- Bump to upstream 835eded2943dfcf13a89518715e4be842a6a3ac0 -- Generate missing man pages - related: #1211266 - -* Mon Jun 29 2015 jchaloup - 0.20.0-0.2.git1c0b765 -- Bump to upstream 1c0b765df6dabfe9bd0e20489ed3bd18e6b3bda8 - Comment out missing man pages - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.20.0-0.1.git8ebd896 -- Bump to upstream 8ebd896351513d446d56bc5785c070d2909226a3 - related: #1211266 - -* Fri Jun 26 2015 jchaloup - 0.19.3-0.6.git712f303 -- Bump to upstream 712f303350b35e70a573f3cb19193c8ec7ee7544 - related: #1211266 - -* Thu Jun 25 2015 jchaloup - 0.19.3-0.5.git2803b86 -- Bump to upstream 2803b86a42bf187afa816a7ce14fec754cc2af51 - related: #1211266 - -* Wed Jun 24 2015 Eric Paris - 0.19.3-0.4.git5b4dc4e -- Set CAP_NET_BIND_SERVICE on the kube-apiserver so it can use 443 - -* Wed Jun 24 2015 jchaloup - 0.19.3-0.3.git5b4dc4e -- Bump to upstream 5b4dc4edaa14e1ab4e3baa19df0388fa54dab344 - pkg/cloudprovider/* packages does not conform to golang language specification - related: #1211266 - -* Tue Jun 23 2015 jchaloup - 0.19.3-0.2.gita2ce3ea -- Bump to upstream a2ce3ea5293553b1fe0db3cbc6d53bdafe061d79 - related: #1211266 - -* Mon Jun 22 2015 jchaloup - 0.19.1-0.1.gitff0546d -- Bump to upstream ff0546da4fc23598de59db9f747c535545036463 - related: #1211266 - -* Fri Jun 19 2015 jchaloup - 0.19.0-0.7.gitb2e9fed -- Bump to upstream b2e9fed3490274509506285bdba309c50afb5c39 - related: #1211266 - -* Thu Jun 18 2015 jchaloup - 0.19.0-0.6.gitf660940 -- Bump to upstream f660940dceb3fe6ffb1b14ba495a47d91b5cd910 - related: #1211266 - -* Wed Jun 17 2015 jchaloup - 0.19.0-0.5.git43889c6 -- Bump to upstream 43889c612c4d396dcd8fbf3fbd217e106eaf5bce - related: #1211266 - -* Tue Jun 16 2015 jchaloup - 0.19.0-0.4.gita8269e3 -- Bump to upstream a8269e38c9e2bf81ba18cd6420e2309745d5b0b9 - related: #1211266 - -* Sun Jun 14 2015 jchaloup - 0.19.0-0.3.git5e5c1d1 -- Bump to upstream 5e5c1d10976f2f26d356ca60ef7d0d715c9f00a2 - related: #1211266 - -* Fri Jun 12 2015 jchaloup - 0.19.0-0.2.git0ca96c3 -- Bump to upstream 0ca96c3ac8b47114169f3b716ae4521ed8c7657c - related: #1211266 - -* Thu Jun 11 2015 jchaloup - 0.19.0-0.1.git5a02fc0 -- Bump to upstream 5a02fc07d8a943132b9e68fe7169778253318487 - related: #1211266 - -* Wed Jun 10 2015 jchaloup - 0.18.2-0.3.git0dfb681 -- Bump to upstream 0dfb681ba5d5dba535895ace9d650667904b5df7 - related: #1211266 - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.2.gitb68e08f -- golang-cover is not needed - -* Tue Jun 09 2015 jchaloup - 0.18.2-0.1.gitb68e08f -- Bump to upstream b68e08f55f5ae566c4ea3905d0993a8735d6d34f - related: #1211266 - -* Sat Jun 06 2015 jchaloup - 0.18.1-0.3.git0f1c4c2 -- Bump to upstream 0f1c4c25c344f70c3592040b2ef092ccdce0244f - related: #1211266 - -* Fri Jun 05 2015 jchaloup - 0.18.1-0.2.git7309e1f -- Bump to upstream 7309e1f707ea5dd08c51f803037d7d22c20e2b92 - related: #1211266 - -* Thu Jun 04 2015 jchaloup - 0.18.1-0.1.gita161edb -- Bump to upstream a161edb3960c01ff6e14813858c2eeb85910009b - related: #1211266 - -* Wed Jun 03 2015 jchaloup - 0.18.0-0.3.gitb5a91bd -- Bump to upstream b5a91bda103ed2459f933959241a2b57331747ba -- Don't run %%check section (kept only for local run). Tests are now handled via CI. - related: #1211266 - -* Tue Jun 02 2015 jchaloup - 0.18.0-0.2.git5520386 -- Bump to upstream 5520386b180d3ddc4fa7b7dfe6f52642cc0c25f3 - related: #1211266 - -* Mon Jun 01 2015 jchaloup - 0.18.0-0.1.git0bb78fe -- Bump to upstream 0bb78fe6c53ce38198cc3805c78308cdd4805ac8 - related: #1211266 - -* Fri May 29 2015 jchaloup - 0.17.1-6 -- Bump to upstream ed4898d98c46869e9cbdb44186dfdeda9ff80cc2 - related: #1211266 - -* Thu May 28 2015 jchaloup - 0.17.1-5 -- Bump to upstream 6fa2777e26559fc008eacac83eb165d25bd9a7de - related: #1211266 - -* Tue May 26 2015 jchaloup - 0.17.1-4 -- Bump to upstream 01fcb58673001e56c69e128ab57e0c3f701aeea5 - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-3 -- Decompose package into master and node subpackage. - Thanks to Avesh for testing and patience. - related: #1211266 - -* Mon May 25 2015 jchaloup - 0.17.1-2 -- Bump to upstream cf7b0bdc2a41d38613ac7f8eeea91cae23553fa2 - related: #1211266 - -* Fri May 22 2015 jchaloup - 0.17.1-1 -- Bump to upstream d9d12fd3f7036c92606fc3ba9046b365212fcd70 - related: #1211266 - -* Wed May 20 2015 jchaloup - 0.17.0-12 -- Bump to upstream a76bdd97100c66a46e2b49288540dcec58a954c4 - related: #1211266 - -* Tue May 19 2015 jchaloup - 0.17.0-11 -- Bump to upstream 10339d72b66a31592f73797a9983e7c207481b22 - related: #1211266 - -* Mon May 18 2015 jchaloup - 0.17.0-10 -- Bump to upstream efb42b302d871f7217394205d84e5ae82335d786 - related: #1211266 - -* Sat May 16 2015 jchaloup - 0.17.0-9 -- Bump to upstream d51e131726b925e7088b90915e99042459b628e0 - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-8 -- Bump to upstream 1ee33ac481a14db7b90e3bbac8cec4ceea822bfb - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-7 -- Bump to upstream d3c6fb0d6a13c0177dcd67556d72963c959234ea - related: #1211266 - -* Fri May 15 2015 jchaloup - 0.17.0-6 -- Bump to upstream f57f31783089f41c0bdca8cb87a1001ca94e1a45 - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-5 -- Bump to upstream c90d381d0d5cf8ab7b8412106f5a6991d7e13c7d - related: #1211266 - -* Thu May 14 2015 jchaloup - 0.17.0-4 -- Bump to upstream 5010b2dde0f9b9eb820fe047e3b34bc9fa6324de -- Add debug info - related: #1211266 - -* Wed May 13 2015 jchaloup - 0.17.0-3 -- Bump to upstream ec19d41b63f5fe7b2c939e7738a41c0fbe65d796 - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-2 -- Provide /usr/bin/kube-version-change binary - related: #1211266 - -* Tue May 12 2015 jchaloup - 0.17.0-1 -- Bump to upstream 962f10ee580eea30e5f4ea725c4e9e3743408a58 - related: #1211266 - -* Mon May 11 2015 jchaloup - 0.16.2-7 -- Bump to upstream 63182318c5876b94ac9b264d1224813b2b2ab541 - related: #1211266 - -* Fri May 08 2015 jchaloup - 0.16.2-6 -- Bump to upstream d136728df7e2694df9e082902f6239c11b0f2b00 -- Add NetworkManager as dependency for /etc/resolv.conf - related: #1211266 - -* Thu May 07 2015 jchaloup - 0.16.2-5 -- Bump to upstream ca0f678b9a0a6dc795ac7a595350d0dbe9d0ac3b - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-4 -- Add docs to kubernetes-unit-test - related: #1211266 - -* Wed May 06 2015 jchaloup - 0.16.2-3 -- Bump to upstream 3a24c0e898cb3060d7905af6df275a3be562451d - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-2 -- Add api and README.md to kubernetes-unit-test - related: #1211266 - -* Tue May 05 2015 jchaloup - 0.16.2-1 -- Bump to upstream 72048a824ca16c3921354197953fabecede5af47 - related: #1211266 - -* Mon May 04 2015 jchaloup - 0.16.1-2 -- Bump to upstream 1dcd80cdf3f00409d55cea1ef0e7faef0ae1d656 - related: #1211266 - -* Sun May 03 2015 jchaloup - 0.16.1-1 -- Bump to upstream 86751e8c90a3c0e852afb78d26cb6ba8cdbc37ba - related: #1211266 - -* Fri May 01 2015 jchaloup - 0.16.0-2 -- Bump to upstream 72708d74b9801989ddbdc8403fc5ba4aafb7c1ef - related: #1211266 - -* Wed Apr 29 2015 jchaloup - 0.16.0-1 -- Bump to upstream 7dcce2eeb7f28643d599c8b6a244523670d17c93 - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-10 -- Add unit-test subpackage - related: #1211266 - -* Tue Apr 28 2015 jchaloup - 0.15.0-9 -- Bump to upstream 99fc906f78cd2bcb08536c262867fa6803f816d5 - related: #1211266 - -* Mon Apr 27 2015 jchaloup - 0.15.0-8 -- Bump to upstream 051dd96c542799dfab39184d2a7c8bacf9e88d85 - related: #1211266 - -* Fri Apr 24 2015 jchaloup - 0.15.0-7 -- Bump to upstream 9f753c2592481a226d72cea91648db8fb97f0da8 - related: #1211266 - -* Thu Apr 23 2015 jchaloup - 0.15.0-6 -- Bump to upstream cf824ae5e07965ba0b4b15ee88e08e2679f36978 - related: #1211266 - -* Tue Apr 21 2015 jchaloup - 0.15.0-5 -- Bump to upstream 21788d8e6606038a0a465c97f5240b4e66970fbb - related: #1211266 - -* Mon Apr 20 2015 jchaloup - 0.15.0-4 -- Bump to upstream eb1ea269954da2ce557f3305fa88d42e3ade7975 - related: #1211266 - -* Fri Apr 17 2015 jchaloup - 0.15.0-3 -- Obsolete cadvisor as it is integrated in kubelet - related: #1211266 - -* Wed Apr 15 2015 jchaloup - 0.15.0-0.2.git0ea87e4 -- Bump to upstream 0ea87e486407298dc1e3126c47f4076b9022fb09 - related: #1211266 - -* Tue Apr 14 2015 jchaloup - 0.15.0-0.1.gitd02139d -- Bump to upstream d02139d2b454ecc5730cc535d415c1963a7fb2aa - related: #1211266 - -* Sun Apr 12 2015 jchaloup - 0.14.2-0.2.gitd577db9 -- Bump to upstream d577db99873cbf04b8e17b78f17ec8f3a27eca30 - -* Wed Apr 08 2015 jchaloup - 0.14.2-0.1.git2719194 -- Bump to upstream 2719194154ffd38fd1613699a9dd10a00909957e - Use etcd-2.0.8 and higher - -* Tue Apr 07 2015 jchaloup - 0.14.1-0.2.gitd2f4734 -- Bump to upstream d2f473465738e6b6f7935aa704319577f5e890ba - -* Thu Apr 02 2015 jchaloup - 0.14.1-0.1.gita94ffc8 -- Bump to upstream a94ffc8625beb5e2a39edb01edc839cb8e59c444 - -* Wed Apr 01 2015 jchaloup - 0.14.0-0.2.git8168344 -- Bump to upstream 81683441b96537d4b51d146e39929b7003401cd5 - -* Tue Mar 31 2015 jchaloup - 0.14.0-0.1.git9ed8761 -- Bump to upstream 9ed87612d07f75143ac96ad90ff1ff68f13a2c67 -- Remove [B]R from devel branch until the package has stable API - -* Mon Mar 30 2015 jchaloup - 0.13.2-0.6.git8a7a127 -- Bump to upstream 8a7a127352263439e22253a58628d37a93fdaeb2 - -* Fri Mar 27 2015 jchaloup - 0.13.2-0.5.git8d94c43 -- Bump to upstream 8d94c43e705824f23791b66ad5de4ea095d5bb32 - resolves: #1205362 - -* Wed Mar 25 2015 jchaloup - 0.13.2-0.4.git455fe82 -- Bump to upstream 455fe8235be8fd9ba0ce21bf4f50a69d42e18693 - -* Mon Mar 23 2015 jchaloup - 0.13.2-0.3.gitef75888 -- Remove runtime dependency on etcd - resolves: #1202923 - -* Sun Mar 22 2015 jchaloup - 0.13.2-0.2.gitef75888 -- Bump to upstream ef758881d108bb53a128126c503689104d17f477 - -* Fri Mar 20 2015 jchaloup - 0.13.2-0.1.gita8f2cee -- Bump to upstream a8f2cee8c5418676ee33a311fad57d6821d3d29a - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.9.git53b25a7 -- Bump to upstream 53b25a7890e31bdec6f2a95b32200d6cc27ae2ca - fix kube-proxy.service and kubelet - resolves: #1200919 #1200924 - -* Fri Mar 13 2015 jchaloup - 0.12.0-0.8.git39dceb1 -- Bump to upstream 39dceb13a511a83963a766a439cb386d10764310 - -* Thu Mar 12 2015 Eric Paris - 0.12.0-0.7.gita3fd0a9 -- Move from /etc/tmpfiles.d to %%{_tmpfilesdir} - resolves: #1200969 - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.6.gita3fd0a9 -- Place contrib/init/systemd/tmpfiles.d/kubernetes.conf to /etc/tmpfiles.d/kubernetes.conf - -* Thu Mar 12 2015 jchaloup - 0.12.0-0.5.gita3fd0a9 -- Bump to upstream a3fd0a9fd516bb6033f32196ae97aaecf8c096b1 - -* Tue Mar 10 2015 jchaloup - 0.12.0-0.4.gita4d871a -- Bump to upstream a4d871a10086436557f804930812f2566c9d4d39 - -* Fri Mar 06 2015 jchaloup - 0.12.0-0.3.git2700871 -- Bump to upstream 2700871b049d5498167671cea6de8317099ad406 - -* Thu Mar 05 2015 jchaloup - 0.12.0-0.2.git8b627f5 -- Bump to upstream 8b627f516fd3e4f62da90d401ceb3d38de6f8077 - -* Tue Mar 03 2015 jchaloup - 0.12.0-0.1.gitecca426 -- Bump to upstream ecca42643b91a7117de8cd385b64e6bafecefd65 - -* Mon Mar 02 2015 jchaloup - 0.11.0-0.5.git6c5b390 -- Bump to upstream 6c5b390160856cd8334043344ef6e08568b0a5c9 - -* Sat Feb 28 2015 jchaloup - 0.11.0-0.4.git0fec31a -- Bump to upstream 0fec31a11edff14715a1efb27f77262a7c3770f4 - -* Fri Feb 27 2015 jchaloup - 0.11.0-0.3.git08402d7 -- Bump to upstream 08402d798c8f207a2e093de5a670c5e8e673e2de - -* Wed Feb 25 2015 jchaloup - 0.11.0-0.2.git86434b4 -- Bump to upstream 86434b4038ab87ac40219562ad420c3cc58c7c6b - -* Tue Feb 24 2015 jchaloup - 0.11.0-0.1.git754a2a8 -- Bump to upstream 754a2a8305c812121c3845d8293efdd819b6a704 - turn off integration tests until "FAILED: unexpected endpoints: - timed out waiting for the condition" problem is resolved - Adding back devel subpackage ([B]R list outdated) - -* Fri Feb 20 2015 jchaloup - 0.10.1-0.3.git4c87805 -- Bump to upstream 4c87805870b1b22e463c4bd711238ef68c77f0af - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.2.git6f84bda -- Bump to upstream 6f84bdaba853872dbac69c84d3ab4b6964e85d8c - -* Tue Feb 17 2015 jchaloup - 0.10.1-0.1.git7d6130e -- Bump to upstream 7d6130edcdfabd7dd2e6a06fdc8fe5e333f07f5c - -* Sat Feb 07 2015 jchaloup - 0.9.1-0.7.gitc9c98ab -- Bump to upstream c9c98ab19eaa6f0b2ea17152c9a455338853f4d0 - Since some dependencies are broken, we can not build Kubernetes from Fedora deps. - Switching to vendored source codes until Go draft is resolved - -* Wed Feb 04 2015 jchaloup - 0.9.1-0.6.git7f5ed54 -- Bump to upstream 7f5ed541f794348ae6279414cf70523a4d5133cc - -* Tue Feb 03 2015 jchaloup - 0.9.1-0.5.git2ac6bbb -- Bump to upstream 2ac6bbb7eba7e69eac71bd9acd192cda97e67641 - -* Mon Feb 02 2015 jchaloup - 0.9.1-0.4.gite335e2d -- Bump to upstream e335e2d3e26a9a58d3b189ccf41ceb3770d1bfa9 - -* Fri Jan 30 2015 jchaloup - 0.9.1-0.3.git55793ac -- Bump to upstream 55793ac2066745f7243c666316499e1a8cf074f0 - -* Thu Jan 29 2015 jchaloup - 0.9.1-0.2.gitca6de16 -- Bump to upstream ca6de16df7762d4fc9b4ad44baa78d22e3f30742 - -* Tue Jan 27 2015 jchaloup - 0.9.1-0.1.git3623a01 -- Bump to upstream 3623a01bf0e90de6345147eef62894057fe04b29 -- update tests for etcd-2.0 - -* Thu Jan 22 2015 jchaloup - 0.8.2-571.gitb2f287c -+- Bump to upstream b2f287c259d856f4c08052a51cd7772c563aff77 - -* Thu Jan 22 2015 Eric Paris - 0.8.2-570.gitb2f287c -- patch kubelet service file to use docker.service not docker.socket - -* Wed Jan 21 2015 jchaloup - 0.8.2-0.1.git5b04640 -- Bump to upstream 5b046406a957a1e7eda7c0c86dd7a89e9c94fc5f - -* Sun Jan 18 2015 jchaloup - 0.8.0-126.0.git68298f0 -- Add some missing dependencies -- Add devel subpackage - -* Fri Jan 09 2015 Eric Paris - 0.8.0-125.0.git68298f0 -- Bump to upstream 68298f08a4980f95dfbf7b9f58bfec1808fb2670 - -* Tue Dec 16 2014 Eric Paris - 0.7.0-18.0.git52e165a -- Bump to upstream 52e165a4fd720d1703ebc31bd6660e01334227b8 - -* Mon Dec 15 2014 Eric Paris - 0.6-297.0.git5ef34bf -- Bump to upstream 5ef34bf52311901b997119cc49eff944c610081b - -* Wed Dec 03 2014 Eric Paris -- Replace patch to use old googlecode/go.net/ with BuildRequires on golang.org/x/net/ - -* Tue Dec 02 2014 Eric Paris - 0.6-4.0.git993ef88 -- Bump to upstream 993ef88eec9012b221f79abe8f2932ee97997d28 - -* Mon Dec 01 2014 Eric Paris - 0.5-235.0.git6aabd98 -- Bump to upstream 6aabd9804fb75764b70e9172774002d4febcae34 - -* Wed Nov 26 2014 Eric Paris - 0.5-210.0.gitff1e9f4 -- Bump to upstream ff1e9f4c191342c24974c030e82aceaff8ea9c24 - -* Tue Nov 25 2014 Eric Paris - 0.5-174.0.git64e07f7 -- Bump to upstream 64e07f7fe03d8692c685b09770c45f364967a119 - -* Mon Nov 24 2014 Eric Paris - 0.5-125.0.git162e498 -- Bump to upstream 162e4983b947d2f6f858ca7607869d70627f5dff - -* Fri Nov 21 2014 Eric Paris - 0.5-105.0.git3f74a1e -- Bump to upstream 3f74a1e9f56b3c3502762930c0c551ccab0557ea - -* Thu Nov 20 2014 Eric Paris - 0.5-65.0.gitc6158b8 -- Bump to upstream c6158b8aa9c40fbf1732650a8611429536466b21 -- include go-restful build requirement - -* Tue Nov 18 2014 Eric Paris - 0.5-14.0.gitdf0981b -- Bump to upstream df0981bc01c5782ad30fc45cb6f510f365737fc1 - -* Tue Nov 11 2014 Eric Paris - 0.4-680.0.git30fcf24 -- Bump to upstream 30fcf241312f6d0767c7d9305b4c462f1655f790 - -* Mon Nov 10 2014 Eric Paris - 0.4-633.0.git6c70227 -- Bump to upstream 6c70227a2eccc23966d32ea6d558ee05df46e400 - -* Fri Nov 07 2014 Eric Paris - 0.4-595.0.gitb695650 -- Bump to upstream b6956506fa2682afa93770a58ea8c7ba4b4caec1 - -* Thu Nov 06 2014 Eric Paris - 0.4-567.0.git3b1ef73 -- Bump to upstream 3b1ef739d1fb32a822a22216fb965e22cdd28e7f - -* Thu Nov 06 2014 Eric Paris - 0.4-561.0.git06633bf -- Bump to upstream 06633bf4cdc1ebd4fc848f85025e14a794b017b4 -- Make spec file more RHEL/CentOS friendly - -* Tue Nov 04 2014 Eric Paris - 0.4-0.0.git4452163 -- rebase to v0.4 -- include man pages - -* Tue Oct 14 2014 jchaloup - 0.3-0.3.git98ac8e1 -- create /var/lib/kubelet -- Use bash completions from upstream -- Bump to upstream 98ac8e178fcf1627399d659889bcb5fe25abdca4 -- all by Eric Paris - -* Mon Sep 29 2014 Jan Chaloupka - 0.3-0.2.git88fdb65 -- replace * with coresponding files -- remove dependency on gcc - -* Wed Sep 24 2014 Eric Paris - 0.1-0.4.git6ebe69a -- prefer autosetup instead of setup (revert setup change in 0-0.3.git) -https://fedoraproject.org/wiki/Autosetup_packaging_draft -- revert version number to 0.1 - -* Mon Sep 08 2014 Lokesh Mandvekar - 0-0.3.git6ebe69a -- gopath defined in golang package already -- package owns /etc/kubernetes -- bash dependency implicit -- keep buildroot/$RPM_BUILD_ROOT macros consistent -- replace with macros wherever possible -- set version, release and source tarball prep as per -https://fedoraproject.org/wiki/Packaging:SourceURL#Github - -* Mon Sep 08 2014 Eric Paris -- make services restart automatically on error - -* Sat Sep 06 2014 Eric Paris -- update to upstream -- redo build to use project scripts -- use project scripts in %%check -- rework deletion of third_party packages to easily detect changes -- run apiserver and controller-manager as non-root - -* Mon Aug 11 2014 Adam Miller -- update to upstream -- decouple the rest of third_party - -* Thu Aug 7 2014 Eric Paris -- update to head -- update package to include config files - -* Wed Jul 16 2014 Colin Walters -- Initial package diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/changelog b/kubernetes/kubernetes-1.23.1/debian/deb_folder/changelog deleted file mode 100644 index 94defe96d..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/changelog +++ /dev/null @@ -1,160 +0,0 @@ -kubernetes-1.23.1 (1.23.1-1) unstable; urgency=medium - - * Updated for stx debian packaging - - -- Kaustubh Dhokte Tue, 22 Feb 2022 20:57:45 +0000 - - -kubernetes (1.21.8-1) unstable; urgency=medium - - * Updated for stx debian packaging - - -- Mihnea Saracin Fri, 29 Oct 2021 12:51:12 +0000 - - -kubernetes (1.12.10+dfsg-1) UNRELEASED; urgency=medium - - [ TODO ] [ FIXME ] - * copyright / vendor - * missing-sources - * rules: "make generated_files" - - * New upstream release. - * Patch away deprecated "docker/engine-api". - * rules: - + clean "zz_generated.deepcopy.go" files. - * New patch to fix selinux import. - - -- Dmitry Smirnov Mon, 18 Jun 2018 15:26:23 +1000 - -kubernetes (1.7.16+dfsg-1) unstable; urgency=medium - - [ Michael Stapelberg ] - * Switch to XS-Go-Import-Path - - [ Dmitry Smirnov ] - * Resurrected "mergo.patch" that has been mistakenly removed - (Closes: #878254). - * Re-enabled safeguard test for the above problem. - * New upstream release: - + CVE-2017-1002101 (Closes: #892801) - + CVE-2017-1002102 (Closes: #894051) - * Updated Vcs URLs for Salsa. - * Standards-Version: 4.1.4 - * Build-Depends: - - golang-go - + golang-any - + golang-github-appc-cni-dev - + golang-github-armon-circbuf-dev - + golang-github-azure-azure-sdk-for-go-dev - + golang-github-dgrijalva-jwt-go-v3-dev - + golang-github-docker-distribution-dev - + golang-github-docker-docker-dev - + golang-github-emicklei-go-restful-swagger12-dev - + golang-github-gogo-protobuf-dev - + golang-github-gorilla-websocket-dev - + golang-github-grpc-ecosystem-go-grpc-prometheus-dev - + golang-github-karlseguin-ccache-dev - - golang-github-opencontainers-runc-dev - + golang-github-opencontainers-docker-runc-dev - + golang-github-pmezard-go-difflib-dev - + golang-golang-x-time-dev - + golang-golang-x-tools-dev - + golang-google-grpc-dev - + golang-gopkg-warnings.v0-dev - + golang-goprotobuf-dev - - -- Dmitry Smirnov Sun, 06 May 2018 16:20:21 +1000 - -kubernetes (1.7.7+dfsg-3) unstable; urgency=medium - - * kubernetes-master should depend on etcd (Closes: #855218). - - -- Andrew Shadura Sun, 22 Oct 2017 19:40:46 +0100 - -kubernetes (1.7.7+dfsg-2) unstable; urgency=medium - - * Use CURDIR, not PWD, unbreaks the build at buildds. - - -- Andrew Shadura Fri, 06 Oct 2017 19:25:45 +0200 - -kubernetes (1.7.7+dfsg-1) unstable; urgency=medium - - [ Tim Potter ] - * Open work for new release - * Remove unused Files-Excluded entries from d/copyright - * Remove Skydns B-D as no longer used - * Don't build on ppc64 or ppc64le architectures - - [ Andrew Shadura ] - * New upstream release. - * Refresh patches. - * Update build dependencies. - * Symlink vendor packages to the build directory. - - -- Andrew Shadura Fri, 06 Oct 2017 18:54:06 +0200 - -kubernetes (1.5.5+dfsg-2) unstable; urgency=medium - - * Team upload. - * Don't build on ppc64le due to Go linker problems. See GitHub issue - https://github.com/golang/go/issues/15823. - * Don't build on ppc64 as it's not supported by upstream at the - moment. (Closes: #860505) - - -- Tim Potter Sat, 03 Jun 2017 08:00:51 +1000 - -kubernetes (1.5.5+dfsg-1) unstable; urgency=low - - [ Dmitry Smirnov ] - * Switch to bundled "rkt". - * rules: remove "-p" option from build and test overrides. - * control: drop obsolete "golang-clockwork-dev" alternative. - * New patch to disable test failing on [armel]. - * Upload to unstable. - - [ Tim Potter ] - * New upstream version. [March 2017] - * Big updates to d/rules and d/copyright to update to upstream - changes made since the 1.2.x release. - * Refresh patches to bring up to date with upstream changes since - 1.2.x. - * control: add lsb-base as dependency for sysvinit scripts. - * Suppress spelling-error-in-binary Lintian messages. - - -- Tim Potter Thu, 13 Apr 2017 16:45:57 +1000 - -kubernetes (1.2.5+dfsg-1) experimental; urgency=medium - - * New upstream release [June 2016]. - * Switch to private "github.com/golang/glog" due to log noise. - * Disabled failing tests; no longer ignore failures in tests. - * Build/test using 2 cores only. - * New patch to update appc/cni name space (fixes FTBFS). - * Removed obsolete "spf13-cobra.patch". - - -- Dmitry Smirnov Sun, 03 Jul 2016 04:12:28 +1000 - -kubernetes (1.2.4+dfsg-2) experimental; urgency=medium - - * Added new patch to fix incompatibility with "imdario/mergo" v0.2.2 - (Closes: #825753). - Thanks, Florian Ernst. - * Enable tests but ignore failures for now. - - -- Dmitry Smirnov Fri, 17 Jun 2016 01:41:38 +1000 - -kubernetes (1.2.4+dfsg-1) experimental; urgency=medium - - * New upstream release [May 2016]. - * New patch to print output of "uname -m" on unsupported architectures. - * New "docker.patch" to fix potential FTBFS. - + Build-Depends += "golang-github-docker-distribution-dev". - - -- Dmitry Smirnov Wed, 15 Jun 2016 21:03:01 +1000 - -kubernetes (1.2.3+dfsg-1) experimental; urgency=low - - * Initial release (Closes: #795652). - - -- Dmitry Smirnov Mon, 25 Apr 2016 22:40:12 +1000 diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/control b/kubernetes/kubernetes-1.23.1/debian/deb_folder/control deleted file mode 100644 index 4f46e6411..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/control +++ /dev/null @@ -1,90 +0,0 @@ -Source: kubernetes-1.23.1 -Section: admin -Priority: optional -Maintainer: StarlingX Developers -Build-Depends: debhelper-compat (= 13), - build-essential, - bash-completion, - jq, - rsync, - go-bindata, - go-md2man, - golang-1.17 -Standards-Version: 4.4.1 -Homepage: http://kubernetes.io/ - -Package: kubernetes-1.23.1-client -Provides: kubernetes-utils -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends} -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} -Description: Kubernetes Command Line Tool - The Kubernetes command line tool for interacting with the Kubernetes API. - -Package: kubernetes-1.23.1-master -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - adduser, - lsb-base, - etcd -Recommends: ${misc:Recommends}, kubernetes-1.23.1-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes services for master host - Container Cluster Manager from Google. Kubernetes is an open source system - for managing containerized applications across multiple hosts, providing - basic mechanisms for deployment, maintenance, and scaling of applications. - . - Linux kernel version 3.8 or above is required for proper operation of the - daemon process, and that any lower versions may have subtle and/or glaring - issues. - . - This package provides "kube-apiserver", "kube-controller-manager" and - "kube-scheduler" daemons. - -Package: kubernetes-1.23.1-node -Provides: cadvisor -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - adduser, - conntrack, - conntrackd, - docker.io, - lsb-base, - socat, -Recommends: ${misc:Recommends}, kubernetes-1.23.1-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes services for node host - Container Cluster Manager from Google. Kubernetes is an open source system - for managing containerized applications across multiple hosts, providing - basic mechanisms for deployment, maintenance, and scaling of applications. - . - Linux kernel version 3.8 or above is required for proper operation of the - daemon process, and that any lower versions may have subtle and/or glaring - issues. - -Package: kubernetes-1.23.1-kubeadm -Architecture: amd64 -Depends: ${misc:Depends}, containernetworking-plugins -Recommends: ${misc:Recommends}, kubernetes-1.23.1-client -Built-Using: ${misc:Built-Using} -Description: Kubernetes Cluster Bootstrapping Tool - The Kubernetes command line tool for bootstrapping a Kubernetes cluster. - -Package: kubernetes-1.23.1-misc -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends} -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} -Description: dummy package - Kubernetes dummy package for misc stuff we don't want to install in production. - -Package: kubernetes-1.23.1-unit-test -Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, - hostname, - rsync, - etcd (>= 2.0.9), - network-manager, -Recommends: ${misc:Recommends} -Built-Using: ${misc:Built-Using} diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/copyright b/kubernetes/kubernetes-1.23.1/debian/deb_folder/copyright deleted file mode 100644 index dee773fdc..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/copyright +++ /dev/null @@ -1,477 +0,0 @@ -Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ -Upstream-Name: Kubernetes -Source: https://github.com/kubernetes/kubernetes - -Files: - debian/kubeadm.conf - debian/kubelet-cgroup-setup.sh -Copyright: - 2022 Wind River Systems, Inc. -License: Apache-2.0 - -Files: * -Copyright: - 2011-2016 Google Inc - 2014-2018 the Kubernetes Authors -License: Apache-2.0 -Comment: - examples/storage/mysql-galera/README.md - Copyrights in the above file are fragments of the sample output to console. - examples/storage/hazelcast/README.md - Copyrights in the above file are fragments of the sample output to console. - -Files: - vendor/github.com/coreos/rkt/api/v1alpha/* -Copyright: - 2015 The rkt Authors -License: Apache-2.0 - -Files: - third_party/forked/golang/* -Copyright: - 2009, 2012-2013 The Go Authors -License: BSD-3-Clause~Google - -Files: - third_party/protobuf/* -Copyright: 2008 Google Inc. -License: BSD-3-Clause~Google - -Files: - third_party/forked/shell2junit/* -Copyright: 2009 Manolo Carrasco (Manuel Carrasco Moñino) -License: Apache-2.0 - -Files: - third_party/htpasswd/* -Copyright: - 2008 Eli Carter - 2003-2013 Edgewall Software -License: BSD-3-Clause - -Files: - third_party/intemp/* -Copyright: - 2015 Karl Isenberg -License: Apache-2.0 - -Files: - third_party/swagger-ui/* -Copyright: - 2014 Reverb Technologies, Inc. -License: Apache-2.0 - -Files: - debian/missing-sources/backbone.js - third_party/swagger-ui/lib/backbone-min.js -Copyright: - 2010-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -License: Expat - -Files: - debian/missing-sources/handlebars.runtime-v2.0.0.js - third_party/swagger-ui/lib/handlebars*.js -Copyright: - 2011-2014 Yehuda Katz -License: Expat - -Files: - debian/missing-sources/highlight.js - third_party/swagger-ui/lib/highlight*.js -Copyright: - 2006, Ivan Sagalaev -License: BSD-3-Clause - -Files: - debian/missing-sources/jquery.js - third_party/swagger-ui/lib/jquery-1.8.0.min.js -Copyright: - 2012 jQuery Foundation and other contributors -License: Expat - -Files: - debian/missing-sources/jquery.ba-bbq.js - third_party/swagger-ui/lib/jquery.ba-bbq.min.js -Copyright: - 2010 "Cowboy" Ben Alman -License: Expat -Comment: Alternatively can be GPL-licensed. - -Files: - debian/missing-sources/jquery.slideto.js - third_party/swagger-ui/lib/jquery.slideto.min.js -Copyright: - 2015 Joakim Hedlund -License: Expat -Comment: https://github.com/Sleavely/jQuery-slideto/blob/master/LICENSE - -Files: - third_party/swagger-ui/lib/jquery.wiggle.min.js -Copyright: - WonderGroup, Jordan Thomas -License: Expat - -Files: - third_party/swagger-ui/lib/marked.js -Copyright: - 2011-2014 Christopher Jeffrey -License: Expat - -Files: - debian/missing-sources/underscore.js - third_party/swagger-ui/lib/underscore-min.js -Copyright: - 2009-2014 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors -License: Expat - -Files: - third_party/swagger-ui/lib/shred.bundle.js - third_party/swagger-ui/lib/shred/content.js -Copyright: - 2012-2015 Panda Strike, LLC and Dan Yoder - Alexandru Marasteanu -License: ISC - -Files: - vendor/bitbucket.org/bertimus9/systemstat/* -Copyright: - 2013 Phillip Bond -License: Expat - -Files: - vendor/bitbucket.org/ww/goautoneg/* -Copyright: - 2011 Open Knowledge Foundation Ltd. -License: BSD-3-Clause~OKF - -Files: - vendor/github.com/Azure/azure-sdk-for-go/* -Copyright: - 2016 Microsoft Corporation -License: Apache-2.0 - -Files: - vendor/github.com/Azure/go-autorest/* -Copyright: - 2015 Microsoft Corporation -License: Apache-2.0 - -Files: - vendor/github.com/chai2010/gettext-go/* -Copyright: - 2013 ChaiShushan -License: BSD-3-Clause~Google - -Files: - vendor/github.com/clusterhq/flocker-go/* -Copyright: - 2014-2016 ClusterHQ -License: Apache-2.0 - -Files: - vendor/github.com/containernetworking/cni/* -Copyright: - 2015-2016 CNI authors -License: Apache-2.0 - -Files: - vendor/github.com/codedellemc/goscaleio/* -Copyright: Dell ??? -License: Apache-2.0 -Comment: https://github.com/thecodeteam/goscaleio/issues/32 - -Files: - vendor/github.com/fatih/camelcase/* -Copyright: 2015 Fatih Arslan -License: Expat - -Files: - vendor/github.com/heketi/heketi/* -Copyright: - 2015-2016 The heketi Authors -License: Apache-2.0 or LGPL-3+ or GPL-2 - -Files: - vendor/github.com/libopenstorage/openstorage/* -Copyright: 2015 Openstorage.org -License: Apache-2.0 - -Files: - vendor/github.com/rancher/go-rancher/* -Copyright: 2014-2015 Rancher Labs, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/rubiojr/go-vhd/* -Copyright: 2015 Sergio Rubio -License: Expat - -Files: - vendor/github.com/satori/uuid/* -Copyright: 2013-2016 Maxim Bublis -License: Expat - -Files: - vendor/github.com/dgrijalva/jwt-go/* -Copyright: - 2012 Dave Grijalva -License: Expat - -Files: - vendor/github.com/docker/distribution/* -Copyright: - 2014-2016 Docker, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/docker/docker/* -Copyright: - 2012-2016 Docker, Inc. -License: Apache-2.0 - -Files: - vendor/github.com/gogo/protobuf/* -Copyright: - 2008 Google Inc. - 2010-2012, The Go Authors. - 2013, Vastech SA (PTY) LTD. -License: BSD-3-Clause - -Files: - vendor/github.com/golang/protobuf/* -Copyright: - 2008-2016, The Go Authors. - 2008 Google Inc. -License: BSD-3-Clause - -Files: - vendor/github.com/square/go-jose/* -Copyright: - 2014-2016 Square Inc. -License: Apache-2.0 - -Files: - vendor/github.com/square/go-jose/json/* -Copyright: - 2012 The Go Authors -License: BSD-3-Clause -Comment: The code is derived from the `encoding/json` package from Go 1.6 - -Files: - vendor/github.com/storageos/go-api/* -Copyright: 2015-2017 StorageOS -License: Expat - -Files: - vendor/github.com/storageos/go-api/client_unix.go - vendor/github.com/storageos/go-api/client_windows.go -Copyright: - 2013-2017 go-dockerclient authors -License: BSD-2-Clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - . - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Files: - vendor/google.golang.org/grpc/* -Copyright: - 2014-2016 Google Inc. -License: BSD-3-Clause - -Files: - debian/* -Copyright: - 2015-2019 Dmitry Smirnov - 2017 Tim Potter -License: GPL-3+ - -Files: debian/patches/* -Copyright: 2015-2016 Dmitry Smirnov -License: GPL-3+ or Apache-2.0 -Comment: patches can be licensed under the same terms as upstream. - -License: Apache-2.0 - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - . - http://www.apache.org/licenses/LICENSE-2.0 - . - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - . - On Debian systems, the complete text of the Apache version 2.0 license - can be found in "/usr/share/common-licenses/Apache-2.0". - -License: BSD-3-Clause~Google - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - . - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following disclaimer - in the documentation and/or other materials provided with the - distribution. - * Neither the name of Google Inc. nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: BSD-3-Clause - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of the nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: GPL-3+ - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - ․ - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - ․ - The complete text of the GNU General Public License version 3 - can be found in "/usr/share/common-licenses/GPL-3". - -License: BSD-3-Clause~OKF - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are - met: - . - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - . - Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in - the documentation and/or other materials provided with the - distribution. - . - Neither the name of the Open Knowledge Foundation Ltd. nor the - names of its contributors may be used to endorse or promote - products derived from this software without specific prior written - permission. - . - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -License: Expat - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - the Software, and to permit persons to whom the Software is furnished to do so, - subject to the following conditions: - . - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - . - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -License: ISC - Permission to use, copy, modify, and/or distribute this software for - any purpose with or without fee is hereby granted, provided that the - above copyright notice and this permission notice appear in all - copies. - . - THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL - WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL - DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR - PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER - TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - PERFORMANCE OF THIS SOFTWARE. - -License: LGPL-3+ - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 3 of the License, or (at your option) any later version. - ․ - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - ․ - On Debian systems, the complete text of the GNU Lesser General Public - License Version 3 can be found in "/usr/share/common-licenses/LGPL-3". - -License: GPL-2 - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the Free - Software Foundation, version 2 of the License. - ․ - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - ․ - On Debian systems, the complete text of the GNU General Public - License Version 2 can be found in "/usr/share/common-licenses/GPL-2". diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubeadm.conf b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubeadm.conf deleted file mode 100644 index d8b77e9dc..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubeadm.conf +++ /dev/null @@ -1,18 +0,0 @@ -# Note: This dropin only works with kubeadm and kubelet v1.11+ -[Service] -Environment="KUBELET_KUBECONFIG_ARGS=--bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf" -Environment="KUBELET_CONFIG_ARGS=--config=/var/lib/kubelet/config.yaml" -# This is a file that "kubeadm init" and "kubeadm join" generates at runtime, populating the KUBELET_KUBEADM_ARGS variable dynamically -EnvironmentFile=-/var/lib/kubelet/kubeadm-flags.env -# This is a file that the user can use for overrides of the kubelet args as a last resort. Preferably, the user should use -# the .NodeRegistration.KubeletExtraArgs object in the configuration files instead. KUBELET_EXTRA_ARGS should be sourced from this file. -EnvironmentFile=-/etc/default/kubelet -ExecStart= -ExecStart=/usr/bin/kubelet $KUBELET_KUBECONFIG_ARGS $KUBELET_CONFIG_ARGS $KUBELET_KUBEADM_ARGS $KUBELET_EXTRA_ARGS -ExecStartPre=-/usr/local/sbin/sanitize_kubelet_reserved_cpus.sh /etc/default/kubelet -ExecStartPre=-/usr/bin/kubelet-cgroup-setup.sh -ExecStartPost=/bin/bash -c 'echo $MAINPID > /var/run/kubelet.pid;' -ExecStopPost=/bin/rm -f /var/run/kubelet.pid -Restart=always -StartLimitInterval=0 -RestartSec=10 diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubelet-cgroup-setup.sh b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubelet-cgroup-setup.sh deleted file mode 100644 index 385314bfe..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubelet-cgroup-setup.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/bin/bash -# -# Copyright (c) 2019 Wind River Systems, Inc. -# -# SPDX-License-Identifier: Apache-2.0 -# -# This script does minimal cgroup setup for kubelet. This creates k8s-infra -# cgroup for a minimal set of resource controllers, and configures cpuset -# attributes to span all online cpus and nodes. This will do nothing if -# the k8s-infra cgroup already exists (i.e., assume already configured). -# NOTE: The creation of directories under /sys/fs/cgroup is volatile, and -# does not persist reboots. The cpuset.mems and cpuset.cpus is later updated -# by puppet kubernetes.pp manifest. -# - -# Define minimal path -PATH=/bin:/usr/bin:/usr/local/bin - -# Log info message to /var/log/daemon.log -function LOG { - logger -p daemon.info "$0($$): $@" -} - -# Log error message to /var/log/daemon.log -function ERROR { - logger -s -p daemon.error "$0($$): ERROR: $@" -} - -# Create minimal cgroup directories and configure cpuset attributes if required -function create_cgroup { - local cg_name=$1 - local cg_nodeset=$2 - local cg_cpuset=$3 - - local CGROUP=/sys/fs/cgroup - local CONTROLLERS_AUTO_DELETED=("pids" "hugetlb") - local CONTROLLERS_PRESERVED=("cpuset" "memory" "cpu,cpuacct" "systemd") - local cnt='' - local CGDIR='' - local RC=0 - - # Ensure that these cgroups are created every time as they are auto deleted - for cnt in ${CONTROLLERS_AUTO_DELETED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - continue - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # These cgroups are preserved so if any of these are encountered additional - # cgroup setup is not required - for cnt in ${CONTROLLERS_PRESERVED[@]}; do - CGDIR=${CGROUP}/${cnt}/${cg_name} - if [ -d ${CGDIR} ]; then - LOG "Nothing to do, already configured: ${CGDIR}." - exit ${RC} - fi - LOG "Creating: ${CGDIR}" - mkdir -p ${CGDIR} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Creating: ${CGDIR}, rc=${RC}" - exit ${RC} - fi - done - - # Customize cpuset attributes - LOG "Configuring cgroup: ${cg_name}, nodeset: ${cg_nodeset}, cpuset: ${cg_cpuset}" - CGDIR=${CGROUP}/cpuset/${cg_name} - local CGMEMS=${CGDIR}/cpuset.mems - local CGCPUS=${CGDIR}/cpuset.cpus - local CGTASKS=${CGDIR}/tasks - - # Assign cgroup memory nodeset - LOG "Assign nodeset ${cg_nodeset} to ${CGMEMS}" - /bin/echo ${cg_nodeset} > ${CGMEMS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Unable to write to: ${CGMEMS}, rc=${RC}" - exit ${RC} - fi - - # Assign cgroup cpus - LOG "Assign cpuset ${cg_cpuset} to ${CGCPUS}" - /bin/echo ${cg_cpuset} > ${CGCPUS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Assigning: ${cg_cpuset} to ${CGCPUS}, rc=${RC}" - exit ${RC} - fi - - # Set file ownership - chown root:root ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting owner for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - # Set file mode permissions - chmod 644 ${CGMEMS} ${CGCPUS} ${CGTASKS} - RC=$? - if [ ${RC} -ne 0 ]; then - ERROR "Setting mode for: ${CGMEMS}, ${CGCPUS}, ${CGTASKS}, rc=${RC}" - exit ${RC} - fi - - return ${RC} -} - -if [ $UID -ne 0 ]; then - ERROR "Require sudo/root." - exit 1 -fi - -# Configure default kubepods cpuset to span all online cpus and nodes. -ONLINE_NODESET=$(/bin/cat /sys/devices/system/node/online) -ONLINE_CPUSET=$(/bin/cat /sys/devices/system/cpu/online) - -# Configure kubelet cgroup to match cgroupRoot. -create_cgroup 'k8s-infra' ${ONLINE_NODESET} ${ONLINE_CPUSET} - -exit $? - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-client.install b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-client.install deleted file mode 100644 index 166fe37dc..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-client.install +++ /dev/null @@ -1,3 +0,0 @@ -usr/local/kubernetes/1.23.1/stage2/usr/bin/kubectl -usr/local/kubernetes/1.23.1/stage2/usr/share/bash-completion/completions/kubectl - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-client.lintian-overrides b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-client.lintian-overrides deleted file mode 100644 index 160b6783b..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-client.lintian-overrides +++ /dev/null @@ -1,9 +0,0 @@ -## Generated man pages: TODO -manpage-has-bad-whatis-entry usr/share/man/* -manpage-has-errors-from-man usr/share/man/man1/* - -## Bash-completion script does not have to be executable: -script-not-executable usr/share/bash-completion/completions/kubectl - -## Override annoying/useless messages -kubernetes-client: spelling-error-in-binary diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-kubeadm.dirs b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-kubeadm.dirs deleted file mode 100644 index 6fee8d92a..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-kubeadm.dirs +++ /dev/null @@ -1 +0,0 @@ -usr/local/kubernetes/1.23.1/stage2/etc/systemd/system/kubelet.service.d/ diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-kubeadm.install b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-kubeadm.install deleted file mode 100644 index 2cc51eed2..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-kubeadm.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/local/kubernetes/1.23.1/stage1/usr/bin/kubeadm -usr/local/kubernetes/1.23.1/stage2/etc/systemd/system/kubelet.service.d/kubeadm.conf diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.dirs b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.dirs deleted file mode 100644 index 373ba66e7..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.dirs +++ /dev/null @@ -1,5 +0,0 @@ -etc/kubernetes-1.23.1 -etc/kubernetes-1.23.1/addons -etc/kubernetes-1.23.1/addons/volumesnapshots -etc/kubernetes-1.23.1/addons/volumesnapshots/crd -etc/kubernetes-1.23.1/addons/volumesnapshots/volume-snapshot-controller diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.install b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.install deleted file mode 100644 index cf338e67d..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.install +++ /dev/null @@ -1,8 +0,0 @@ -usr/bin/kube-apiserver -usr/bin/kube-controller-manager -usr/bin/kube-scheduler -etc/kubernetes-1.23.1/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml -etc/kubernetes-1.23.1/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml -etc/kubernetes-1.23.1/addons/volumesnapshots/crd/snapshot.storage.k8s.io_volumesnapshots.yaml -etc/kubernetes-1.23.1/addons/volumesnapshots/volume-snapshot-controller/volume-snapshot-controller-deployment.yaml -etc/kubernetes-1.23.1/addons/volumesnapshots/volume-snapshot-controller/rbac-volume-snapshot-controller.yaml diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.lintian-overrides b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.lintian-overrides deleted file mode 100644 index f73c63ffd..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-master.lintian-overrides +++ /dev/null @@ -1,7 +0,0 @@ -## No manual page for hyperkube -kubernetes-master: binary-without-manpage usr/bin/hyperkube - -## Override annoying/useless messages -kubernetes-master: spelling-error-in-binary -kubernetes-master: manpage-has-errors-from-man usr/share/man/man1/* -kubernetes-master: manpage-has-bad-whatis-entry usr/share/man/man1/* diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-misc.install b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-misc.install deleted file mode 100644 index 8aa6d765e..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-misc.install +++ /dev/null @@ -1,11 +0,0 @@ -#TODO with genmanpages -#usr/share/man/man1/kube-apiserver.1* -#usr/share/man/man1/kube-controller-manager.1* -#usr/share/man/man1/kube-scheduler.1* -#usr/share/man/man1/kube-proxy.1* -usr/bin/kube-proxy -#usr/share/man/man1/kubelet.1* -#usr/share/man/man1/kubeadm.1* -#usr/share/man/man1/kubeadm-* -#usr/share/man/man1/kubectl.1* -#usr/share/man/man1/kubectl-* diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-node.install b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-node.install deleted file mode 100644 index 00fa7568f..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-node.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/local/kubernetes/1.23.1/stage2/usr/bin/kubelet -usr/local/kubernetes/1.23.1/stage2/usr/bin/kubelet-cgroup-setup.sh diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-node.lintian-overrides b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-node.lintian-overrides deleted file mode 100644 index 99d470def..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-node.lintian-overrides +++ /dev/null @@ -1,4 +0,0 @@ -## Override annoying/useless messages -kubernetes-node: spelling-error-in-binary -kubernetes-node: manpage-has-errors-from-man usr/share/man/man1/* -kubernetes-node: manpage-has-bad-whatis-entry usr/share/man/man1/* diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-unit-test.install b/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-unit-test.install deleted file mode 100644 index da8847677..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/kubernetes-1.23.1-unit-test.install +++ /dev/null @@ -1,2 +0,0 @@ -var/lib/kubernetes-unit-test/ - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch deleted file mode 100644 index f56c20ee0..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/Revert-use-subpath-for-coredns-only-for-default-repo.patch +++ /dev/null @@ -1,113 +0,0 @@ -From f9dd597f4e8c8c66f08d661efcbd29479e4e069d Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Tue, 25 Jan 2022 13:56:30 -0500 -Subject: [PATCH] Revert "use subpath for coredns only for default repository" - -This reverts commit 38a41e1557649a7cc763bf737779db9aa03ec75e. - -Co-authored-by: Jim Gauld -Signed-off-by: Gleb Aronsky - -diff --git a/cmd/kubeadm/app/constants/constants.go b/cmd/kubeadm/app/constants/constants.go -index c2b8f6e64be..b00ccea315e 100644 ---- a/cmd/kubeadm/app/constants/constants.go -+++ b/cmd/kubeadm/app/constants/constants.go -@@ -337,7 +337,7 @@ const ( - CoreDNSDeploymentName = "coredns" - - // CoreDNSImageName specifies the name of the image for CoreDNS add-on -- CoreDNSImageName = "coredns" -+ CoreDNSImageName = "coredns/coredns" - - // CoreDNSVersion is the version of CoreDNS to be deployed if it is used - CoreDNSVersion = "v1.8.6" -diff --git a/cmd/kubeadm/app/images/images.go b/cmd/kubeadm/app/images/images.go -index ee55eb6c995..bdb61caa373 100644 ---- a/cmd/kubeadm/app/images/images.go -+++ b/cmd/kubeadm/app/images/images.go -@@ -22,7 +22,6 @@ import ( - "k8s.io/klog/v2" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" - ) -@@ -48,10 +47,6 @@ func GetDNSImage(cfg *kubeadmapi.ClusterConfiguration) string { - if cfg.DNS.ImageRepository != "" { - dnsImageRepository = cfg.DNS.ImageRepository - } -- // Handle the renaming of the official image from "k8s.gcr.io/coredns" to "k8s.gcr.io/coredns/coredns -- if dnsImageRepository == kubeadmapiv1beta2.DefaultImageRepository { -- dnsImageRepository = fmt.Sprintf("%s/coredns", dnsImageRepository) -- } - // DNS uses an imageTag that corresponds to the DNS version matching the Kubernetes version - dnsImageTag := constants.CoreDNSVersion - -diff --git a/cmd/kubeadm/app/images/images_test.go b/cmd/kubeadm/app/images/images_test.go -index 2b8affce236..91cd4294351 100644 ---- a/cmd/kubeadm/app/images/images_test.go -+++ b/cmd/kubeadm/app/images/images_test.go -@@ -22,7 +22,6 @@ import ( - "testing" - - kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" -- kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" - "k8s.io/kubernetes/cmd/kubeadm/app/constants" - ) - -@@ -227,51 +226,4 @@ func TestGetAllImages(t *testing.T) { - } - } - --func TestGetDNSImage(t *testing.T) { -- var tests = []struct { -- expected string -- cfg *kubeadmapi.ClusterConfiguration -- }{ -- { -- expected: "foo.io/coredns:v1.8.6", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: kubeadmapiv1beta2.DefaultImageRepository + "/coredns/coredns:v1.8.6", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: kubeadmapiv1beta2.DefaultImageRepository, -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- }, -- }, -- }, -- { -- expected: "foo.io/coredns/coredns:v1.8.6", -- cfg: &kubeadmapi.ClusterConfiguration{ -- ImageRepository: "foo.io", -- DNS: kubeadmapi.DNS{ -- Type: kubeadmapi.CoreDNS, -- ImageMeta: kubeadmapi.ImageMeta{ -- ImageRepository: "foo.io/coredns", -- }, -- }, -- }, -- }, -- } -- -- for _, test := range tests { -- actual := GetDNSImage(test.cfg) -- if actual != test.expected { -- t.Errorf( -- "failed to GetDNSImage:\n\texpected: %s\n\t actual: %s", -- test.expected, -- actual, -- ) -- } -- } - } --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch deleted file mode 100644 index 63cdfbdbb..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/enable-support-for-kubernetes-to-ignore-isolcpus.patch +++ /dev/null @@ -1,79 +0,0 @@ -From 087dcfa1a84ec38541fa9870937d76b80a707e2c Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 23 Oct 2020 17:46:10 -0600 -Subject: [PATCH 6/7] enable support for kubernetes to ignore isolcpus - -The normal mechanisms for allocating isolated CPUs do not allow -a mix of isolated and exclusive CPUs in the same container. In -order to allow this in *very* limited cases where the pod spec -is known in advance we will add the ability to disable the normal -isolcpus behaviour. - -If the file "/etc/kubernetes/ignore_isolcpus" exists, then kubelet -will basically forget everything it knows about isolcpus and just -treat them like regular CPUs. - -The admin user can then rely on the fact that CPU allocation is -deterministic to ensure that the isolcpus they configure end up being -allocated to the correct pods. - -Signed-off-by: Daniel Safta ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 8 ++++++++ - pkg/kubelet/cm/cpumanager/policy_static.go | 7 +++++++ - 2 files changed, 15 insertions(+) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 2f5b06dc..d9ec63bb 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -20,6 +20,7 @@ import ( - "fmt" - "io/ioutil" - "math" -+ "os" - "strings" - "sync" - "time" -@@ -55,6 +56,13 @@ const cpuManagerStateFileName = "cpu_manager_state" - - // get the system-level isolated CPUs - func getIsolcpus() cpuset.CPUSet { -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ klog.Infof("[cpumanager] turning off isolcpus awareness") -+ return cpuset.NewCPUSet() -+ } -+ - dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") - if err != nil { - klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 72a99496..ee389a85 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "os" - "strconv" - - v1 "k8s.io/api/core/v1" -@@ -658,6 +659,12 @@ func isKubeInfra(pod *v1.Pod) bool { - - // get the isolated CPUs (if any) from the devices associated with a specific container - func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // This is a gross hack to basically turn off awareness of isolcpus to enable -+ // isolated cpus to be allocated to pods the same way as non-isolated CPUs. -+ if _, err := os.Stat("/etc/kubernetes/ignore_isolcpus"); err == nil { -+ return cpuset.NewCPUSet() -+ } -+ - // NOTE: This is required for TestStaticPolicyAdd() since makePod() does - // not create UID. We also need a way to properly stub devicemanager. - if len(string(pod.UID)) == 0 { --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch deleted file mode 100644 index 14e530c73..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubeadm-create-platform-pods-with-zero-CPU-resources.patch +++ /dev/null @@ -1,108 +0,0 @@ -From de653bd0823b248d623a39c17a3872e85ce952b0 Mon Sep 17 00:00:00 2001 -From: Chris Friesen -Date: Fri, 3 Sep 2021 18:05:15 -0400 -Subject: [PATCH 5/7] kubeadm: create platform pods with zero CPU resources - -We want to specify zero CPU resources when creating the manifests -for the static platform pods, as a workaround for the lack of -separate resource tracking for platform resources. - -We also specify zero CPU resources for the coredns deployment. -manifests.go appears to be the main file for this, not sure if the -others are used but I changed them just in case. - -Signed-off-by: Daniel Safta ---- - cluster/addons/dns/coredns/coredns.yaml.base | 2 +- - cluster/addons/dns/coredns/coredns.yaml.in | 2 +- - cluster/addons/dns/coredns/coredns.yaml.sed | 2 +- - cmd/kubeadm/app/phases/addons/dns/manifests.go | 2 +- - cmd/kubeadm/app/phases/controlplane/manifests.go | 6 +++--- - 5 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/cluster/addons/dns/coredns/coredns.yaml.base b/cluster/addons/dns/coredns/coredns.yaml.base -index 4ee054f8ba5..d2b58f4af0e 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.base -+++ b/cluster/addons/dns/coredns/coredns.yaml.base -@@ -138,7 +138,7 @@ spec: - limits: - memory: __DNS__MEMORY__LIMIT__ - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.in b/cluster/addons/dns/coredns/coredns.yaml.in -index 1f791e447c9..ff03a801646 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.in -+++ b/cluster/addons/dns/coredns/coredns.yaml.in -@@ -138,7 +138,7 @@ spec: - limits: - memory: 'dns_memory_limit' - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cluster/addons/dns/coredns/coredns.yaml.sed b/cluster/addons/dns/coredns/coredns.yaml.sed -index 4d64278aaa4..38fc9196b28 100644 ---- a/cluster/addons/dns/coredns/coredns.yaml.sed -+++ b/cluster/addons/dns/coredns/coredns.yaml.sed -@@ -138,7 +138,7 @@ spec: - limits: - memory: $DNS_MEMORY_LIMIT - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/addons/dns/manifests.go b/cmd/kubeadm/app/phases/addons/dns/manifests.go -index 3ac6856bfc6..0763b4c63db 100644 ---- a/cmd/kubeadm/app/phases/addons/dns/manifests.go -+++ b/cmd/kubeadm/app/phases/addons/dns/manifests.go -@@ -95,7 +95,7 @@ spec: - limits: - memory: 170Mi - requests: -- cpu: 100m -+ cpu: 0 - memory: 70Mi - args: [ "-conf", "/etc/coredns/Corefile" ] - volumeMounts: -diff --git a/cmd/kubeadm/app/phases/controlplane/manifests.go b/cmd/kubeadm/app/phases/controlplane/manifests.go -index 8181bea63a4..4c4b4448dd4 100644 ---- a/cmd/kubeadm/app/phases/controlplane/manifests.go -+++ b/cmd/kubeadm/app/phases/controlplane/manifests.go -@@ -60,7 +60,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS), - ReadinessProbe: staticpodutil.ReadinessProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/readyz", int(endpoint.BindPort), v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetAPIServerProbeAddress(endpoint), "/livez", int(endpoint.BindPort), v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("250m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeAPIServer), - map[string]string{kubeadmconstants.KubeAPIServerAdvertiseAddressEndpointAnnotationKey: endpoint.String()}), -@@ -72,7 +72,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeControllerManager)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetControllerManagerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeControllerManagerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("200m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeControllerManager), nil), - kubeadmconstants.KubeScheduler: staticpodutil.ComponentPod(v1.Container{ -@@ -83,7 +83,7 @@ func GetStaticPodSpecs(cfg *kubeadmapi.ClusterConfiguration, endpoint *kubeadmap - VolumeMounts: staticpodutil.VolumeMountMapToSlice(mounts.GetVolumeMounts(kubeadmconstants.KubeScheduler)), - LivenessProbe: staticpodutil.LivenessProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS), - StartupProbe: staticpodutil.StartupProbe(staticpodutil.GetSchedulerProbeAddress(cfg), "/healthz", kubeadmconstants.KubeSchedulerPort, v1.URISchemeHTTPS, cfg.APIServer.TimeoutForControlPlane), -- Resources: staticpodutil.ComponentResources("100m"), -+ Resources: staticpodutil.ComponentResources("0"), - Env: kubeadmutil.GetProxyEnvVars(), - }, mounts.GetVolumes(kubeadmconstants.KubeScheduler), nil), - } --- -2.17.1 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch deleted file mode 100644 index fc115417d..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch +++ /dev/null @@ -1,287 +0,0 @@ -From cde296d121955a9ee4f148f775d73bb746a17310 Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Fri, 21 Jan 2022 17:03:57 -0500 -Subject: kubelet cpumanager disable CFS quota throttling for - Guaranteed pods - -This disables CFS CPU quota to avoid performance degradation due to -Linux kernel CFS quota implementation. Note that 4.18 kernel attempts -to solve the CFS throttling problem, but there are reports that it is -not completely effective. - -This disables CFS quota throttling for Guaranteed pods for both -parent and container cgroups by writing -1 to cgroup cpu.cfs_quota_us. -Disabling has a dramatic latency improvement for HTTP response times. - -This patch is refactored in 1.22.5 due to new internal_container_lifecycle -framework. We leverage the same mechanism to set Linux resources as: -cpu manager: specify the container CPU set during the creation - -Co-authored-by: Jim Gauld -Signed-off-by: Gleb Aronsky - ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 7 +++ - pkg/kubelet/cm/cpumanager/fake_cpu_manager.go | 12 +++-- - pkg/kubelet/cm/helpers_linux.go | 12 ++++- - pkg/kubelet/cm/helpers_linux_test.go | 45 ++++++++++--------- - .../cm/internal_container_lifecycle_linux.go | 11 ++++- - 5 files changed, 61 insertions(+), 26 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index a876d413870..6ad289336ea 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -72,6 +72,9 @@ type Manager interface { - // State returns a read-only interface to the internal CPU manager state. - State() state.Reader - -+ // GetCPUPolicy returns the assigned CPU manager policy -+ GetCPUPolicy() string -+ - // GetTopologyHints implements the topologymanager.HintProvider Interface - // and is consulted to achieve NUMA aware resource alignment among this - // and other resource controllers. -@@ -314,6 +317,10 @@ func (m *manager) State() state.Reader { - return m.state - } - -+func (m *manager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *manager) GetTopologyHints(pod *v1.Pod, container *v1.Container) map[string][]topologymanager.TopologyHint { - // The pod is during the admission phase. We need to save the pod to avoid it - // being cleaned before the admission ended -diff --git a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -index 93369705135..8082bbeebcb 100644 ---- a/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/fake_cpu_manager.go -@@ -17,7 +17,7 @@ limitations under the License. - package cpumanager - - import ( -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" - "k8s.io/kubernetes/pkg/kubelet/cm/containermap" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" -@@ -28,7 +28,8 @@ import ( - ) - - type fakeManager struct { -- state state.State -+ policy Policy -+ state state.State - } - - func (m *fakeManager) Start(activePods ActivePodsFunc, sourcesReady config.SourcesReady, podStatusProvider status.PodStatusProvider, containerRuntime runtimeService, initialContainers containermap.ContainerMap) error { -@@ -70,6 +71,10 @@ func (m *fakeManager) State() state.Reader { - return m.state - } - -+func (m *fakeManager) GetCPUPolicy() string { -+ return m.policy.Name() -+} -+ - func (m *fakeManager) GetExclusiveCPUs(podUID, containerName string) cpuset.CPUSet { - klog.InfoS("GetExclusiveCPUs", "podUID", podUID, "containerName", containerName) - return cpuset.CPUSet{} -@@ -88,6 +93,7 @@ func (m *fakeManager) GetCPUAffinity(podUID, containerName string) cpuset.CPUSet - // NewFakeManager creates empty/fake cpu manager - func NewFakeManager() Manager { - return &fakeManager{ -- state: state.NewMemoryState(), -+ policy: &nonePolicy{}, -+ state: state.NewMemoryState(), - } - } -diff --git a/pkg/kubelet/cm/helpers_linux.go b/pkg/kubelet/cm/helpers_linux.go -index 83c80501f5d..6e8f232e4d6 100644 ---- a/pkg/kubelet/cm/helpers_linux.go -+++ b/pkg/kubelet/cm/helpers_linux.go -@@ -25,7 +25,7 @@ import ( - - libcontainercgroups "github.com/opencontainers/runc/libcontainer/cgroups" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/types" - utilfeature "k8s.io/apiserver/pkg/util/feature" - "k8s.io/kubernetes/pkg/api/v1/resource" -@@ -182,6 +182,16 @@ func ResourceConfigForPod(pod *v1.Pod, enforceCPULimits bool, cpuPeriod uint64, - // build the result - result := &ResourceConfig{} - if qosClass == v1.PodQOSGuaranteed { -+ // Disable CFS CPU quota to avoid performance degradation due to -+ // Linux kernel CFS throttle implementation. -+ // NOTE: 4.18 kernel attempts to solve CFS throttling problem, -+ // but there are reports that it is not completely effective. -+ // This will configure cgroup CFS parameters at pod level: -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods//cpu.cfs_period_us -+ cpuQuota = int64(-1) -+ cpuPeriod = uint64(100000) -+ - result.CpuShares = &cpuShares - result.CpuQuota = &cpuQuota - result.CpuPeriod = &cpuPeriod -diff --git a/pkg/kubelet/cm/helpers_linux_test.go b/pkg/kubelet/cm/helpers_linux_test.go -index 101b21e682a..91c5782e3b4 100644 ---- a/pkg/kubelet/cm/helpers_linux_test.go -+++ b/pkg/kubelet/cm/helpers_linux_test.go -@@ -25,7 +25,7 @@ import ( - "testing" - "time" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - utilfeature "k8s.io/apiserver/pkg/util/feature" - featuregatetesting "k8s.io/component-base/featuregate/testing" -@@ -64,8 +64,9 @@ func TestResourceConfigForPod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -204,8 +205,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -218,8 +219,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guarenteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -232,8 +233,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -246,8 +247,8 @@ func TestResourceConfigForPod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "burstable-partial-limits-with-init-containers": { - pod: &v1.Pod{ -@@ -309,8 +310,10 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - burstablePartialShares := MilliCPUToShares(200) - burstableQuota := MilliCPUToQuota(200, int64(defaultQuotaPeriod)) - guaranteedShares := MilliCPUToShares(100) -- guaranteedQuota := MilliCPUToQuota(100, int64(defaultQuotaPeriod)) -- guaranteedTunedQuota := MilliCPUToQuota(100, int64(tunedQuotaPeriod)) -+ guaranteedQuotaPeriod := uint64(100000) -+ guaranteedQuota := int64(-1) -+ guaranteedTunedQuota := int64(-1) -+ - memoryQuantity = resource.MustParse("100Mi") - cpuNoLimit := int64(-1) - guaranteedMemory := memoryQuantity.Value() -@@ -449,8 +452,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement": { - pod: &v1.Pod{ -@@ -463,8 +466,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: defaultQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &defaultQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-with-tuned-quota": { - pod: &v1.Pod{ -@@ -477,8 +480,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: true, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &guaranteedTunedQuota, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - "guaranteed-no-cpu-enforcement-with-tuned-quota": { - pod: &v1.Pod{ -@@ -491,8 +494,8 @@ func TestResourceConfigForPodWithCustomCPUCFSQuotaPeriod(t *testing.T) { - }, - }, - enforceCPULimits: false, -- quotaPeriod: tunedQuotaPeriod, -- expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &tunedQuotaPeriod, Memory: &guaranteedMemory}, -+ quotaPeriod: guaranteedQuotaPeriod, -+ expected: &ResourceConfig{CpuShares: &guaranteedShares, CpuQuota: &cpuNoLimit, CpuPeriod: &guaranteedQuotaPeriod, Memory: &guaranteedMemory}, - }, - } - -diff --git a/pkg/kubelet/cm/internal_container_lifecycle_linux.go b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -index cb7c0cfa543..956696a51e8 100644 ---- a/pkg/kubelet/cm/internal_container_lifecycle_linux.go -+++ b/pkg/kubelet/cm/internal_container_lifecycle_linux.go -@@ -23,8 +23,9 @@ import ( - "strconv" - "strings" - -- "k8s.io/api/core/v1" -+ v1 "k8s.io/api/core/v1" - runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1" -+ v1qos "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos" - ) - - func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, container *v1.Container, containerConfig *runtimeapi.ContainerConfig) error { -@@ -35,6 +36,14 @@ func (i *internalContainerLifecycleImpl) PreCreateContainer(pod *v1.Pod, contain - } - } - -+ // Disable cgroup CFS throttle at the container level. -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_quota_us -+ // /sys/fs/cgroup/cpu/k8s-infra/kubepods///cpu.cfs_period_us -+ if i.cpuManager.GetCPUPolicy() == "static" && v1qos.GetPodQOS(pod) == v1.PodQOSGuaranteed { -+ containerConfig.Linux.Resources.CpuPeriod = int64(100000) -+ containerConfig.Linux.Resources.CpuQuota = int64(-1) -+ } -+ - if i.memoryManager != nil { - numaNodes := i.memoryManager.GetMemoryNUMANodes(pod, container) - if numaNodes.Len() > 0 { --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch deleted file mode 100644 index 6715693a1..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch +++ /dev/null @@ -1,150 +0,0 @@ -From c143985b9f9390c59ebdccfdbe160f63008abebb Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Mon, 21 Mar 2022 17:25:07 -0300 -Subject: [PATCH] kubelet cpumanager infra pods use system reserved CPUs - -This assigns system infrastructure pods to the "reserved" cpuset -to isolate them from the shared pool of CPUs. - -Infrastructure pods include any pods that belong to the kube-system, -armada, cert-manager, vault, platform-deployment-manager, portieris, -notification, flux-helm or metrics-server namespaces. - -The implementation is a bit simplistic, it is assumed that the -"reserved" cpuset is large enough to handle all infrastructure pods -CPU allocations. - -This also prevents infrastucture pods from using Guaranteed resources. - -Co-authored-by: Jim Gauld -Signed-off-by: Gleb Aronsky -Signed-off-by: Thiago Miranda -Signed-off-by: Kaustubh Dhokte ---- - pkg/kubelet/cm/cpumanager/policy_static.go | 47 +++++++++++++++++-- - .../cm/cpumanager/policy_static_test.go | 19 +++++++- - 2 files changed, 61 insertions(+), 5 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index 9697f4d4bb0..f603daf4c88 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -53,6 +53,11 @@ func (e SMTAlignmentError) Type() string { - return ErrorSMTAlignment - } - -+// Define namespaces used by platform infrastructure pods -+var infraNamespaces = [...]string{ -+ "kube-system", "armada", "cert-manager", "platform-deployment-manager", "portieris", "vault", "notification", "flux-helm", "metrics-server", -+} -+ - // staticPolicy is a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. -@@ -121,10 +126,11 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - klog.InfoS("Static policy created with configuration", "options", opts) - - policy := &staticPolicy{ -- topology: topology, -- affinity: affinity, -- cpusToReuse: make(map[string]cpuset.CPUSet), -- options: opts, -+ topology: topology, -+ affinity: affinity, -+ excludeReserved: excludeReserved, -+ cpusToReuse: make(map[string]cpuset.CPUSet), -+ options: opts, - } - - allCPUs := topology.CPUDetails.CPUs() -@@ -263,6 +269,25 @@ func (p *staticPolicy) updateCPUsToReuse(pod *v1.Pod, container *v1.Container, c - } - - func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Container) error { -+ // Process infra pods before guaranteed pods -+ if isKubeInfra(pod) { -+ // Container belongs in reserved pool. -+ // We don't want to fall through to the p.guaranteedCPUs() clause below so return either nil or error. -+ if _, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ klog.Infof("[cpumanager] static policy: reserved container already present in state, skipping (namespace: %s, pod UID: %s, pod: %s, container: %s)", pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } -+ -+ cpuset := p.reserved -+ if cpuset.IsEmpty() { -+ // If this happens then someone messed up. -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ } -+ s.SetCPUSet(string(pod.UID), container.Name, cpuset) -+ klog.Infof("[cpumanager] static policy: reserved: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -+ return nil -+ } -+ - if numCPUs := p.guaranteedCPUs(pod, container); numCPUs != 0 { - klog.InfoS("Static policy: Allocate", "pod", klog.KObj(pod), "containerName", container.Name) - // container belongs in an exclusively allocated pool -@@ -367,6 +392,10 @@ func (p *staticPolicy) guaranteedCPUs(pod *v1.Pod, container *v1.Container) int - if cpuQuantity.Value()*1000 != cpuQuantity.MilliValue() { - return 0 - } -+ // Infrastructure pods use reserved CPUs even if they're in the Guaranteed QoS class -+ if isKubeInfra(pod) { -+ return 0 -+ } - // Safe downcast to do for all systems with < 2.1 billion CPUs. - // Per the language spec, `int` is guaranteed to be at least 32 bits wide. - // https://golang.org/ref/spec#Numeric_types -@@ -580,3 +609,13 @@ func (p *staticPolicy) generateCPUTopologyHints(availableCPUs cpuset.CPUSet, reu - - return hints - } -+ -+// check if a given pod is in a platform infrastructure namespace -+func isKubeInfra(pod *v1.Pod) bool { -+ for _, namespace := range infraNamespaces { -+ if namespace == pod.Namespace { -+ return true -+ } -+ } -+ return false -+} -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 80bd04a1f92..34c5a23c553 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -830,7 +830,8 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - } - - func TestStaticPolicyAddWithResvList(t *testing.T) { -- -+ infraPod := makePod("fakePod", "fakeContainer2", "200m", "200m") -+ infraPod.Namespace = "kube-system" - testCases := []staticPolicyTestWithResvList{ - { - description: "GuPodSingleCore, SingleSocketHT, ExpectError", -@@ -872,6 +873,22 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(4, 5), - }, -+ { -+ description: "InfraPod, SingleSocketHT, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0, 1), -+ }, - } - - testExcl := true --- -2.30.2 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch deleted file mode 100644 index d48d38cf9..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch +++ /dev/null @@ -1,562 +0,0 @@ -From 5264e7af1d645a5eb27a6d204f73c08cc72afa70 Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Tue, 25 Jan 2022 13:27:25 -0500 -Subject: [PATCH] kubelet cpumanager introduce concept of isolated CPUs - -This introduces the concept of "isolated CPUs", which are CPUs that -have been isolated at the kernel level via the "isolcpus" kernel boot -parameter. - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via -'--system-reserved=cpu' will be used for infrastructure pods while the -isolated CPUs should be reserved via '--kube-reserved=cpu' to cause -kubelet to skip over them for "normal" CPU resource tracking. The -kubelet code will double-check that the specified isolated CPUs match -what the kernel exposes in "/sys/devices/system/cpu/isolated". - -A plugin (outside the scope of this commit) will expose the isolated -CPUs to kubelet via the device plugin API. - -If a pod specifies some number of "isolcpus" resources, the device -manager will allocate them. In this code we check whether such -resources have been allocated, and if so we set the container cpuset to -the isolated CPUs. This does mean that it really only makes sense to -specify "isolcpus" resources for best-effort or burstable pods, not for -guaranteed ones since that would throw off the accounting code. In -order to ensure the accounting still works as designed, if "isolcpus" -are specified for guaranteed pods, the affinity will be set to the -non-isolated CPUs. - -This patch was refactored in 1.21.3 due to upstream API change -node: podresources: make GetDevices() consistent -(commit ad68f9588c72d6477b5a290c548a9031063ac659). - -The routine podIsolCPUs() was refactored in 1.21.3 since the API -p.deviceManager.GetDevices() is returning multiple devices with -a device per cpu. The resultant cpuset needs to be the aggregate. - -The routine NewStaticPolicy was refactored in 1.22.5, adding a new argument -in its signature: cpuPolicyOptions map[string]string. This change is implies -shifting the new arguments(deviceManager, excludeReserved) with one position -to the right. - -Co-authored-by: Jim Gauld -Co-authored-by: Chris Friesen -Signed-off-by: Gleb Aronsky ---- - pkg/kubelet/cm/container_manager_linux.go | 1 + - pkg/kubelet/cm/cpumanager/cpu_manager.go | 35 +++++++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 14 +++- - pkg/kubelet/cm/cpumanager/policy_static.go | 83 +++++++++++++++++-- - .../cm/cpumanager/policy_static_test.go | 50 ++++++++--- - 5 files changed, 164 insertions(+), 19 deletions(-) - -diff --git a/pkg/kubelet/cm/container_manager_linux.go b/pkg/kubelet/cm/container_manager_linux.go -index 3892bae081d..9a1e9c406eb 100644 ---- a/pkg/kubelet/cm/container_manager_linux.go -+++ b/pkg/kubelet/cm/container_manager_linux.go -@@ -340,6 +340,7 @@ func NewContainerManager(mountUtil mount.Interface, cadvisorInterface cadvisor.I - cm.GetNodeAllocatableReservation(), - nodeConfig.KubeletRootDir, - cm.topologyManager, -+ cm.deviceManager, - ) - if err != nil { - klog.ErrorS(err, "Failed to initialize cpu manager") -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 8336e7b0fd4..defa03cd180 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -18,7 +18,9 @@ package cpumanager - - import ( - "fmt" -+ "io/ioutil" - "math" -+ "strings" - "sync" - "time" - -@@ -32,6 +34,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" - kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" -@@ -50,6 +53,25 @@ type policyName string - // cpuManagerStateFileName is the file name where cpu manager stores its state - const cpuManagerStateFileName = "cpu_manager_state" - -+// get the system-level isolated CPUs -+func getIsolcpus() cpuset.CPUSet { -+ dat, err := ioutil.ReadFile("/sys/devices/system/cpu/isolated") -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to read sysfs isolcpus subdir") -+ return cpuset.NewCPUSet() -+ } -+ -+ // The isolated cpus string ends in a newline -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cset, err := cpuset.Parse(cpustring) -+ if err != nil { -+ klog.Errorf("[cpumanager] unable to parse sysfs isolcpus string to cpuset") -+ return cpuset.NewCPUSet() -+ } -+ -+ return cset -+} -+ - // Manager interface provides methods for Kubelet to manage pod cpus. - type Manager interface { - // Start is called during Kubelet initialization. -@@ -153,7 +175,8 @@ func (s *sourcesReadyStub) AddSource(source string) {} - func (s *sourcesReadyStub) AllReady() bool { return true } - - // NewManager creates new cpu manager based on provided policy --func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store) (Manager, error) { -+func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconcilePeriod time.Duration, machineInfo *cadvisorapi.MachineInfo, specificCPUs cpuset.CPUSet, nodeAllocatableReservation v1.ResourceList, stateFileDirectory string, affinity topologymanager.Store, deviceManager devicemanager.Manager) (Manager, error) { -+ - var topo *topology.CPUTopology - var policy Policy - var err error -@@ -194,7 +217,15 @@ func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconc - // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. - // This variable is primarily to make testing easier. - excludeReserved := true -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions, excludeReserved) -+ -+ // isolCPUs is the set of kernel-isolated CPUs. They should be a subset of specificCPUs or -+ // of the CPUs that NewStaticPolicy() will pick if numReservedCPUs is set. It's only in the -+ // argument list here for ease of testing, it's really internal to the policy. -+ isolCPUs := getIsolcpus() -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, isolCPUs, affinity, cpuPolicyOptions, deviceManager, excludeReserved) -+ if err != nil { -+ return nil, fmt.Errorf("new static policy error: %v", err) -+ } - - if err != nil { - return nil, fmt.Errorf("new static policy error: %w", err) -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index 2c8349662c4..31e4d0585fb 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -37,6 +37,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - ) - -@@ -215,6 +216,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ -@@ -230,8 +232,10 @@ func TestCPUManagerAdd(t *testing.T) { - }, - 0, - cpuset.NewCPUSet(), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), - nil, -+ testDM, - testExcl) - testCases := []struct { - description string -@@ -482,8 +486,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - } - - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -638,7 +643,9 @@ func TestCPUManagerGenerate(t *testing.T) { - } - defer os.RemoveAll(sDir) - -- mgr, err := NewManager(testCase.cpuPolicyName, nil, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager()) -+ testDM, err := devicemanager.NewManagerStub() -+ mgr, err := NewManager(testCase.cpuPolicyName, nil, 5*time.Second, machineInfo, cpuset.NewCPUSet(), testCase.nodeAllocatableReservation, sDir, topologymanager.NewFakeManager(), testDM) -+ - if testCase.expectedError != nil { - if !strings.Contains(err.Error(), testCase.expectedError.Error()) { - t.Errorf("Unexpected error message. Have: %s wants %s", err.Error(), testCase.expectedError.Error()) -@@ -1232,6 +1239,7 @@ func TestReconcileState(t *testing.T) { - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { - testExcl := false -+ testDM, _ := devicemanager.NewManagerStub() - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1246,8 +1254,10 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - }, - 1, - cpuset.NewCPUSet(0), -+ cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), - nil, -+ testDM, - testExcl) - testCases := []struct { - description string -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index aeac7fdc8cb..3799795963b 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -18,6 +18,7 @@ package cpumanager - - import ( - "fmt" -+ "strconv" - - v1 "k8s.io/api/core/v1" - "k8s.io/klog/v2" -@@ -25,6 +26,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - ) -@@ -101,6 +103,10 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // subset of reserved CPUs with isolcpus attribute -+ isolcpus cpuset.CPUSet -+ // parent containerManager, used to get device list -+ deviceManager devicemanager.Manager - // If true, default CPUSet should exclude reserved CPUs - excludeReserved bool - // topology manager reference to get container Topology affinity -@@ -117,7 +123,8 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, excludeReserved bool) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, isolCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, deviceManager devicemanager.Manager, excludeReserved bool) (Policy, error) { -+ - opts, err := NewStaticPolicyOptions(cpuPolicyOptions) - if err != nil { - return nil, err -@@ -128,6 +135,8 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - policy := &staticPolicy{ - topology: topology, - affinity: affinity, -+ isolcpus: isolCPUs, -+ deviceManager: deviceManager, - excludeReserved: excludeReserved, - cpusToReuse: make(map[string]cpuset.CPUSet), - options: opts, -@@ -154,6 +163,12 @@ func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reserv - klog.InfoS("Reserved CPUs not available for exclusive assignment", "reservedSize", reserved.Size(), "reserved", reserved) - policy.reserved = reserved - -+ if !isolCPUs.IsSubsetOf(reserved) { -+ klog.Errorf("[cpumanager] isolCPUs %v is not a subset of reserved %v", isolCPUs, reserved) -+ reserved = reserved.Union(isolCPUs) -+ klog.Warningf("[cpumanager] mismatch isolCPUs %v, force reserved %v", isolCPUs, reserved) -+ } -+ - return policy, nil - } - -@@ -187,8 +202,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } else { - s.SetDefaultCPUSet(allCPUs) - } -- klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -- allCPUs, p.reserved, s.GetDefaultCPUSet()) -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, isolcpus:%v, default:%v\n", -+ allCPUs, p.reserved, p.isolcpus, s.GetDefaultCPUSet()) -+ - return nil - } - -@@ -278,10 +294,11 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - return nil - } - -- cpuset := p.reserved -+ cpuset := p.reserved.Clone().Difference(p.isolcpus) - if cpuset.IsEmpty() { - // If this happens then someone messed up. -- return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved) -+ return fmt.Errorf("[cpumanager] static policy: reserved container unable to allocate cpus (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v, reserved:%v, isolcpus:%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset, p.reserved, p.isolcpus) -+ - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - klog.Infof("[cpumanager] static policy: reserved: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", pod.Namespace, string(pod.UID), pod.Name, container.Name, cpuset) -@@ -325,8 +342,34 @@ func (p *staticPolicy) Allocate(s state.State, pod *v1.Pod, container *v1.Contai - } - s.SetCPUSet(string(pod.UID), container.Name, cpuset) - p.updateCPUsToReuse(pod, container, cpuset) -+ klog.Infof("[cpumanager] guaranteed: AddContainer "+ -+ "(namespace: %s, pod UID: %s, pod: %s, container: %s); numCPUS=%d, cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, numCPUs, cpuset) -+ return nil -+ } - -+ if isolcpus := p.podIsolCPUs(pod, container); isolcpus.Size() > 0 { -+ // container has requested isolated CPUs -+ if set, ok := s.GetCPUSet(string(pod.UID), container.Name); ok { -+ if set.Equals(isolcpus) { -+ klog.Infof("[cpumanager] isolcpus container already present in state, skipping (namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ return nil -+ } else { -+ klog.Infof("[cpumanager] isolcpus container state has cpus %v, should be %v (namespace: %s, pod UID: %s, pod: %s, container: %s)", -+ isolcpus, set, pod.Namespace, string(pod.UID), pod.Name, container.Name) -+ } -+ } -+ // Note that we do not do anything about init containers here. -+ // It looks like devices are allocated per-pod based on effective requests/limits -+ // and extra devices from initContainers are not freed up when the regular containers start. -+ // TODO: confirm this is still true for 1.20 -+ s.SetCPUSet(string(pod.UID), container.Name, isolcpus) -+ klog.Infof("[cpumanager] isolcpus: AddContainer (namespace: %s, pod UID: %s, pod: %s, container: %s); cpuset=%v", -+ pod.Namespace, string(pod.UID), pod.Name, container.Name, isolcpus) -+ return nil - } -+ - // container belongs in the shared pool (nothing to do; use default cpuset) - return nil - } -@@ -619,3 +662,33 @@ func isKubeInfra(pod *v1.Pod) bool { - } - return false - } -+ -+// get the isolated CPUs (if any) from the devices associated with a specific container -+func (p *staticPolicy) podIsolCPUs(pod *v1.Pod, container *v1.Container) cpuset.CPUSet { -+ // NOTE: This is required for TestStaticPolicyAdd() since makePod() does -+ // not create UID. We also need a way to properly stub devicemanager. -+ if len(string(pod.UID)) == 0 { -+ return cpuset.NewCPUSet() -+ } -+ resContDevices := p.deviceManager.GetDevices(string(pod.UID), container.Name) -+ cpuSet := cpuset.NewCPUSet() -+ for resourceName, resourceDevs := range resContDevices { -+ // this resource name needs to match the isolcpus device plugin -+ if resourceName == "windriver.com/isolcpus" { -+ for devID, _ := range resourceDevs { -+ cpuStrList := []string{devID} -+ if len(cpuStrList) > 0 { -+ // loop over the list of strings, convert each one to int, add to cpuset -+ for _, cpuStr := range cpuStrList { -+ cpu, err := strconv.Atoi(cpuStr) -+ if err != nil { -+ panic(err) -+ } -+ cpuSet = cpuSet.Union(cpuset.NewCPUSet(cpu)) -+ } -+ } -+ } -+ } -+ } -+ return cpuSet -+} -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index 34c5a23c553..a0eb451b60e 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -25,6 +25,7 @@ import ( - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state" - "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology" - "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" -+ "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager/bitmask" - ) -@@ -65,8 +66,9 @@ func (spt staticPolicyTest) PseudoClone() staticPolicyTest { - } - - func TestStaticPolicyName(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -76,6 +78,7 @@ func TestStaticPolicyName(t *testing.T) { - } - - func TestStaticPolicyStart(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "non-corrupted state", -@@ -151,7 +154,7 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testCase.excludeReserved) - - policy := p.(*staticPolicy) - st := &mockState{ -@@ -199,7 +202,7 @@ func TestStaticPolicyAdd(t *testing.T) { - largeTopoCPUSet := largeTopoBuilder.Result() - largeTopoSock0CPUSet := largeTopoSock0Builder.Result() - largeTopoSock1CPUSet := largeTopoSock1Builder.Result() -- -+ testDM, _ := devicemanager.NewManagerStub() - // these are the cases which must behave the same regardless the policy options. - // So we will permutate the options to ensure this holds true. - optionsInsensitiveTestCases := []staticPolicyTest{ -@@ -529,8 +532,9 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { -+ testDM, _ := devicemanager.NewManagerStub() - testExcl := false -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -573,6 +577,7 @@ func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { - - func TestStaticPolicyRemove(t *testing.T) { - excludeReserved := false -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -631,7 +636,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -654,6 +659,7 @@ func TestStaticPolicyRemove(t *testing.T) { - - func TestTopologyAwareAllocateCPUs(t *testing.T) { - excludeReserved := false -+ testDM, _ := devicemanager.NewManagerStub() - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -722,7 +728,8 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, excludeReserved) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, excludeReserved) -+ - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -755,6 +762,7 @@ type staticPolicyTestWithResvList struct { - topo *topology.CPUTopology - numReservedCPUs int - reserved cpuset.CPUSet -+ isolcpus cpuset.CPUSet - stAssignments state.ContainerCPUAssignments - stDefaultCPUSet cpuset.CPUSet - pod *v1.Pod -@@ -765,6 +773,8 @@ type staticPolicyTestWithResvList struct { - } - - func TestStaticPolicyStartWithResvList(t *testing.T) { -+ testDM, _ := devicemanager.NewManagerStub() -+ testExcl := false - testCases := []staticPolicyTestWithResvList{ - { - description: "empty cpuset", -@@ -794,11 +804,9 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -- testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -- -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testDM, testExcl) - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -838,6 +846,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), -@@ -850,6 +859,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{}, - stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), -@@ -862,6 +872,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -878,6 +889,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - topo: topoSingleSocketHT, - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(), - stAssignments: state.ContainerCPUAssignments{ - "fakePod": map[string]cpuset.CPUSet{ - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -@@ -889,11 +901,29 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - expCPUAlloc: true, - expCSet: cpuset.NewCPUSet(0, 1), - }, -+ { -+ description: "InfraPod, SingleSocketHT, Isolcpus, ExpectAllocReserved", -+ topo: topoSingleSocketHT, -+ numReservedCPUs: 2, -+ reserved: cpuset.NewCPUSet(0, 1), -+ isolcpus: cpuset.NewCPUSet(1), -+ stAssignments: state.ContainerCPUAssignments{ -+ "fakePod": map[string]cpuset.CPUSet{ -+ "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), -+ }, -+ }, -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), -+ pod: infraPod, -+ expErr: nil, -+ expCPUAlloc: true, -+ expCSet: cpuset.NewCPUSet(0), -+ }, - } - - testExcl := true -+ testDM, _ := devicemanager.NewManagerStub() - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, testCase.isolcpus, topologymanager.NewFakeManager(), nil, testDM, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch deleted file mode 100644 index e9b457928..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-cpumanager-keep-normal-containers-off-reserv.patch +++ /dev/null @@ -1,311 +0,0 @@ -From f2186adb445f1420184aa5af5536bb777536a798 Mon Sep 17 00:00:00 2001 -From: Gleb Aronsky -Date: Mon, 24 Jan 2022 15:52:24 -0500 -Subject: [PATCH] kubelet cpumanager keep normal containers off reserved CPUs - -When starting the kubelet process, two separate sets of reserved CPUs -may be specified. With this change CPUs reserved via -'--system-reserved=cpu' -or '--kube-reserved=cpu' will be ignored by kubernetes itself. A small -tweak to the default CPU affinity ensures that "normal" Kubernetes -pods won't run on the reserved CPUs. - -Co-authored-by: Jim Gauld -Signed-off-by: Gleb Aronsky ---- - pkg/kubelet/cm/cpumanager/cpu_manager.go | 6 ++- - pkg/kubelet/cm/cpumanager/cpu_manager_test.go | 11 ++++-- - pkg/kubelet/cm/cpumanager/policy_static.go | 29 +++++++++++--- - .../cm/cpumanager/policy_static_test.go | 38 ++++++++++++++----- - 4 files changed, 64 insertions(+), 20 deletions(-) - -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager.go b/pkg/kubelet/cm/cpumanager/cpu_manager.go -index 6ad289336ea..8336e7b0fd4 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager.go -@@ -191,7 +191,11 @@ func NewManager(cpuPolicyName string, cpuPolicyOptions map[string]string, reconc - // exclusively allocated. - reservedCPUsFloat := float64(reservedCPUs.MilliValue()) / 1000 - numReservedCPUs := int(math.Ceil(reservedCPUsFloat)) -- policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions) -+ // NOTE: Set excludeReserved unconditionally to exclude reserved CPUs from default cpuset. -+ // This variable is primarily to make testing easier. -+ excludeReserved := true -+ policy, err = NewStaticPolicy(topo, numReservedCPUs, specificCPUs, affinity, cpuPolicyOptions, excludeReserved) -+ - if err != nil { - return nil, fmt.Errorf("new static policy error: %w", err) - } -diff --git a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -index 9b3e24fc3b2..2c8349662c4 100644 ---- a/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -+++ b/pkg/kubelet/cm/cpumanager/cpu_manager_test.go -@@ -215,6 +215,7 @@ func makeMultiContainerPod(initCPUs, appCPUs []struct{ request, limit string }) - } - - func TestCPUManagerAdd(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -230,7 +231,8 @@ func TestCPUManagerAdd(t *testing.T) { - 0, - cpuset.NewCPUSet(), - topologymanager.NewFakeManager(), -- nil) -+ nil, -+ testExcl) - testCases := []struct { - description string - updateErr error -@@ -479,8 +481,9 @@ func TestCPUManagerAddWithInitContainers(t *testing.T) { - }, - } - -+ testExcl := false - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) - - mockState := &mockState{ - assignments: testCase.stAssignments, -@@ -1228,6 +1231,7 @@ func TestReconcileState(t *testing.T) { - // above test cases are without kubelet --reserved-cpus cmd option - // the following tests are with --reserved-cpus configured - func TestCPUManagerAddWithResvList(t *testing.T) { -+ testExcl := false - testPolicy, _ := NewStaticPolicy( - &topology.CPUTopology{ - NumCPUs: 4, -@@ -1243,7 +1247,8 @@ func TestCPUManagerAddWithResvList(t *testing.T) { - 1, - cpuset.NewCPUSet(0), - topologymanager.NewFakeManager(), -- nil) -+ nil, -+ testExcl) - testCases := []struct { - description string - updateErr error -diff --git a/pkg/kubelet/cm/cpumanager/policy_static.go b/pkg/kubelet/cm/cpumanager/policy_static.go -index f7ff26cd313..9697f4d4bb0 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static.go -@@ -96,6 +96,8 @@ type staticPolicy struct { - topology *topology.CPUTopology - // set of CPUs that is not available for exclusive assignment - reserved cpuset.CPUSet -+ // If true, default CPUSet should exclude reserved CPUs -+ excludeReserved bool - // topology manager reference to get container Topology affinity - affinity topologymanager.Store - // set of CPUs to reuse across allocations in a pod -@@ -110,7 +112,7 @@ var _ Policy = &staticPolicy{} - // NewStaticPolicy returns a CPU manager policy that does not change CPU - // assignments for exclusively pinned guaranteed containers after the main - // container process starts. --func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string) (Policy, error) { -+func NewStaticPolicy(topology *topology.CPUTopology, numReservedCPUs int, reservedCPUs cpuset.CPUSet, affinity topologymanager.Store, cpuPolicyOptions map[string]string, excludeReserved bool) (Policy, error) { - opts, err := NewStaticPolicyOptions(cpuPolicyOptions) - if err != nil { - return nil, err -@@ -172,7 +174,15 @@ func (p *staticPolicy) validateState(s state.State) error { - } - // state is empty initialize - allCPUs := p.topology.CPUDetails.CPUs() -- s.SetDefaultCPUSet(allCPUs) -+ if p.excludeReserved { -+ // Exclude reserved CPUs from the default CPUSet to keep containers off them -+ // unless explicitly affined. -+ s.SetDefaultCPUSet(allCPUs.Difference(p.reserved)) -+ } else { -+ s.SetDefaultCPUSet(allCPUs) -+ } -+ klog.Infof("[cpumanager] static policy: CPUSet: allCPUs:%v, reserved:%v, default:%v\n", -+ allCPUs, p.reserved, s.GetDefaultCPUSet()) - return nil - } - -@@ -180,11 +190,12 @@ func (p *staticPolicy) validateState(s state.State) error { - // 1. Check if the reserved cpuset is not part of default cpuset because: - // - kube/system reserved have changed (increased) - may lead to some containers not being able to start - // - user tampered with file -- if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -- return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -- p.reserved.String(), tmpDefaultCPUset.String()) -+ if !p.excludeReserved { -+ if !p.reserved.Intersection(tmpDefaultCPUset).Equals(p.reserved) { -+ return fmt.Errorf("not all reserved cpus: \"%s\" are present in defaultCpuSet: \"%s\"", -+ p.reserved.String(), tmpDefaultCPUset.String()) -+ } - } -- - // 2. Check if state for static policy is consistent - for pod := range tmpAssignments { - for container, cset := range tmpAssignments[pod] { -@@ -211,6 +222,9 @@ func (p *staticPolicy) validateState(s state.State) error { - } - } - totalKnownCPUs = totalKnownCPUs.UnionAll(tmpCPUSets) -+ if p.excludeReserved { -+ totalKnownCPUs = totalKnownCPUs.Union(p.reserved) -+ } - if !totalKnownCPUs.Equals(p.topology.CPUDetails.CPUs()) { - return fmt.Errorf("current set of available CPUs \"%s\" doesn't match with CPUs in state \"%s\"", - p.topology.CPUDetails.CPUs().String(), totalKnownCPUs.String()) -@@ -296,6 +310,9 @@ func (p *staticPolicy) RemoveContainer(s state.State, podUID string, containerNa - klog.InfoS("Static policy: RemoveContainer", "podUID", podUID, "containerName", containerName) - if toRelease, ok := s.GetCPUSet(podUID, containerName); ok { - s.Delete(podUID, containerName) -+ if p.excludeReserved { -+ toRelease = toRelease.Difference(p.reserved) -+ } - // Mutate the shared pool, adding released cpus. - s.SetDefaultCPUSet(s.GetDefaultCPUSet().Union(toRelease)) - } -diff --git a/pkg/kubelet/cm/cpumanager/policy_static_test.go b/pkg/kubelet/cm/cpumanager/policy_static_test.go -index d2b641fe3a0..80bd04a1f92 100644 ---- a/pkg/kubelet/cm/cpumanager/policy_static_test.go -+++ b/pkg/kubelet/cm/cpumanager/policy_static_test.go -@@ -33,6 +33,7 @@ type staticPolicyTest struct { - description string - topo *topology.CPUTopology - numReservedCPUs int -+ excludeReserved bool - podUID string - options map[string]string - containerName string -@@ -64,7 +65,8 @@ func (spt staticPolicyTest) PseudoClone() staticPolicyTest { - } - - func TestStaticPolicyName(t *testing.T) { -- policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ testExcl := false -+ policy, _ := NewStaticPolicy(topoSingleSocketHT, 1, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testExcl) - - policyName := policy.Name() - if policyName != "static" { -@@ -94,6 +96,15 @@ func TestStaticPolicyStart(t *testing.T) { - stDefaultCPUSet: cpuset.NewCPUSet(), - expCSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), - }, -+ { -+ description: "empty cpuset exclude reserved", -+ topo: topoDualSocketHT, -+ numReservedCPUs: 2, -+ excludeReserved: true, -+ stAssignments: state.ContainerCPUAssignments{}, -+ stDefaultCPUSet: cpuset.NewCPUSet(), -+ expCSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 7, 8, 9, 10, 11), -+ }, - { - description: "reserved cores 0 & 6 are not present in available cpuset", - topo: topoDualSocketHT, -@@ -140,7 +151,8 @@ func TestStaticPolicyStart(t *testing.T) { - } - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ p, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) -+ - policy := p.(*staticPolicy) - st := &mockState{ - assignments: testCase.stAssignments, -@@ -211,7 +223,7 @@ func TestStaticPolicyAdd(t *testing.T) { - "fakeContainer100": cpuset.NewCPUSet(2, 3, 6, 7), - }, - }, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 4, 5), -+ stDefaultCPUSet: cpuset.NewCPUSet(4, 5), - pod: makePod("fakePod", "fakeContainer3", "2000m", "2000m"), - expErr: nil, - expCPUAlloc: true, -@@ -517,7 +529,8 @@ func TestStaticPolicyAdd(t *testing.T) { - } - - func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options) -+ testExcl := false -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), testCase.options, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -559,6 +572,7 @@ func runStaticPolicyTestCase(t *testing.T, testCase staticPolicyTest) { - } - - func TestStaticPolicyRemove(t *testing.T) { -+ excludeReserved := false - testCases := []staticPolicyTest{ - { - description: "SingleSocketHT, DeAllocOneContainer", -@@ -617,7 +631,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, testCase.excludeReserved) - - st := &mockState{ - assignments: testCase.stAssignments, -@@ -639,6 +653,7 @@ func TestStaticPolicyRemove(t *testing.T) { - } - - func TestTopologyAwareAllocateCPUs(t *testing.T) { -+ excludeReserved := false - testCases := []struct { - description string - topo *topology.CPUTopology -@@ -707,7 +722,7 @@ func TestTopologyAwareAllocateCPUs(t *testing.T) { - }, - } - for _, tc := range testCases { -- p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil) -+ p, _ := NewStaticPolicy(tc.topo, 0, cpuset.NewCPUSet(), topologymanager.NewFakeManager(), nil, excludeReserved) - policy := p.(*staticPolicy) - st := &mockState{ - assignments: tc.stAssignments, -@@ -779,9 +794,11 @@ func TestStaticPolicyStartWithResvList(t *testing.T) { - expNewErr: fmt.Errorf("[cpumanager] unable to reserve the required amount of CPUs (size of 0-1 did not equal 1)"), - }, - } -+ testExcl := false - for _, testCase := range testCases { - t.Run(testCase.description, func(t *testing.T) { -- p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil) -+ p, err := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) -+ - if !reflect.DeepEqual(err, testCase.expNewErr) { - t.Errorf("StaticPolicy Start() error (%v). expected error: %v but got: %v", - testCase.description, testCase.expNewErr, err) -@@ -821,7 +838,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 1, - reserved: cpuset.NewCPUSet(0), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(1, 2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "8000m", "8000m"), - expErr: fmt.Errorf("not enough cpus available to satisfy request"), - expCPUAlloc: false, -@@ -833,7 +850,7 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - numReservedCPUs: 2, - reserved: cpuset.NewCPUSet(0, 1), - stAssignments: state.ContainerCPUAssignments{}, -- stDefaultCPUSet: cpuset.NewCPUSet(0, 1, 2, 3, 4, 5, 6, 7), -+ stDefaultCPUSet: cpuset.NewCPUSet(2, 3, 4, 5, 6, 7), - pod: makePod("fakePod", "fakeContainer2", "1000m", "1000m"), - expErr: nil, - expCPUAlloc: true, -@@ -857,8 +874,9 @@ func TestStaticPolicyAddWithResvList(t *testing.T) { - }, - } - -+ testExcl := true - for _, testCase := range testCases { -- policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil) -+ policy, _ := NewStaticPolicy(testCase.topo, testCase.numReservedCPUs, testCase.reserved, topologymanager.NewFakeManager(), nil, testExcl) - - st := &mockState{ - assignments: testCase.stAssignments, --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch deleted file mode 100644 index a58e47d5b..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch +++ /dev/null @@ -1,50 +0,0 @@ -From ba9ab333c8b7dca5252e604837914293dc232732 Mon Sep 17 00:00:00 2001 -From: Jim Gauld -Date: Fri, 11 Feb 2022 11:06:35 -0500 -Subject: [PATCH] kubelet: sort isolcpus allocation when SMT enabled - -The existing device manager code returns CPUs as devices in unsorted -order. This numerically sorts isolcpus allocations when SMT/HT is -enabled on the host. This logs SMT pairs, singletons, and algorithm -order details to make the algorithm understandable. - -Signed-off-by: Jim Gauld ---- - pkg/kubelet/cm/devicemanager/manager.go | 13 ++++++++++++- - 1 file changed, 12 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 609da8ed86b..a4b247714f7 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -686,7 +686,16 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - return cpu_lst[0] - } - } -+ //Make post-analysis of selection algorithm obvious by numerical sorting -+ //the available isolated cpu_id. -+ cpu_ids := make([]int, 0, int(devices.Len())) - for cpu_id := range devices { -+ cpu_id_, _ := strconv.Atoi(cpu_id) -+ cpu_ids = append(cpu_ids, cpu_id_) -+ } -+ sort.Ints(cpu_ids) -+ for _, _cpu_id := range cpu_ids { -+ cpu_id := strconv.Itoa(_cpu_id) - // If we've already found cpu_id as a sibling, skip it. - if _, ok := _iterated_cpu[cpu_id]; ok { - continue -@@ -728,7 +737,9 @@ func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) - } - } - } -- //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ //This algorithm will get some attention. Show minimal details. -+ klog.Infof("order_devices_by_sibling: needed=%d, smtpairs=%v, singletons=%v, order=%v", -+ needed, sibling_lst, single_lst, dev_lst) - return dev_lst, nil - } - func smt_enabled() bool { --- -2.25.1 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubernetes-make-isolcpus-allocation-SMT-aware.patch b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubernetes-make-isolcpus-allocation-SMT-aware.patch deleted file mode 100644 index dbc28d503..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/kubernetes-make-isolcpus-allocation-SMT-aware.patch +++ /dev/null @@ -1,151 +0,0 @@ -From 95b7b6e1ddb25511c67a3d4018f62df1e76ee7bc Mon Sep 17 00:00:00 2001 -From: Tao Wang -Date: Tue, 25 Jan 2022 19:25:45 -0500 -Subject: [PATCH] kubernetes: make isolcpus allocation SMT-aware - -Enhance isolcpus support in Kubernetes to allocate isolated SMT -siblings to the same container when SMT/HT is enabled on the host. - -As it stands, the device manager code in Kubernetes is not SMT-aware -(since normally it doesn't deal with CPUs). However, StarlingX -exposes isolated CPUs as devices and if possible we want to allocate -all SMT siblings from a CPU core to the same container in order to -minimize cross- container interference due to resource contention -within the CPU core. - -The solution is basically to take the list of isolated CPUs and -re-order it so that the SMT siblings are next to each other. That -way the existing resource selection code will allocate the siblings -together. As an optimization, if it is known that an odd number -of isolated CPUs are desired, a singleton SMT sibling will be -inserted into the list to avoid breaking up sibling pairs. - -Signed-off-by: Tao Wang ---- - pkg/kubelet/cm/devicemanager/manager.go | 84 ++++++++++++++++++++++++- - 1 file changed, 83 insertions(+), 1 deletion(-) - -diff --git a/pkg/kubelet/cm/devicemanager/manager.go b/pkg/kubelet/cm/devicemanager/manager.go -index 60de14a9..609da8ed 100644 ---- a/pkg/kubelet/cm/devicemanager/manager.go -+++ b/pkg/kubelet/cm/devicemanager/manager.go -@@ -19,11 +19,14 @@ package devicemanager - import ( - "context" - "fmt" -+ "io/ioutil" - "net" - "os" - "path/filepath" - "runtime" - "sort" -+ "strconv" -+ "strings" - "sync" - "time" - -@@ -41,6 +44,7 @@ import ( - "k8s.io/kubernetes/pkg/features" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" - "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors" -+ "k8s.io/kubernetes/pkg/kubelet/cm/cpuset" - "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager/checkpoint" - "k8s.io/kubernetes/pkg/kubelet/cm/topologymanager" - "k8s.io/kubernetes/pkg/kubelet/config" -@@ -667,6 +671,75 @@ func (m *ManagerImpl) UpdateAllocatedDevices() { - m.allocatedDevices = m.podDevices.devices() - } - -+//Given a list of isolated CPUs in 'devices', and the number of desired CPUs in 'needed', -+//return an ordered list of isolated CPUs such that the first 'needed' CPUs in the list -+//contain as many hyperthread sibling pairs as possible. -+func order_devices_by_sibling(devices sets.String, needed int) ([]string, error) { -+ var dev_lst []string -+ var single_lst []string -+ sibling_lst := make([]string, 0, int(devices.Len())) -+ _iterated_cpu := make(map[string]string) -+ get_sibling := func(cpu string, cpu_lst []string) string { -+ if cpu_lst[0] == cpu { -+ return cpu_lst[1] -+ } else { -+ return cpu_lst[0] -+ } -+ } -+ for cpu_id := range devices { -+ // If we've already found cpu_id as a sibling, skip it. -+ if _, ok := _iterated_cpu[cpu_id]; ok { -+ continue -+ } -+ devPath := fmt.Sprintf("/sys/devices/system/cpu/cpu%s/topology/thread_siblings_list", cpu_id) -+ dat, err := ioutil.ReadFile(devPath) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Can't read cpu[%s] thread_siblings_list", cpu_id) -+ } -+ cpustring := strings.TrimSuffix(string(dat), "\n") -+ cpu_pair_set, err := cpuset.Parse(cpustring) -+ if err != nil { -+ return dev_lst, fmt.Errorf("Unable to parse thread_siblings_list[%s] string to cpuset", cpustring) -+ } -+ var cpu_pair_lst []string -+ for _, v := range cpu_pair_set.ToSlice() { -+ cpu_pair_lst = append(cpu_pair_lst, strconv.Itoa(v)) -+ } -+ sibling_cpu_id := get_sibling(cpu_id, cpu_pair_lst) -+ if _, ok := devices[sibling_cpu_id]; ok { -+ sibling_lst = append(sibling_lst, cpu_id, sibling_cpu_id) -+ _iterated_cpu[sibling_cpu_id] = "" -+ } else { -+ single_lst = append(single_lst, cpu_id) -+ } -+ _iterated_cpu[cpu_id] = "" -+ } -+ if needed%2 == 0 { -+ dev_lst = append(sibling_lst, single_lst...) -+ } else { -+ if len(single_lst) > 1 { -+ _tmp_list := append(sibling_lst, single_lst[1:]...) -+ dev_lst = append(single_lst[0:1], _tmp_list...) -+ } else { -+ if len(single_lst) == 0 { -+ dev_lst = sibling_lst -+ } else { -+ dev_lst = append(single_lst, sibling_lst...) -+ } -+ } -+ } -+ //klog.Infof("needed=%d ordered_cpu_list=%v", needed, dev_lst) -+ return dev_lst, nil -+} -+func smt_enabled() bool { -+ dat, _ := ioutil.ReadFile("/sys/devices/system/cpu/smt/active") -+ state := strings.TrimSuffix(string(dat), "\n") -+ if state == "0" { -+ return false -+ } -+ return true -+} -+ - // Returns list of device Ids we need to allocate with Allocate rpc call. - // Returns empty list in case we don't need to issue the Allocate rpc call. - func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, required int, reusableDevices sets.String) (sets.String, error) { -@@ -702,7 +775,16 @@ func (m *ManagerImpl) devicesToAllocate(podUID, contName, resource string, requi - // Create a closure to help with device allocation - // Returns 'true' once no more devices need to be allocated. - allocateRemainingFrom := func(devices sets.String) bool { -- for device := range devices.Difference(allocated) { -+ availableDevices := devices.Difference(allocated).List() -+ // If we're dealing with isolcpus and SMT is enabled, reorder to group SMT siblings together. -+ if resource == "windriver.com/isolcpus" && len(devices) > 0 && smt_enabled() { -+ var err error -+ availableDevices, err = order_devices_by_sibling(devices.Difference(allocated), needed) -+ if err != nil { -+ klog.Errorf("error in order_devices_by_sibling: %v", err) -+ } -+ } -+ for _, device := range availableDevices { - m.allocatedDevices[resource].Insert(device) - allocated.Insert(device) - needed-- --- -2.22.5 - diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/series b/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/series deleted file mode 100644 index bd147f251..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/patches/series +++ /dev/null @@ -1,9 +0,0 @@ -kubelet-cpumanager-disable-CFS-quota-throttling-for-.patch -kubelet-cpumanager-keep-normal-containers-off-reserv.patch -kubelet-cpumanager-infra-pods-use-system-reserved-CP.patch -kubelet-cpumanager-introduce-concept-of-isolated-CPU.patch -kubeadm-create-platform-pods-with-zero-CPU-resources.patch -enable-support-for-kubernetes-to-ignore-isolcpus.patch -Revert-use-subpath-for-coredns-only-for-default-repo.patch -kubernetes-make-isolcpus-allocation-SMT-aware.patch -kubelet-sort-isolcpus-allocation-when-SMT-enabled.patch diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/rules b/kubernetes/kubernetes-1.23.1/debian/deb_folder/rules deleted file mode 100755 index ec7b8b83a..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/rules +++ /dev/null @@ -1,138 +0,0 @@ -#!/usr/bin/make -f - -kube_version := 1.23.1 -kube_git_version := v${kube_version} -name := kubernetes-${kube_version} -go_version := 1.17.5 -_stage1 := /usr/local/kubernetes/${kube_version}/stage1 -_stage2 := /usr/local/kubernetes/${kube_version}/stage2 -_bindir := /usr/bin -output_path := src/k8s.io/kubernetes/_output/bin -DEBIAN_DESTDIR := $(CURDIR)/debian/tmp -export DH_VERBOSE = 1 -export PATH := /usr/lib/go-1.17/bin:$(PATH) -export KUBE_GIT_TREE_STATE="clean" -export KUBE_GIT_COMMIT=${kube_version} -export KUBE_GIT_VERSION=${kube_git_version} -export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace -export PBR_VERSION=${kube_git_version} - - -%: - dh $@ --with=bash-completion --builddirectory=src --without=build-stamp - -override_dh_auto_build: - - mkdir -pv src/k8s.io/kubernetes/ - mv -v $$(ls | grep -v "^src$$" | grep -v "^debian$$") src/k8s.io/kubernetes/. - - go version - which go - - cd src/k8s.io/kubernetes/ && make WHAT="cmd/kube-proxy cmd/kube-apiserver cmd/kube-controller-manager cmd/kubelet cmd/kubeadm cmd/kube-scheduler cmd/kubectl" - - # TODO convert md to man - #./hack/generate-docs.sh || true - #pushd docs ;\ - #pushd admin ;\ - #cp kube-apiserver.md kube-controller-manager.md kube-proxy.md kube-scheduler.md kubelet.md .. ;\ - #popd ;\ - #bash genmanpages.sh ;\ - #popd ;\ - #popd ;\ - - -override_dh_install: - - install -m 755 -d ${DEBIAN_DESTDIR}${_bindir} - install -m 755 -d ${DEBIAN_DESTDIR}${_stage1}${_bindir} - install -m 755 -d ${DEBIAN_DESTDIR}${_stage2}${_bindir} - - echo "+++ INSTALLING kube-apiserver" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-apiserver - - echo "+++ INSTALLING kubeadm" - install -p -m 755 -t ${DEBIAN_DESTDIR}${_stage1}${_bindir} ${output_path}/kubeadm - install -d -m 0755 ${DEBIAN_DESTDIR}${_stage2}/etc/systemd/system/kubelet.service.d - install -p -m 0644 -t ${DEBIAN_DESTDIR}${_stage2}/etc/systemd/system/kubelet.service.d debian/kubeadm.conf - - echo "+++ INSTALLING kubelet-cgroup-setup.sh" - install -p -m 0700 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} debian/kubelet-cgroup-setup.sh - - echo "+++ INSTALLING kube-apiserver"\ - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-apiserver - - echo "+++ INSTALLING kube-controller-manager" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-controller-manager - - echo "+++ INSTALLING kube-scheduler" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-scheduler - - echo "+++ INSTALLING kube-proxy" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_bindir} ${output_path}/kube-proxy - - echo "+++ INSTALLING kubelet" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} ${output_path}/kubelet - - echo "+++ INSTALLING kubectl" - install -p -m 754 -t ${DEBIAN_DESTDIR}${_stage2}${_bindir} ${output_path}/kubectl - - # install the bash completion - install -d -m 0755 ${DEBIAN_DESTDIR}${_stage2}/usr/share/bash-completion/completions/ - ${DEBIAN_DESTDIR}${_stage2}${_bindir}/kubectl completion bash > ${DEBIAN_DESTDIR}${_stage2}/usr/share/bash-completion/completions/kubectl - - # install specific cluster addons for optional use - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons - # Addon: volumesnapshots - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/crd - install -m 0644 -t ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/crd src/k8s.io/kubernetes/cluster/addons/volumesnapshots/crd/* - install -d -m 0755 ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/volume-snapshot-controller - install -m 0644 -t ${DEBIAN_DESTDIR}/etc/${name}/addons/volumesnapshots/volume-snapshot-controller src/k8s.io/kubernetes/cluster/addons/volumesnapshots/volume-snapshot-controller/* - - #TODO install manpages - #install -d ${DEBIAN_DESTDIR}/usr/share/man/man1 - #install -p -m 644 docs/man/man1/* ${DEBIAN_DESTDIR}/usr/share/man/man1 - #rm -Rf ${DEBIAN_DESTDIR}/usr/share/man/man1/cloud-controller-manager.* - # from k8s tarball copied docs/man/man1/*.1 - #popd - - #mv src/k8s.io/kubernetes/*.md . - #mv src/k8s.io/kubernetes/LICENSE . - - - # place files for unit-test rpm - install -d -m 0755 ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/ - # basically, everything from the root directory is needed - # unit-tests needs source code - # integration tests needs docs and other files - # test-cmd.sh atm needs cluster, examples and other - cp -a src ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/ - rm -rf ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/src/k8s.io/kubernetes/_output - - #TODO with install manpages - #cp -a *.md ${DEBIAN_DESTDIR}/var/lib/kubernetes-unit-test/src/k8s.io/kubernetes/ - - dh_install - -override_dh_auto_test: - - echo "******Testing the commands*****" - src/k8s.io/kubernetes/hack/test-cmd.sh - - echo "******Benchmarking kube********" - src/k8s.io/kubernetes/hack/benchmark-go.sh - - echo "******Testing the go code******" - src/k8s.io/kubernetes/hack/test-go.sh - - echo "******Testing integration******" - src/k8s.io/kubernetes/hack/test-integration.sh --use_go_build - -override_dh_fixperms: - dh_fixperms -Xkube-apiserver -Xkubeadm -Xkubeadm.conf \ - -Xkubelet-cgroup-setup.sh -Xkube-apiserver \ - -Xkube-controller-manager -Xkube-scheduler \ - -Xkube-proxy -Xkubelet -Xkubectl - -override_dh_usrlocal: diff --git a/kubernetes/kubernetes-1.23.1/debian/deb_folder/source/format b/kubernetes/kubernetes-1.23.1/debian/deb_folder/source/format deleted file mode 100644 index 163aaf8d8..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/deb_folder/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) diff --git a/kubernetes/kubernetes-1.23.1/debian/meta_data.yaml b/kubernetes/kubernetes-1.23.1/debian/meta_data.yaml deleted file mode 100644 index e1aaf6891..000000000 --- a/kubernetes/kubernetes-1.23.1/debian/meta_data.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -debver: 1.23.1 -dl_path: - name: kubernetes-1.23.1.tar.gz - url: https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.23.1.tar.gz - md5sum: dba0ea30d0a80065210a4ae857758f4a - sha256sum: 9529d76a623f133fd609765b040382d593c97803220f5166451f0dbca5c807d5 -revision: - dist: $STX_DIST - GITREVCOUNT: - BASE_SRCREV: c47f0964d9c9d43cb7292c38fd2d10f655b643e6 - SRC_DIR: ${MY_REPO}/stx/integ/kubernetes/kubernetes-1.23.1