Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ISO: Update docker, containerd, and cri-dockerd #15541

Merged
merged 9 commits into from Jan 24, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/master.yml
Expand Up @@ -522,7 +522,7 @@ jobs:
sudo apt-get update -qq
sudo apt-get -qq -y install conntrack
sudo apt-get -qq -y install socat
CRI_DOCKERD_VERSION="0737013d3c48992724283d151e8a2a767a1839e9"
CRI_DOCKERD_VERSION="0de30fc57b659cf23b1212d6516e0cceab9c91d1"
CRI_DOCKERD_BASE_URL="https://storage.googleapis.com/kicbase-artifacts/cri-dockerd/${CRI_DOCKERD_VERSION}"
sudo curl -L "${CRI_DOCKERD_BASE_URL}/amd64/cri-dockerd" -o /usr/bin/cri-dockerd
sudo curl -L "${CRI_DOCKERD_BASE_URL}/cri-docker.socket" -o /usr/lib/systemd/system/cri-docker.socket
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pr.yml
Expand Up @@ -642,7 +642,7 @@ jobs:
sudo apt-get update -qq
sudo apt-get -qq -y install conntrack
sudo apt-get -qq -y install socat
CRI_DOCKERD_VERSION="0737013d3c48992724283d151e8a2a767a1839e9"
CRI_DOCKERD_VERSION="0de30fc57b659cf23b1212d6516e0cceab9c91d1"
CRI_DOCKERD_BASE_URL="https://storage.googleapis.com/kicbase-artifacts/cri-dockerd/${CRI_DOCKERD_VERSION}"
sudo curl -L "${CRI_DOCKERD_BASE_URL}/amd64/cri-dockerd" -o /usr/bin/cri-dockerd
sudo curl -L "${CRI_DOCKERD_BASE_URL}/cri-docker.socket" -o /usr/lib/systemd/system/cri-docker.socket
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Expand Up @@ -23,7 +23,7 @@ KUBERNETES_VERSION ?= $(shell egrep "DefaultKubernetesVersion =" pkg/minikube/co
KIC_VERSION ?= $(shell egrep "Version =" pkg/drivers/kic/types.go | cut -d \" -f2)

# Default to .0 for higher cache hit rates, as build increments typically don't require new ISO versions
ISO_VERSION ?= v1.28.0-1668700269-15235
ISO_VERSION ?= v1.28.0-1674164545-15541

# Dashes are valid in semver, but not Linux packaging. Use ~ to delimit alpha/beta
DEB_VERSION ?= $(subst -,~,$(RAW_VERSION))
Expand Down Expand Up @@ -715,7 +715,7 @@ KICBASE_IMAGE_REGISTRIES ?= $(KICBASE_IMAGE_GCR) $(KICBASE_IMAGE_HUB)
CRI_DOCKERD_VERSION ?= $(shell egrep "CRI_DOCKERD_VERSION=" deploy/kicbase/Dockerfile | cut -d \" -f2)
.PHONY: update-cri-dockerd
update-cri-dockerd:
(cd hack/update/cri_dockerd && \
(cd hack/update/cri_dockerd_version && \
go run update_cri_dockerd_version.go $(CRI_DOCKERD_VERSION) $(KICBASE_ARCH))

.PHONY: local-kicbase
Expand Down
Expand Up @@ -18,3 +18,4 @@ sha256 f422e21e35705d1e741c1f3280813e43f811eaff4dcc5cdafac8b8952b15f468 v1.6.4.t
sha256 27afb673c20d53aa5c31aec07b38eb7e4dc911e7e1f0c76fac9513bbf070bd24 v1.6.6.tar.gz
sha256 f5f938513c28377f64f85e84f2750d39f26b01262f3a062b7e8ce35b560ca407 v1.6.8.tar.gz
sha256 a034b2273533207d5d96bef8bd3fce1efff85139815efb756d90c705ae1a05ce v1.6.9.tar.gz
sha256 ee170fa73b258e448f9b6729440d38c77d19cd9bec46e45cd195d4670cd8b004 v1.6.15.tar.gz
Expand Up @@ -3,8 +3,8 @@
# containerd
#
################################################################################
CONTAINERD_BIN_AARCH64_VERSION = v1.6.9
CONTAINERD_BIN_AARCH64_COMMIT = 1c90a442489720eec95342e1789ee8a5e1b9536f
CONTAINERD_BIN_AARCH64_VERSION = v1.6.15
CONTAINERD_BIN_AARCH64_COMMIT = 5b842e528e99d4d4c1686467debf2bd4b88ecd86
CONTAINERD_BIN_AARCH64_SITE = https://github.com/containerd/containerd/archive
CONTAINERD_BIN_AARCH64_SOURCE = $(CONTAINERD_BIN_AARCH64_VERSION).tar.gz
CONTAINERD_BIN_AARCH64_DEPENDENCIES = host-go libgpgme
Expand Down
Expand Up @@ -2,3 +2,4 @@ sha256 4acd7605a0cb95a6ad50314d1f2497b92ee0f07382062d0c18a5434c1a3b9513 542e27de
sha256 b2a082a8846ac74b8482ee6353d480cea0dec017bbec2b59b16e3f91efa2f5ca eb0c48ef49856f7d098ec005ddebcae197e08e49.tar.gz
sha256 ceb99430633f75f354c0e9fea1f3cf0e5138ac5ee3c2691a1a70811fd2feeeef a4d1895a2659ea9974bd7528a706592ab8b74181.tar.gz
sha256 cb90ff5fd4de69cc9cf2a63408d42b605f1d4e70b92012729c0a3bd9a4cfa197 0737013d3c48992724283d151e8a2a767a1839e9.tar.gz
sha256 a2e31a5c8ef122a91c4d4107ba2e0cb4950940f9bbf02ee3020715ba051caef9 0de30fc57b659cf23b1212d6516e0cceab9c91d1.tar.gz
Expand Up @@ -4,10 +4,10 @@
#
################################################################################

# As of 2022-06-09
CRI_DOCKERD_AARCH64_VER = 0.2.2
CRI_DOCKERD_AARCH64_REV = 0737013
CRI_DOCKERD_AARCH64_VERSION = 0737013d3c48992724283d151e8a2a767a1839e9
# As of 2023-01-19
CRI_DOCKERD_AARCH64_VER = 0.3.0
CRI_DOCKERD_AARCH64_REV = 0de30fc
CRI_DOCKERD_AARCH64_VERSION = 0de30fc57b659cf23b1212d6516e0cceab9c91d1
CRI_DOCKERD_AARCH64_SITE = https://github.com/Mirantis/cri-dockerd/archive
CRI_DOCKERD_AARCH64_SOURCE = $(CRI_DOCKERD_AARCH64_VERSION).tar.gz

Expand Down
Expand Up @@ -6,3 +6,4 @@ sha256 aa2b2da571fb9160df87fd5a831f203fb97655e35fb9c4e8d46e72078ae16acf docker-2
sha256 a04414b3fcf537f0cff17cf01e2b7cb3e39013c10d12e7959547f11aaf71f63c docker-20.10.19.tgz
sha256 ef69a2a8ddb87026a8b19e240b2ae3087764b7285860df7faee24e04024f2eb7 docker-20.10.20.tgz
sha256 b4ceb6151d4dd1bfc7557f5fe0317e29cfcac91f798c34fae7dee891a811f8ee docker-20.10.21.tgz
sha256 2c75cd6c3dc9b81cb5bde664c882e4339a2054e09cf09606f9f7dd6970e7f078 docker-20.10.22.tgz
Expand Up @@ -4,7 +4,7 @@
#
################################################################################

DOCKER_BIN_AARCH64_VERSION = 20.10.21
DOCKER_BIN_AARCH64_VERSION = 20.10.22
DOCKER_BIN_AARCH64_SITE = https://download.docker.com/linux/static/stable/aarch64
DOCKER_BIN_AARCH64_SOURCE = docker-$(DOCKER_BIN_AARCH64_VERSION).tgz

Expand Down
Expand Up @@ -18,3 +18,4 @@ sha256 f422e21e35705d1e741c1f3280813e43f811eaff4dcc5cdafac8b8952b15f468 v1.6.4.t
sha256 27afb673c20d53aa5c31aec07b38eb7e4dc911e7e1f0c76fac9513bbf070bd24 v1.6.6.tar.gz
sha256 f5f938513c28377f64f85e84f2750d39f26b01262f3a062b7e8ce35b560ca407 v1.6.8.tar.gz
sha256 a034b2273533207d5d96bef8bd3fce1efff85139815efb756d90c705ae1a05ce v1.6.9.tar.gz
sha256 ee170fa73b258e448f9b6729440d38c77d19cd9bec46e45cd195d4670cd8b004 v1.6.15.tar.gz
Expand Up @@ -3,8 +3,8 @@
# containerd
#
################################################################################
CONTAINERD_BIN_VERSION = v1.6.9
CONTAINERD_BIN_COMMIT = 1c90a442489720eec95342e1789ee8a5e1b9536f
CONTAINERD_BIN_VERSION = v1.6.15
CONTAINERD_BIN_COMMIT = 5b842e528e99d4d4c1686467debf2bd4b88ecd86
CONTAINERD_BIN_SITE = https://github.com/containerd/containerd/archive
CONTAINERD_BIN_SOURCE = $(CONTAINERD_BIN_VERSION).tar.gz
CONTAINERD_BIN_DEPENDENCIES = host-go libgpgme
Expand Down
Expand Up @@ -2,3 +2,4 @@ sha256 4acd7605a0cb95a6ad50314d1f2497b92ee0f07382062d0c18a5434c1a3b9513 542e27de
sha256 b2a082a8846ac74b8482ee6353d480cea0dec017bbec2b59b16e3f91efa2f5ca eb0c48ef49856f7d098ec005ddebcae197e08e49.tar.gz
sha256 ceb99430633f75f354c0e9fea1f3cf0e5138ac5ee3c2691a1a70811fd2feeeef a4d1895a2659ea9974bd7528a706592ab8b74181.tar.gz
sha256 cb90ff5fd4de69cc9cf2a63408d42b605f1d4e70b92012729c0a3bd9a4cfa197 0737013d3c48992724283d151e8a2a767a1839e9.tar.gz
sha256 a2e31a5c8ef122a91c4d4107ba2e0cb4950940f9bbf02ee3020715ba051caef9 0de30fc57b659cf23b1212d6516e0cceab9c91d1.tar.gz
Expand Up @@ -4,10 +4,10 @@
#
################################################################################

# As of 2022-06-09
CRI_DOCKERD_VER = 0.2.2
CRI_DOCKERD_REV = 0737013
CRI_DOCKERD_VERSION = 0737013d3c48992724283d151e8a2a767a1839e9
# As of 2023-01-19
CRI_DOCKERD_VER = 0.3.0
CRI_DOCKERD_REV = 0de30fc
CRI_DOCKERD_VERSION = 0de30fc57b659cf23b1212d6516e0cceab9c91d1
CRI_DOCKERD_SITE = https://github.com/Mirantis/cri-dockerd/archive
CRI_DOCKERD_SOURCE = $(CRI_DOCKERD_VERSION).tar.gz

Expand Down
Expand Up @@ -42,3 +42,4 @@ sha256 0629b063fa3aa5660f3fb96f67edb0e20e92d5050b82403f95faf1c142177401 docker-
sha256 ddcd732baaa03958cc8f326a5dca09bcd8f348bb7d2737aaf67bbdd7d80302d1 docker-20.10.19.tgz
sha256 a303cee9125c89abbbb6c4f044b3e2c01c7895e373b90d8de16a7ed25bb2530a docker-20.10.20.tgz
sha256 2582bed8772b283bda9d4565c0af76ee653c93d93dc6b8d0aad795d731a1bb81 docker-20.10.21.tgz
sha256 945c3a3ddcb79ee7307496c2f39eb3d8372466e8654e63d60bbb462e4a3c1427 docker-20.10.22.tgz
Expand Up @@ -4,7 +4,7 @@
#
################################################################################

DOCKER_BIN_VERSION = 20.10.21
DOCKER_BIN_VERSION = 20.10.22
DOCKER_BIN_SITE = https://download.docker.com/linux/static/stable/x86_64
DOCKER_BIN_SOURCE = docker-$(DOCKER_BIN_VERSION).tgz

Expand Down
2 changes: 1 addition & 1 deletion deploy/kicbase/Dockerfile
Expand Up @@ -43,7 +43,7 @@ ARG BUILDKIT_VERSION="v0.11.0"
ARG FUSE_OVERLAYFS_VERSION="v1.7.1"
ARG CONTAINERD_FUSE_OVERLAYFS_VERSION="1.0.3"
ARG CRIO_VERSION="1.24"
ARG CRI_DOCKERD_VERSION="0737013d3c48992724283d151e8a2a767a1839e9"
ARG CRI_DOCKERD_VERSION="0de30fc57b659cf23b1212d6516e0cceab9c91d1"
ARG TARGETARCH

# copy in static files (configs, scripts)
Expand Down
2 changes: 1 addition & 1 deletion hack/jenkins/linux_integration_tests_none.sh
Expand Up @@ -72,7 +72,7 @@ fi
# cri-dockerd is required for Kubernetes 1.24 and higher for none driver
if ! cri-dockerd --version &>/dev/null; then
echo "WARNING: cri-dockerd is not installed. will try to install."
CRI_DOCKERD_VERSION="0737013d3c48992724283d151e8a2a767a1839e9"
CRI_DOCKERD_VERSION="0de30fc57b659cf23b1212d6516e0cceab9c91d1"
CRI_DOCKERD_BASE_URL="https://storage.googleapis.com/kicbase-artifacts/cri-dockerd/${CRI_DOCKERD_VERSION}"
sudo curl -L "${CRI_DOCKERD_BASE_URL}/amd64/cri-dockerd" -o /usr/bin/cri-dockerd
sudo curl -L "${CRI_DOCKERD_BASE_URL}/cri-docker.socket" -o /usr/lib/systemd/system/cri-docker.socket
Expand Down
Expand Up @@ -75,7 +75,7 @@ func main() {

update.Apply(schema, data)

if out, err := exec.Command("./update_cri_dockerd.sh", commit, archs).CombinedOutput(); err != nil {
if out, err := exec.Command("./update_cri_dockerd_version.sh", commit, archs).CombinedOutput(); err != nil {
log.Fatalf("failed to build and upload cri-dockerd binaries: %s", string(out))
}

Expand Down
Expand Up @@ -17,7 +17,7 @@
set -eux -o pipefail

if [ "$#" -ne 2 ]; then
echo "Usage: update_cri_dockerd.sh <version> <archlist>" >&2
echo "Usage: update_cri_dockerd_version.sh <version> <archlist>" >&2
exit 1
fi

Expand Down
2 changes: 1 addition & 1 deletion pkg/drivers/kic/oci/network_create.go
Expand Up @@ -145,7 +145,7 @@ func tryCreateDockerNetwork(ociBin string, subnet *network.Parameters, mtu int,

rr, err := runCmd(exec.Command(ociBin, args...))
if err != nil {
klog.Errorf("failed to create %s network %s %s with gateway %s and mtu of %d: %v", ociBin, name, subnet.CIDR, subnet.Gateway, mtu, err)
klog.Warningf("failed to create %s network %s %s with gateway %s and mtu of %d: %v", ociBin, name, subnet.CIDR, subnet.Gateway, mtu, err)
// Pool overlaps with other one on this address space
if strings.Contains(rr.Output(), "Pool overlaps") {
return nil, ErrNetworkSubnetTaken
Expand Down
4 changes: 2 additions & 2 deletions pkg/drivers/kic/types.go
Expand Up @@ -24,10 +24,10 @@ import (

const (
// Version is the current version of kic
Version = "v0.0.36-1673540226-15630"
Version = "v0.0.36-1674164627-15541"

// SHA of the kic base image
baseImageSHA = "03c9592728381094cbd0ff9603f75ae6b485dd7a390c3e35f02ae5ec10f2f3ad"
baseImageSHA = "0a2280301e955e0d3910d6e639e0b7341db1f4a25558521ac97b38c782c6189a"
// The name of the GCR kicbase repository
gcrRepo = "gcr.io/k8s-minikube/kicbase-builds"
// The name of the Dockerhub kicbase repository
Expand Down
7 changes: 0 additions & 7 deletions pkg/minikube/bootstrapper/bsutil/kubeadm.go
Expand Up @@ -68,13 +68,6 @@ func GenerateKubeadmYAML(cc config.ClusterConfig, n config.Node, r cruntime.Mana
}
return nil, errors.Wrap(err, "getting cgroup driver")
}
// TODO: investigate why containerd (v1.6.15) does not work with k8s (v1.25.3) when both are set to use systemd cgroup driver
// issue: https://github.com/kubernetes/minikube/issues/15633
// until this is fixed, the workaround is to configure kubelet to use cgroupfs when containerd is using systemd
// note: pkg/minikube/bootstrapper/bsutil/kubeadm_test.go::TestGenerateKubeadmYAML also extects this override (for now)
if cc.KubernetesConfig.ContainerRuntime == constants.Containerd && cgroupDriver == constants.SystemdCgroupDriver {
cgroupDriver = constants.CgroupfsCgroupDriver
}

componentOpts, err := createExtraComponentConfig(k8s.ExtraOptions, version, componentFeatureArgs, cp)
if err != nil {
Expand Down
13 changes: 0 additions & 13 deletions pkg/minikube/cruntime/containerd.go
Expand Up @@ -26,7 +26,6 @@ import (
"os"
"os/exec"
"path"
"runtime"
"strings"
"time"

Expand Down Expand Up @@ -238,18 +237,6 @@ func (r *Containerd) Enable(disOthers bool, cgroupDriver string, inUserNamespace
return err
}

// TODO (@prezha): remove this hack after proper version update in minikube release
// ref: https://github.com/containerd/containerd/blob/main/RELEASES.md#kubernetes-support
targetVersion := "1.6.15"
currentVersion, err := r.Version()
if err == nil && semver.MustParse(targetVersion).GT(semver.MustParse(currentVersion)) {
klog.Infof("replacing original containerd with v%s-linux-%s", targetVersion, runtime.GOARCH)
_ = r.Init.ForceStop("containerd")
if err := updateContainerdBinary(r.Runner, targetVersion, runtime.GOARCH); err != nil {
klog.Warningf("unable to replace original containerd with v%s-linux-%s: %v", targetVersion, runtime.GOARCH, err)
}
}

// Otherwise, containerd will fail API requests with 'Unimplemented'
return r.Init.Restart("containerd")
}
Expand Down
30 changes: 0 additions & 30 deletions pkg/minikube/cruntime/cruntime.go
Expand Up @@ -347,33 +347,3 @@ func ConfigureNetworkPlugin(r Manager, cr CommandRunner, networkPlugin string) e
}
return dockerConfigureNetworkPlugin(cr, networkPlugin)
}

// updateCRIDockerdBinary updates cri-dockerd to version
func updateCRIDockerdBinary(cr CommandRunner, version, arch string) error {
curl := fmt.Sprintf("curl -sSfL https://github.com/Mirantis/cri-dockerd/releases/download/v%s/cri-dockerd-%s.%s.tgz | tar -xz -C /tmp", version, version, arch)
if _, err := cr.RunCmd(exec.Command("sudo", "sh", "-c", curl)); err != nil {
return fmt.Errorf("unable to download cri-dockerd version %s: %v", version, err)
}
if _, err := cr.RunCmd(exec.Command("sudo", "chmod", "a+x", "/tmp/cri-dockerd/cri-dockerd")); err != nil {
return fmt.Errorf("unable to chmod cri-dockerd version %s: %v", version, err)
}
if _, err := cr.RunCmd(exec.Command("sudo", "mv", "/tmp/cri-dockerd/cri-dockerd", "/usr/bin/cri-dockerd")); err != nil {
return fmt.Errorf("unable to install cri-dockerd version %s: %v", version, err)
}
return nil
}

// updateContainerdBinary updates containerd to version
func updateContainerdBinary(cr CommandRunner, version, arch string) error {
curl := fmt.Sprintf("curl -sSfL https://github.com/containerd/containerd/releases/download/v%s/containerd-%s-linux-%s.tar.gz | tar -xz -C /tmp", version, version, arch)
if _, err := cr.RunCmd(exec.Command("sudo", "sh", "-c", curl)); err != nil {
return fmt.Errorf("unable to download containerd version %s: %v", version, err)
}
if _, err := cr.RunCmd(exec.Command("sudo", "sh", "-c", "chmod a+x /tmp/bin/*")); err != nil { // note: has to run in subshell because of wildcard!
return fmt.Errorf("unable to chmod containerd version %s: %v", version, err)
}
if _, err := cr.RunCmd(exec.Command("sudo", "sh", "-c", "mv /tmp/bin/* /usr/bin/")); err != nil { // note: has to run in subshell because of wildcard!
return fmt.Errorf("unable to install containerd version %s: %v", version, err)
}
return nil
}
11 changes: 0 additions & 11 deletions pkg/minikube/cruntime/docker.go
Expand Up @@ -23,7 +23,6 @@ import (
"os"
"os/exec"
"path"
"runtime"
"strings"
"text/template"
"time"
Expand Down Expand Up @@ -159,16 +158,6 @@ func (r *Docker) Enable(disOthers bool, cgroupDriver string, inUserNamespace boo
}

if r.CRIService != "" {
// TODO (@prezha): remove this hack after proper version update in minikube release
// deploy/iso/minikube-iso/arch/x86_64/package/cri-dockerd/cri-dockerd.*
// deploy/iso/minikube-iso/arch/aarch64/package/cri-dockerd-aarch64/cri-dockerd.*
// note: https://github.com/Mirantis/cri-dockerd/blob/master/Makefile changed => also needs updating .mk files?!
targetVersion := "0.3.0"
klog.Infof("replacing original cri-dockerd with v%s-%s", targetVersion, runtime.GOARCH)
if err := updateCRIDockerdBinary(r.Runner, targetVersion, runtime.GOARCH); err != nil {
klog.Warningf("unable to replace original cri-dockerd with v%s-%s: %v", targetVersion, runtime.GOARCH, err)
}

if err := r.Init.Enable("cri-docker.socket"); err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/minikube/download/iso.go
Expand Up @@ -41,7 +41,7 @@ const fileScheme = "file"
// DefaultISOURLs returns a list of ISO URL's to consult by default, in priority order
func DefaultISOURLs() []string {
v := version.GetISOVersion()
isoBucket := "minikube-builds/iso/15235"
isoBucket := "minikube-builds/iso/15541"

return []string{
fmt.Sprintf("https://storage.googleapis.com/%s/minikube-%s-%s.iso", isoBucket, v, runtime.GOARCH),
Expand Down
2 changes: 1 addition & 1 deletion site/content/en/docs/commands/start.md
Expand Up @@ -26,7 +26,7 @@ minikube start [flags]
--apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine
--apiserver-port int The apiserver listening port (default 8443)
--auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true)
--base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.36-1673540226-15630@sha256:03c9592728381094cbd0ff9603f75ae6b485dd7a390c3e35f02ae5ec10f2f3ad")
--base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.36-1674164627-15541@sha256:0a2280301e955e0d3910d6e639e0b7341db1f4a25558521ac97b38c782c6189a")
--binary-mirror string Location to fetch kubectl, kubelet, & kubeadm binaries from.
--cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true)
--cert-expiration duration Duration until minikube certificate expiration, defaults to three years (26280h). (default 26280h0m0s)
Expand Down