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 85054b213..ebec525fe 100644 --- a/debian_iso_image.inc +++ b/debian_iso_image.inc @@ -190,18 +190,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 8314ac500..b93740d77 100644 --- a/debian_pkg_dirs +++ b/debian_pkg_dirs @@ -68,9 +68,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