diff --git a/centos_tarball-dl.lst b/centos_tarball-dl.lst index 87d6fcf86..b0f170fe1 100644 --- a/centos_tarball-dl.lst +++ b/centos_tarball-dl.lst @@ -27,8 +27,8 @@ isa-l-7e1a337433a340bc0974ed0f04301bdaca374af6.tar.gz#isa-l#https://api.github.c isa-l_crypto-603529a4e06ac8a1662c13d6b31f122e21830352.tar.gz#isa-l_crypto#https://api.github.com/repos/01org/isa-l_crypto/tarball/603529a4e06ac8a1662c13d6b31f122e21830352#https## jerasure-96c76b89d661c163f65a014b8042c9354ccf7f31.tar.gz#jerasure#https://api.github.com/repos/ceph/jerasure/tarball/96c76b89d661c163f65a014b8042c9354ccf7f31#https## keycodemapdb-16e5b07.tar.gz#keycodemapdb#https://github.com/CendioOssman/keycodemapdb/tarball/16e5b0787687d8904dad2c026107409eb9bfcb95#http## -kubernetes-contrib-v1.16.2.tar.gz#kubernetes-contrib-1.16.2#https://github.com/kubernetes-retired/contrib/tarball/89f6948e24578fed2a90a87871b2263729f90ac3#http## -kubernetes-v1.16.2.tar.gz#kubernetes-1.16.2#https://github.com/kubernetes/kubernetes/archive/v1.16.2.tar.gz#http## +kubernetes-contrib-v1.18.1.tar.gz#kubernetes-contrib-1.18.1#https://github.com/kubernetes-retired/contrib/tarball/89f6948e24578fed2a90a87871b2263729f90ac3#http## +kubernetes-v1.18.1.tar.gz#kubernetes-1.18.1#https://github.com/kubernetes/kubernetes/archive/7879fc12a63337efff607952a323df90cdc7a335.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## libtpms-0.6.0-4f0d59d.tar.gz#libtpms-0.6.0#https://github.com/stefanberger/libtpms/tarball/c421ca0f4d00c0caceeda8d62c1efb2b7e47db04#http## diff --git a/kubernetes/kubernetes/centos/build_srpm.data b/kubernetes/kubernetes/centos/build_srpm.data index 8079df04a..e8eac9db2 100644 --- a/kubernetes/kubernetes/centos/build_srpm.data +++ b/kubernetes/kubernetes/centos/build_srpm.data @@ -1,9 +1,9 @@ -VERSION=1.16.2 -CON_VERSION=1.16.2 +VERSION=1.18.1 +CON_VERSION=1.18.1 TAR_NAME=kubernetes TAR="$TAR_NAME-v$VERSION.tar.gz" CONTRIB="$TAR_NAME-contrib-v$CON_VERSION.tar.gz" COPY_LIST="${CGCS_BASE}/downloads/$TAR ${CGCS_BASE}/downloads/$CONTRIB $FILES_BASE/*" -TIS_PATCH_VER=1 +TIS_PATCH_VER=2 diff --git a/kubernetes/kubernetes/centos/files/0001-Fix-pagesize-check-to-allow-for-options-already-endi.patch b/kubernetes/kubernetes/centos/files/0001-Fix-pagesize-check-to-allow-for-options-already-endi.patch new file mode 100644 index 000000000..724a4a05b --- /dev/null +++ b/kubernetes/kubernetes/centos/files/0001-Fix-pagesize-check-to-allow-for-options-already-endi.patch @@ -0,0 +1,44 @@ +From ee648637dde0394a9e487a47a2c6f33f2e238046 Mon Sep 17 00:00:00 2001 +From: Robert Church +Date: Mon, 6 Apr 2020 20:59:53 -0400 +Subject: [PATCH] Fix pagesize check to allow for options already ending in 'i' + +Commit https://github.com/kubernetes/kubernetes/commit/03ecc20 adds a +pagesize mount option quantity check that appends an 'i' to the pagesize +value. + +Based on the current StarlingX configuration the hugepages are mounted +with the following option that already contains an 'i' as a suffix: +pagesize=1Gi. + +This temporary patch updates the logic to avoid appending an additional +'i' at the end of the size string. This extra 'i' is not handled by +ParseQuantity() and results is a pod stuck Terminating as the mount +is not removed from the container. + +Signed-off-by: Robert Church +--- + pkg/volume/emptydir/empty_dir_linux.go | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/pkg/volume/emptydir/empty_dir_linux.go b/pkg/volume/emptydir/empty_dir_linux.go +index 63a25dc4ed0..7343c5e510a 100644 +--- a/pkg/volume/emptydir/empty_dir_linux.go ++++ b/pkg/volume/emptydir/empty_dir_linux.go +@@ -69,7 +69,12 @@ func getPageSize(path string, mounter mount.Interface) (*resource.Quantity, erro + // NOTE: Adding suffix 'i' as result should be comparable with a medium size. + // pagesize mount option is specified without a suffix, + // e.g. pagesize=2M or pagesize=1024M for x86 CPUs +- pageSize, err := resource.ParseQuantity(strings.TrimPrefix(opt, prefix) + "i") ++ opt_val := strings.TrimPrefix(opt, prefix) ++ val := opt_val ++ if !strings.HasSuffix(opt_val, "i") { ++ val = opt_val + "i" ++ } ++ pageSize, err := resource.ParseQuantity(val) + if err != nil { + return nil, fmt.Errorf("error getting page size from '%s' mount option: %v", opt, err) + } +-- +2.16.6 + diff --git a/kubernetes/kubernetes/centos/files/kubelet-cgroup-setup.sh b/kubernetes/kubernetes/centos/files/kubelet-cgroup-setup.sh index 7efb27a64..385314bfe 100644 --- a/kubernetes/kubernetes/centos/files/kubelet-cgroup-setup.sh +++ b/kubernetes/kubernetes/centos/files/kubelet-cgroup-setup.sh @@ -26,21 +26,38 @@ function ERROR { logger -s -p daemon.error "$0($$): ERROR: $@" } -# Create minimal cgroup directories and configure cpuset attributes -# pids should be first in the list, since it appears to get auto deleted +# 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=("pids" "cpuset" "memory" "cpu,cpuacct" "systemd") + local CONTROLLERS_AUTO_DELETED=("pids" "hugetlb") + local CONTROLLERS_PRESERVED=("cpuset" "memory" "cpu,cpuacct" "systemd") local cnt='' local CGDIR='' local RC=0 - # Create the cgroup for required controllers - for cnt in ${CONTROLLERS[@]}; do + # 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}." diff --git a/kubernetes/kubernetes/centos/kubernetes.spec b/kubernetes/kubernetes/centos/kubernetes.spec index ce3a68a24..c5f7518e6 100644 --- a/kubernetes/kubernetes/centos/kubernetes.spec +++ b/kubernetes/kubernetes/centos/kubernetes.spec @@ -23,16 +23,16 @@ %global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo} %global import_path k8s.io/kubernetes -%global commit 1.16.2 +%global commit 1.18.1 %global con_provider github %global con_provider_tld com %global con_project kubernetes %global con_repo kubernetes-contrib # https://github.com/kubernetes/contrib -%global con_commit 1.16.2 +%global con_commit 1.18.1 -%global kube_version 1.16.2 +%global kube_version 1.18.1 %global kube_git_version v%{kube_version} # Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work @@ -55,6 +55,8 @@ Source5: kubelet-cgroup-setup.sh Source33: genmanpages.sh +Patch1: 0001-Fix-pagesize-check-to-allow-for-options-already-endi.patch + # It obsoletes cadvisor but needs its source code (literally integrated) Obsoletes: cadvisor @@ -350,7 +352,6 @@ Provides: golang(%{import_path}/pkg/genericapiserver/options) = %{version}-%{rel 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} @@ -835,6 +836,7 @@ Kubernetes client tools like kubectl %prep %setup -q -n %{con_repo}-%{con_commit} -T -b 1 %setup -q -n %{repo}-%{commit} +%patch1 -p1 # copy contrib folder mkdir contrib @@ -869,7 +871,7 @@ export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace %ifarch ppc64le export GOLDFLAGS='-linkmode=external' %endif -make WHAT="cmd/hyperkube cmd/kube-apiserver cmd/kubeadm" +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 @@ -896,9 +898,6 @@ output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)" 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 @@ -910,11 +909,23 @@ install -p -m 0644 -t %{buildroot}/%{_sysconfdir}/systemd/system/kubelet.service echo "+++ INSTALLING kubelet-cgroup-setup.sh" install -p -m 0700 -t %{buildroot}/%{_bindir} %{SOURCE5} -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 +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}%{_bindir} ${output_path}/kubelet + +echo "+++ INSTALLING kubectl" +install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kubectl # install the bash completion install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/ @@ -1064,7 +1075,6 @@ fi %{_mandir}/man1/kubectl.1* %{_mandir}/man1/kubectl-* %{_bindir}/kubectl -%{_bindir}/hyperkube %{_datadir}/bash-completion/completions/kubectl ##############################################