安装老版本的 Kubernetes

记得前些日子看过一个报告,说是私有部署中公司内部用的 Kubernetes ,要比社区版延迟有 17 个月。所以,在很多公司,安装一个老版本的 Kubernetes ,可能还真是一个日常操作。

不过不光 Kubernetes 有版本问题,连它的安装工具 kubeadm 也是有版本要求的,要想安装指定版本的 Kubernetes ,还得安装指定版本的 kubeadm 。

这里以在 Ubuntu 下为例,记录一下如何安装一个 1.16 版本的 Kubernetes。

可以使用 apt-cache 命令查看支持的 Kubernetes 版本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# apt-cache madison kubectl | grep 1.16
   kubectl | 1.16.15-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl | 1.16.14-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl | 1.16.13-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl | 1.16.12-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl | 1.16.11-01 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl | 1.16.11-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl | 1.16.10-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.9-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.8-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.7-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.6-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.5-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.4-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.3-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.2-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.1-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages
   kubectl |  1.16.0-00 | https://apt.kubernetes.io kubernetes-xenial/main amd64 Packages

所以我们可以选择一个最大的数字来作为版本号安装。

1
2
3
4
5
6
7
# apt install -y kubelet=1.16.15-00 kubeadm=1.16.15-00 kubectl=1.16.15-00

... ...

Setting up kubelet (1.16.15-00) ...
Setting up kubectl (1.16.15-00) ...
Setting up kubeadm (1.16.15-00) ...

最后再使用 kubeadm 安装指定版本的 Kubernetes:

1
2
3
4
# kubeadm init --cri-socket /run/containerd/containerd.sock \
    --pod-network-cidr=10.244.0.0/16 \
    --apiserver-advertise-address 192.168.2.147 \
    --kubernetes-version v1.16.0