Upversion kubernetes to v1.18.1
Upgrade to kubernetes v1.18.1 and include a temporary patch for the current StarlngX behavior related to hugepages. Based on the current StarlingX configuration, container hugepages are mounted with the following option that already contains an 'i' as a suffix: pagesize=1Gi. This temporary patch updates the logic associated with https://github.com/kubernetes/kubernetes/commit/03ecc20 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. The new multiple hugepage feature will be enabled an evaluated with the intent of upstreaming this (or a comparable fix) OR adjusting StarlingX hugepage behavior to align with the expected upstream behavior and dropping this patch. In addition: - Update kubelet-cgroup-setup.sh, as now pids and hugetlb both appear to get auto-deleted on reboot so make sure these are recreated. - Update spec to remove hyperkube dependencies as each component is now built independently and needs to be install individually. Change-Id: I34263fa33c61c7a5bce1002a4f5edf5b850aa189 Story: 2006999 Task: 37770 Depends-On: https://review.opendev.org/#/c/718370/ Depends-On: https://review.opendev.org/#/c/718566/ Signed-off-by: Robert Church <robert.church@windriver.com>
This commit is contained in:
parent
5ac3a294a1
commit
23a2ba0cb6
@ -34,8 +34,8 @@ ixgbe-5.5.5.tar.gz#ixgbe-5.5.5#https://sourceforge.net/projects/e1000/files/ixgb
|
|||||||
ixgbevf-4.5.3.tar.gz#ixgbevf-4.5.3#https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/4.5.3/ixgbevf-4.5.3.tar.gz/download#http##
|
ixgbevf-4.5.3.tar.gz#ixgbevf-4.5.3#https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/4.5.3/ixgbevf-4.5.3.tar.gz/download#http##
|
||||||
jerasure-96c76b89d661c163f65a014b8042c9354ccf7f31.tar.gz#jerasure#https://api.github.com/repos/ceph/jerasure/tarball/96c76b89d661c163f65a014b8042c9354ccf7f31#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##
|
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-contrib-v1.18.1.tar.gz#kubernetes-contrib-1.18.1#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-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##
|
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##
|
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##
|
libtpms-0.6.0-4f0d59d.tar.gz#libtpms-0.6.0#https://github.com/stefanberger/libtpms/tarball/c421ca0f4d00c0caceeda8d62c1efb2b7e47db04#http##
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
VERSION=1.16.2
|
VERSION=1.18.1
|
||||||
CON_VERSION=1.16.2
|
CON_VERSION=1.18.1
|
||||||
TAR_NAME=kubernetes
|
TAR_NAME=kubernetes
|
||||||
TAR="$TAR_NAME-v$VERSION.tar.gz"
|
TAR="$TAR_NAME-v$VERSION.tar.gz"
|
||||||
CONTRIB="$TAR_NAME-contrib-v$CON_VERSION.tar.gz"
|
CONTRIB="$TAR_NAME-contrib-v$CON_VERSION.tar.gz"
|
||||||
|
|
||||||
COPY_LIST="${CGCS_BASE}/downloads/$TAR ${CGCS_BASE}/downloads/$CONTRIB $FILES_BASE/*"
|
COPY_LIST="${CGCS_BASE}/downloads/$TAR ${CGCS_BASE}/downloads/$CONTRIB $FILES_BASE/*"
|
||||||
|
|
||||||
TIS_PATCH_VER=1
|
TIS_PATCH_VER=2
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
From ee648637dde0394a9e487a47a2c6f33f2e238046 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Robert Church <robert.church@windriver.com>
|
||||||
|
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 <robert.church@windriver.com>
|
||||||
|
---
|
||||||
|
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
|
||||||
|
|
@ -26,21 +26,38 @@ function ERROR {
|
|||||||
logger -s -p daemon.error "$0($$): ERROR: $@"
|
logger -s -p daemon.error "$0($$): ERROR: $@"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create minimal cgroup directories and configure cpuset attributes
|
# Create minimal cgroup directories and configure cpuset attributes if required
|
||||||
# pids should be first in the list, since it appears to get auto deleted
|
|
||||||
function create_cgroup {
|
function create_cgroup {
|
||||||
local cg_name=$1
|
local cg_name=$1
|
||||||
local cg_nodeset=$2
|
local cg_nodeset=$2
|
||||||
local cg_cpuset=$3
|
local cg_cpuset=$3
|
||||||
|
|
||||||
local CGROUP=/sys/fs/cgroup
|
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 cnt=''
|
||||||
local CGDIR=''
|
local CGDIR=''
|
||||||
local RC=0
|
local RC=0
|
||||||
|
|
||||||
# Create the cgroup for required controllers
|
# Ensure that these cgroups are created every time as they are auto deleted
|
||||||
for cnt in ${CONTROLLERS[@]}; do
|
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}
|
CGDIR=${CGROUP}/${cnt}/${cg_name}
|
||||||
if [ -d ${CGDIR} ]; then
|
if [ -d ${CGDIR} ]; then
|
||||||
LOG "Nothing to do, already configured: ${CGDIR}."
|
LOG "Nothing to do, already configured: ${CGDIR}."
|
||||||
|
@ -23,16 +23,16 @@
|
|||||||
|
|
||||||
%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo}
|
%global provider_prefix %{provider}.%{provider_tld}/%{project}/%{repo}
|
||||||
%global import_path k8s.io/kubernetes
|
%global import_path k8s.io/kubernetes
|
||||||
%global commit 1.16.2
|
%global commit 1.18.1
|
||||||
|
|
||||||
%global con_provider github
|
%global con_provider github
|
||||||
%global con_provider_tld com
|
%global con_provider_tld com
|
||||||
%global con_project kubernetes
|
%global con_project kubernetes
|
||||||
%global con_repo kubernetes-contrib
|
%global con_repo kubernetes-contrib
|
||||||
# https://github.com/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}
|
%global kube_git_version v%{kube_version}
|
||||||
|
|
||||||
# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work
|
# Needed otherwise "version_ldflags=$(kube::version_ldflags)" doesn't work
|
||||||
@ -55,6 +55,8 @@ Source5: kubelet-cgroup-setup.sh
|
|||||||
|
|
||||||
Source33: genmanpages.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)
|
# It obsoletes cadvisor but needs its source code (literally integrated)
|
||||||
Obsoletes: cadvisor
|
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/genericapiserver/validation) = %{version}-%{release}
|
||||||
Provides: golang(%{import_path}/pkg/healthz) = %{version}-%{release}
|
Provides: golang(%{import_path}/pkg/healthz) = %{version}-%{release}
|
||||||
Provides: golang(%{import_path}/pkg/httplog) = %{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) = %{version}-%{release}
|
||||||
Provides: golang(%{import_path}/pkg/kubectl/cmd) = %{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/config) = %{version}-%{release}
|
||||||
@ -835,6 +836,7 @@ Kubernetes client tools like kubectl
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n %{con_repo}-%{con_commit} -T -b 1
|
%setup -q -n %{con_repo}-%{con_commit} -T -b 1
|
||||||
%setup -q -n %{repo}-%{commit}
|
%setup -q -n %{repo}-%{commit}
|
||||||
|
%patch1 -p1
|
||||||
|
|
||||||
# copy contrib folder
|
# copy contrib folder
|
||||||
mkdir contrib
|
mkdir contrib
|
||||||
@ -869,7 +871,7 @@ export KUBE_EXTRA_GOPATH=$(pwd)/Godeps/_workspace
|
|||||||
%ifarch ppc64le
|
%ifarch ppc64le
|
||||||
export GOLDFLAGS='-linkmode=external'
|
export GOLDFLAGS='-linkmode=external'
|
||||||
%endif
|
%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
|
# convert md to man
|
||||||
./hack/generate-docs.sh || true
|
./hack/generate-docs.sh || true
|
||||||
@ -896,9 +898,6 @@ output_path="${KUBE_OUTPUT_BINPATH}/$(kube::golang::host_platform)"
|
|||||||
|
|
||||||
install -m 755 -d %{buildroot}%{_bindir}
|
install -m 755 -d %{buildroot}%{_bindir}
|
||||||
|
|
||||||
echo "+++ INSTALLING hyperkube"
|
|
||||||
install -p -m 755 -t %{buildroot}%{_bindir} ${output_path}/hyperkube
|
|
||||||
|
|
||||||
echo "+++ INSTALLING kube-apiserver"
|
echo "+++ INSTALLING kube-apiserver"
|
||||||
install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/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"
|
echo "+++ INSTALLING kubelet-cgroup-setup.sh"
|
||||||
install -p -m 0700 -t %{buildroot}/%{_bindir} %{SOURCE5}
|
install -p -m 0700 -t %{buildroot}/%{_bindir} %{SOURCE5}
|
||||||
|
|
||||||
binaries=(kube-controller-manager kube-scheduler kube-proxy kubelet kubectl)
|
echo "+++ INSTALLING kube-apiserver"
|
||||||
for bin in "${binaries[@]}"; do
|
install -p -m 754 -t %{buildroot}%{_bindir} ${output_path}/kube-apiserver
|
||||||
echo "+++ HARDLINKING ${bin} to hyperkube"
|
|
||||||
ln %{buildroot}%{_bindir}/hyperkube %{buildroot}%{_bindir}/${bin}
|
echo "+++ INSTALLING kube-controller-manager"
|
||||||
done
|
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 the bash completion
|
||||||
install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/
|
install -d -m 0755 %{buildroot}%{_datadir}/bash-completion/completions/
|
||||||
@ -1064,7 +1075,6 @@ fi
|
|||||||
%{_mandir}/man1/kubectl.1*
|
%{_mandir}/man1/kubectl.1*
|
||||||
%{_mandir}/man1/kubectl-*
|
%{_mandir}/man1/kubectl-*
|
||||||
%{_bindir}/kubectl
|
%{_bindir}/kubectl
|
||||||
%{_bindir}/hyperkube
|
|
||||||
%{_datadir}/bash-completion/completions/kubectl
|
%{_datadir}/bash-completion/completions/kubectl
|
||||||
|
|
||||||
##############################################
|
##############################################
|
||||||
|
Loading…
x
Reference in New Issue
Block a user