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)
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?