release: kubeadm debian package v1.25.6 fails against v1alpha2 API CRI due to dependency on cri-tools >= 1.26.0

Is this a BUG REPORT or FEATURE REQUEST?

BUG REPORT

Versions

kubeadm version (use kubeadm version): kubeadm version: &version.Info{Major:“1”, Minor:“25”, GitVersion:“v1.25.6”, GitCommit:“ff2c119726cc1f8926fb0585c74b25921e866a28”, GitTreeState:“clean”, BuildDate:“2023-01-18T19:20:37Z”, GoVersion:“go1.19.5”, Compiler:“gc”, Platform:“linux/amd64”}

Environment:

  • Kubernetes version (use kubectl version): Client Version: version.Info{Major:“1”, Minor:“25”, GitVersion:“v1.25.6”, GitCommit:“ff2c119726cc1f8926fb0585c74b25921e866a28”, GitTreeState:“clean”, BuildDate:“2023-01-18T19:22:09Z”, GoVersion:“go1.19.5”, Compiler:“gc”, Platform:“linux/amd64”}
  • Cloud provider or hardware configuration: VMware VMs
  • OS (e.g. from /etc/os-release): Ubuntu 22.04
  • Kernel (e.g. uname -a): Linux master-test-cluster.iotnxt.io 5.15.0-58-generic #-64-Ubuntu SMP Thu Jan 5 11:43:13 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
  • Container runtime (CRI) (e.g. containerd, cri-o): version=1.5.9-0ubuntu3.1
  • Container networking plugin (CNI) (e.g. Calico, Cilium): Calico
  • Others:

What happened?

When attempting to run kubeadm config images pull it fails compaining that the CRI runtime does not support the v1 API.

# kubeadm config images pull
I0119 17:36:05.929035   54330 version.go:256] remote version is much newer: v1.26.1; falling back to: stable-1.25
failed to pull image "registry.k8s.io/kube-apiserver:v1.25.6": output: time="2023-01-19T17:36:07+02:00" level=fatal msg="validate service connection: CRI v1 image API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.ImageService"
, error: exit status 1

What you expected to happen?

A runtime supporting CRI apiVersion v1alpha2 should work, as documented here

How to reproduce it (as minimally and precisely as possible)?

On a Debian environment (Ubuntu 22.04 will work) Configure the Kubernetes APT repo. Install containerd 1.5.x Set up pins in /etc/apt/preferences.d/kubeadm for kubeadm and cri-tools on 1.25.* (kubeadm v1.25.6 will fail with this, see above, so the pin for cri-tools might need to be removed to reproduce the error) With the pins, attempt to install kubeadm (it will fail complaining that it depends on >= v1.26. If the pin is removed, it will install, but fail to communicate with containerd v1.5.9)

More minimal for the underlying issue: On ubuntu 22.04: Check dependencies for kubeadm v1.25.5 and v1.25.6 with apt show. Install the cri-tools version that it depends on. Install containerd 1.5.9 (that is the default one from the OS repo)

Run crictl -r unix:///run/containerd/containerd.sock version.

For cri-tools v1.26.0 (depended on by kubeadm v1.25.6):

crictl -r unix:///run/containerd/containerd.sock version
FATA[0000] validate service connection: CRI v1 runtime API is not implemented for endpoint "unix:///run/containerd/containerd.sock": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService

For cri-tools v1.25.0 (which is within kubeadm v1.25.5’s dependencies, but not v1.25.6’s)

# crictl -r unix:///run/containerd/containerd.sock version
Version:  0.1.0
RuntimeName:  containerd
RuntimeVersion:  1.5.9-0ubuntu3.1
RuntimeApiVersion:  v1alpha2

Note that it works when the cri-tools version that v1.25.5 depends on is installed, but fails if the version that v1.25.6 depends on is installed.

Anything else we need to know?

v1.25.5 worked correctly - cri-tools v1.25.x could be installed and with that installed the pull works.

The version of cri-tools depended on by v1.25.6 (>= 1.26.0) differs from that of v1.25.5 (>= 1.25.0).

# apt show kubeadm=1.25.5-00
Package: kubeadm
Version: 1.25.5-00
Priority: optional
Section: misc
Maintainer: Kubernetes Authors <kubernetes-dev+release@googlegroups.com>
Installed-Size: 43.8 MB
Depends: kubelet (>= 1.19.0), kubectl (>= 1.19.0), kubernetes-cni (>= 1.1.1), cri-tools (>= 1.25.0)
Homepage: https://kubernetes.io/
Download-Size: 9,229 kB
APT-Sources: https://apt.kubernetes.io/ kubernetes-xenial/main amd64 Packages
Description: Kubernetes Cluster Bootstrapping Tool
The Kubernetes command line tool for bootstrapping a Kubernetes cluster.

# apt show kubeadm=1.25.6-00
Package: kubeadm
Version: 1.25.6-00
Priority: optional
Section: misc
Maintainer: Kubernetes Authors <kubernetes-dev+release@googlegroups.com>
Installed-Size: 43.8 MB
Depends: kubelet (>= 1.19.0), kubectl (>= 1.19.0), kubernetes-cni (>= 1.2.0), cri-tools (>= 1.26.0)
Homepage: https://kubernetes.io/
Download-Size: 9,230 kB
APT-Manual-Installed: yes
APT-Sources: https://apt.kubernetes.io/ kubernetes-xenial/main amd64 Packages
Description: Kubernetes Cluster Bootstrapping Tool
The Kubernetes command line tool for bootstrapping a Kubernetes cluster.

About this issue

  • Original URL
  • State: closed
  • Created a year ago
  • Reactions: 2
  • Comments: 17 (3 by maintainers)

Most upvoted comments

Yes, the new kubeadm can only be used with the new container runtimes.

It does not support containerd 1.5 or cri-dockerd 0.2 (or dockershim). So the depends are wrong

/transfer release

this is a package management issue. moving to k/release

@afbjorklund i believe you investigated similar issues recently?