这篇文章的背景是,在墙内。。。
一、安装docker
1. 使用官方脚本安装
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
2. 查看doker版本
docker --version
3. 配置镜像加速器
这里配置的是阿里云的,地址 cr.console.aliyun.com/cn-hangzhou… ,按照操作文档修改即可
二、安装kubeadm
1. 下载并添加公钥
curl -s packages.cloud.google.com/apt/doc/apt… | apt-key add -
注:如果服务器上无法下载公钥,可以提前在官网下载传到服务器,地址 https://packages.cloud.google.com/apt/doc/apt-key.gpg
添加公钥
apt-key add apt-key.gpg
2. 添加Kubernetes源
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
3. 安装 kubeadm
安装 kubeadm 的过程中,kubelet、kubectl、kubernetes-cni 会自动安装好
apt-get update
apt-get install -y kubeadm
注:docker 可以在这里跟 kubeadm一同安装,没尝试过……
三、部署K8s集群的Master节点
1. 查看kubeadm初始化需要用的镜像
kubeadm config images list
2. 下载镜像
这里借助阿里云提供的镜像服务,获取gcr.io 上的镜像,可以搜索现成的镜像直接用,也可以自建。
注:搜索镜像的地址 https://cr.console.aliyun.com/cn-hangzhou/instances/images
(自建仓库构建总失败,所以我是输入网址找到的,搜是没搜到的……)
在服务器上拉取阿里云的镜像,需要先登录阿里云
拉取的镜像多,可以写了个脚本,包含拉取、打标签、删除原镜像,执行脚本即可拉取镜像。其中coredns:v1.8.0镜像在这个仓库中没找到对应版本,后续直接拉取。
images=(
kube-apiserver:v1.21.0
kube-controller-manager:v1.21.0
kube-scheduler:v1.21.0
kube-proxy:v1.21.0
pause:3.4.1
etcd:3.4.13-0
)
for imageName in ${images[@]} ; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName k8s.gcr.io/$imageName
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imageName
done
拉取coredns
$ docker pull coredns/coredns:1.8.0
$ docker tag coredns/coredns:1.8.0 k8s.gcr.io/coredns/coredns:v1.8.0
3. 初始化kubeadm
$ kubeadm init
注:这里要求CPU大于1,如果CPU只有1个,可以添加参数 ignore-preflight-errors 忽略
$ kubeadm init --ignore-preflight-errors=NumCPU
初始化后会出现以下提示
kubectl命令需要使用kubernetes-admin来运行,所以根据提示,在普通用户下执行
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config
或者,在root用户下执行
$ echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
$ source ~/.bash_profile
最后的token,用于添加Work节点
4. 查看集群的节点状态
kube-system 是 Kubernetes 项目预留的系统 Pod 的工作空间
由于Master 节点的网络尚未就绪,所以这里 coredns 为 Pending 状态
5. 部署网络插件
参考官网给出的网络扩展( kubernetes.io/docs/concep… ),这里使用calico
$ wget https://docs.projectcalico.org/manifests/calico.yaml
$ kubectl apply -f calico.yaml
此时再查看集群状态
至此Master节点就安装完成了
四、部署K8s集群的Work节点
- 在Work节点上安装 Docker 和 kubeadm(本篇一、二)
- 执行部署 Master 节点时生成的 kubeadm join 指令
$ kubeadm join 172.16.0.7:6443 --token 9mr1az.wx1uau4w4cro4opa --discovery-token-ca-cert-hash sha256:7697ebc577d456d1505e47024dfa403bd9743edb228bdca0d0f55476e83fdc6d
没有多余服务器了,所以未尝试Work节点的部署
至此,Kubernetes集群部署完成