Ubuntu 搭建 Kubernetes 手记
在国内的环境下搭建 Kubernetes 还是十分困难的,要么采用科学上网的方式,否则就只能使用各大厂商在国内提供的源或者镜像加速了。要搭建 Kubernetes,前提就必须要分别安装:kubelet & kubeadm & kebectl & kubenetes-cni
。
Ubuntu 下安装 kubelet 和 kubeadm
下面介绍的是在 Ubuntu 18.+
环境下安装这两个工具的方法,Ubuntu
下安装软件有两种方式:apt
和 snap
。后者在国内网络下基本用不了,又没有合适的方法设置源,所以采取 apt
来安装。
如果直接在命令行下面输入下面的命令,根本是行不通的,Ubuntu
会推荐你用 snap
方式安装。
apt-get install kubelet =================================== Reading package lists... Done Building dependency tree Reading state information... Done No apt package "kubelet", but there is a snap with that name. Try "snap install kubelet" E: Unable to locate package kubelet
所以,我们要对 apt
添加 Kubernetes 的源,Kubernetes 官方的源就不用考虑了,下面介绍几大常用的源。
添加中科大的源
我们使用 cat
命令来追加一个“源”文件:
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list deb http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial main EOF
然后更新 apt
:
apt-get update
发现会报下面这种错误信息:
W: GPG error: http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 6A030B21BA07F4FB E: The repository 'http://mirrors.ustc.edu.cn/kubernetes/apt kubernetes-xenial InRelease' is not signed. N: Updating from such a repository can't be done securely, and is therefore disabled by default. N: See apt-secure(8) manpage for repository creation and user configuration details.
根据错误提示,可以得知我们需要制作一个 key,执行下面的命令:
gpg --keyserver keyserver.ubuntu.com --recv-keys BA07F4FB gpg --export --armor BA07F4FB | sudo apt-key add -
注意 BA07F4FB
是上面报错的 NO_PUBKEY
的后八位,然后再重新 apt-get udpate
即可。
apt-get update
添加阿里云的源
执行下面的命令:
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list deb http://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main EOF
当然阿里云的源也需要制作 key,直接从阿里云下载即可:
curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | sudo apt-key add -
然后更新源:
apt-get update
通过 APT 安装 kubelet 和 kubeadm
源添加完毕后,安装这两项就顺理成章、水到渠成了,执行下面的命令:
apt-get install kubelet apt-get install kubeadm
其实安装了这两项后,apt
会自动安装 kubectl
和 kubernetes-cni
,就不需要在进行手动安装了,当然如果不放心,依然可以执行下面的命令确认一下:
apt-get install kubectl apt-get install kubernetes-cni
到此,我们就成功安装好了上面说的四种基本工具。
拉取 Kubeadm 所需要的 Docker 镜像
kubeadm 在工作中会用到一些镜像,会自动下载 Kubernetes 相关镜像, 默认都是从 gcr.io 下载的,因为国内被墙,只能通过其他镜像站拉取,然后重新打上 gcr 的 TAG。因为版本不同,其所依赖的镜像也不相同,通过下面命令可以查看 kubeadm 所依赖的镜像一览:
kubeadm config images list
写这个手记的时候,我使用的 Kubernetes 版本是 v1.17.4,下面是我执行命令之后的结果:
k8s.gcr.io/kube-apiserver:v1.17.4 k8s.gcr.io/kube-controller-manager:v1.17.4 k8s.gcr.io/kube-scheduler:v1.17.4 k8s.gcr.io/kube-proxy:v1.17.4 k8s.gcr.io/pause:3.1 k8s.gcr.io/etcd:3.4.3-0 k8s.gcr.io/coredns:1.6.5
为了方便起见,可以自己写一个小脚本,自动从源拉取这些镜像,并打响应的 TAG。
#!/bin/bash # download k8s 1.15.2 images # gcr.azk8s.cn/google-containers == k8s.gcr.io if [ $# -ne 1 ];then echo "please user in: ./`basename $0` KUBERNETES-VERSION" exit 1 fi version=$1 images=`kubeadm config images list --kubernetes-version=${version} |awk -F'/' '{print $2}'` for imageName in ${images[@]};do docker pull gcr.azk8s.cn/google-containers/$imageName docker tag gcr.azk8s.cn/google-containers/$imageName k8s.gcr.io/$imageName docker rmi gcr.azk8s.cn/google-containers/$imageName done
版权声明
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。