本文使用的机器是:Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 5.4.0-121-generic x86_64)
安装kubelet kubeadm kubectl
下图是官网对于K8S三个组件kubelet kubeadm kubectl的安装步骤,(https://kubernetes.io/zh-cn/docs/setup/production-environment/tools/kubeadm/install-kubeadm/)。
官网上的安装教程都是使用的谷歌云,国内不是连不上就是速度慢。因此我们把源替换成阿里云。
# 使得 apt 支持 ssl 传输
sudo apt-get update && apt-get install -y apt-transport-https
# 下载 gpg 密钥 这个需要root用户否则会报错
sudo curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
# 添加 k8s 镜像源 这个需要root用户否则会报错
sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
# 更新源列表
sudo apt-get update
# 下载 kubectl,kubeadm以及 kubelet
sudo apt-get install -y kubelet kubeadm kubectl
cat不成功的可以手动创建kubernetes.list文件。
#cat不成功的可以手动创建`kubernetes.list`文件。
#在文件中写入这行
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
但是直接在/etc/apt/sources.list里添加https://mirrors.aliyun.com/kubernetes/apt/是不行的,因为这个阿里镜像站使用的ssl进行传输的,所以要先安装apt-transport-https并下载镜像站的密钥才可以进行下载。
参考文章:https://www.jianshu.com/p/520d6414a4ab
安装Docker
教程说直接安装即可。
sudo apt-get update
sudo apt-get install -y docker.io
然而我遇到了报错:
$ sudo apt-get install -y docker.io
Reading package lists... Done
Building dependency tree
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
docker.io : Depends: containerd (>= 1.2.6-0ubuntu1~)
E: Unable to correct problems, you have held broken packages.
这是因为有个依赖containerd没装或者版本不够。
可以用以下命令查看。
$ dpkg -l containerd*
结果如下:
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=====================-===============-===============-================================================
un containerd <none> <none> (no description available)
ii containerd.io 1.4.12-1 amd64 An open and reliable container runtime
containerd确实没装。
#安装containerd
$ sudo apt install containerd
#然后再安装docker.io就可以了
$ sudo apt-get install -y docker.io
Docker 配置
$ sudo vi /etc/docker/daemon.json
打开后输入以下内容:
{
"registry-mirrors": [
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://quay-mirror.qiniu.com"
],
"exec-opts": [ "native.cgroupdriver=systemd" ]
}
然后:wq保存后重启 docker:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
关闭Swap内存
#暂时关闭
$ sudo swapoff -a
报错
[ERROR CRI]: container runtime is not running: output: time="2023-02-09T19:02:33+08:00" level=fatal msg="validate service connection: CRI v1 runtime API is not implemented for endpoint \"unix:///var/run/containerd/containerd.sock\": rpc error: code = Unimplemented desc = unknown service runtime.v1.RuntimeService"
, error: exit status 1
原因是有个配置文件吧containerd禁用了,删掉就行。
$ sudo rm /etc/containerd/config.toml
还不行的话
$ sudo apt-get install -y containerd.io
$ sudo systemctl restart containerd
$ sudo kubeadm init
行了。
在另一个机器上安装containerd.io时出现了以下报错:
$ sudo apt-get install containerd.io
[sudo] password for ivic:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package containerd.io
E: Couldn't find any package by glob 'containerd.io'
E: Couldn't find any package by regex 'containerd.io'
解决方案:
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
sudo apt install containerd.io