Skip to content

Commit 9df98f3

Browse files
authored
Merge pull request kubernetes#123943 from dims/allow-installing-newer-containerd-runc-on-cos
Allow installing newer containerd runc on cos
2 parents 656cb10 + fc55583 commit 9df98f3

File tree

4 files changed

+62
-0
lines changed

4 files changed

+62
-0
lines changed

cluster/gce/config-default.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,13 @@ export LOAD_IMAGE_COMMAND=${KUBE_LOAD_IMAGE_COMMAND:-ctr -n=k8s.io images import
112112
export UBUNTU_INSTALL_CONTAINERD_VERSION=${KUBE_UBUNTU_INSTALL_CONTAINERD_VERSION:-}
113113
export UBUNTU_INSTALL_RUNC_VERSION=${KUBE_UBUNTU_INSTALL_RUNC_VERSION:-}
114114

115+
# Ability to inject custom versions (COS images ONLY)
116+
# if KUBE_COS_INSTALL_CONTAINERD_VERSION or KUBE_COS_INSTALL_RUNC_VERSION
117+
# is set to empty then we do not override the version(s) and just
118+
# use whatever is in the default installation of containerd package
119+
export COS_INSTALL_CONTAINERD_VERSION=${KUBE_COS_INSTALL_CONTAINERD_VERSION:-}
120+
export COS_INSTALL_RUNC_VERSION=${KUBE_COS_INSTALL_RUNC_VERSION:-}
121+
115122
# MASTER_EXTRA_METADATA is the extra instance metadata on master instance separated by commas.
116123
export MASTER_EXTRA_METADATA=${KUBE_MASTER_EXTRA_METADATA:-${KUBE_EXTRA_METADATA:-}}
117124
# MASTER_EXTRA_METADATA is the extra instance metadata on node instance separated by commas.

cluster/gce/config-test.sh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,13 @@ export GCI_DOCKER_VERSION=${KUBE_GCI_DOCKER_VERSION:-}
125125
export UBUNTU_INSTALL_CONTAINERD_VERSION=${KUBE_UBUNTU_INSTALL_CONTAINERD_VERSION:-}
126126
export UBUNTU_INSTALL_RUNC_VERSION=${KUBE_UBUNTU_INSTALL_RUNC_VERSION:-}
127127

128+
# Ability to inject custom versions (COS images ONLY)
129+
# if KUBE_COS_INSTALL_CONTAINERD_VERSION or KUBE_COS_INSTALL_RUNC_VERSION
130+
# is set to empty then we do not override the version(s) and just
131+
# use whatever is in the default installation of containerd package
132+
export COS_INSTALL_CONTAINERD_VERSION=${KUBE_COS_INSTALL_CONTAINERD_VERSION:-}
133+
export COS_INSTALL_RUNC_VERSION=${KUBE_COS_INSTALL_RUNC_VERSION:-}
134+
128135
# MASTER_EXTRA_METADATA is the extra instance metadata on master instance separated by commas.
129136
export MASTER_EXTRA_METADATA=${KUBE_MASTER_EXTRA_METADATA:-${KUBE_EXTRA_METADATA:-}}
130137
# MASTER_EXTRA_METADATA is the extra instance metadata on node instance separated by commas.

cluster/gce/gci/configure.sh

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,46 @@ function install-containerd-ubuntu {
542542
sudo systemctl start containerd
543543
}
544544

545+
# If we are on cos we can try to install containerd
546+
function install-containerd-cos {
547+
# bailout if we are not on COS
548+
if [ -e /etc/os-release ] && ! grep -q "ID=cos" /etc/os-release; then
549+
echo "Unable to automatically install containerd in non-cos image. Bailing out..."
550+
exit 2
551+
fi
552+
553+
# Override to latest versions of containerd and runc
554+
systemctl stop containerd
555+
mkdir -p /home/containerd/
556+
mount --bind /home/containerd /home/containerd
557+
mount -o remount,exec /home/containerd
558+
if [[ -n "${COS_INSTALL_CONTAINERD_VERSION:-}" ]]; then
559+
# containerd versions have slightly different url(s), so try both
560+
# shellcheck disable=SC2086
561+
( curl ${CURL_FLAGS} \
562+
--location \
563+
"https://github.com/containerd/containerd/releases/download/${COS_INSTALL_CONTAINERD_VERSION}/containerd-${COS_INSTALL_CONTAINERD_VERSION:1}-${HOST_PLATFORM}-${HOST_ARCH}.tar.gz" \
564+
|| curl ${CURL_FLAGS} \
565+
--location \
566+
"https://github.com/containerd/containerd/releases/download/${COS_INSTALL_CONTAINERD_VERSION}/containerd-${COS_INSTALL_CONTAINERD_VERSION:1}.${HOST_PLATFORM}-${HOST_ARCH}.tar.gz" ) \
567+
| tar --overwrite -xzv -C /home/containerd/
568+
cp /usr/lib/systemd/system/containerd.service /etc/systemd/system/containerd.service
569+
# fix the path of the new containerd binary
570+
sed -i 's|ExecStart=.*|ExecStart=/home/containerd/bin/containerd|' /etc/systemd/system/containerd.service
571+
fi
572+
if [[ -n "${COS_INSTALL_RUNC_VERSION:-}" ]]; then
573+
# shellcheck disable=SC2086
574+
curl ${CURL_FLAGS} \
575+
--location \
576+
"https://github.com/opencontainers/runc/releases/download/${COS_INSTALL_RUNC_VERSION}/runc.${HOST_ARCH}" --output /home/containerd/bin/runc \
577+
&& chmod 755 /home/containerd/bin/runc
578+
# ensure runc gets picked up from the correct location
579+
sed -i "/\[Service\]/a Environment=PATH=/home/containerd/bin:$PATH" /etc/systemd/system/containerd.service
580+
fi
581+
systemctl daemon-reload
582+
sudo systemctl start containerd
583+
}
584+
545585
function install-auth-provider-gcp {
546586
local -r filename="auth-provider-gcp"
547587
local -r auth_provider_storage_full_path="${AUTH_PROVIDER_GCP_STORAGE_PATH}/${AUTH_PROVIDER_GCP_VERSION}/${HOST_PLATFORM}_${HOST_ARCH}/${filename}"
@@ -587,6 +627,9 @@ function ensure-containerd-runtime {
587627
if [[ -n "${UBUNTU_INSTALL_CONTAINERD_VERSION:-}" || -n "${UBUNTU_INSTALL_RUNC_VERSION:-}" ]]; then
588628
log-wrap "InstallContainerdUbuntu" install-containerd-ubuntu
589629
fi
630+
if [[ -n "${COS_INSTALL_CONTAINERD_VERSION:-}" || -n "${COS_INSTALL_RUNC_VERSION:-}" ]]; then
631+
log-wrap "InstallContainerdCOS" install-containerd-cos
632+
fi
590633

591634
# Fall back to installing distro specific containerd, if not found
592635
if ! command -v containerd >/dev/null 2>&1; then
@@ -598,6 +641,9 @@ function ensure-containerd-runtime {
598641
Ubuntu)
599642
log-wrap "InstallContainerdUbuntu" install-containerd-ubuntu
600643
;;
644+
cos)
645+
log-wrap "InstallContainerdCOS" install-containerd-cos
646+
;;
601647
*)
602648
echo "Installing containerd for linux release ${linuxrelease} not supported" >&2
603649
exit 2

cluster/gce/util.sh

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,6 +1211,8 @@ CONTAINER_RUNTIME_TEST_HANDLER: $(yaml-quote "${CONTAINER_RUNTIME_TEST_HANDLER:-
12111211
CONTAINERD_INFRA_CONTAINER: $(yaml-quote "${CONTAINER_INFRA_CONTAINER:-}")
12121212
UBUNTU_INSTALL_CONTAINERD_VERSION: $(yaml-quote "${UBUNTU_INSTALL_CONTAINERD_VERSION:-}")
12131213
UBUNTU_INSTALL_RUNC_VERSION: $(yaml-quote "${UBUNTU_INSTALL_RUNC_VERSION:-}")
1214+
COS_INSTALL_CONTAINERD_VERSION: $(yaml-quote "${COS_INSTALL_CONTAINERD_VERSION:-}")
1215+
COS_INSTALL_RUNC_VERSION: $(yaml-quote "${COS_INSTALL_RUNC_VERSION:-}")
12141216
NODE_LOCAL_SSDS_EXT: $(yaml-quote "${NODE_LOCAL_SSDS_EXT:-}")
12151217
NODE_LOCAL_SSDS_EPHEMERAL: $(yaml-quote "${NODE_LOCAL_SSDS_EPHEMERAL:-}")
12161218
LOAD_IMAGE_COMMAND: $(yaml-quote "${LOAD_IMAGE_COMMAND:-}")

0 commit comments

Comments
 (0)