【Kubernetes系列】部署K8s集群

353 阅读2分钟
这篇文章的背景是,在墙内。。。

一、安装docker

1. 使用官方脚本安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2. 查看doker版本

docker --version

image.png

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

image.png

2. 下载镜像

这里借助阿里云提供的镜像服务,获取gcr.io 上的镜像,可以搜索现成的镜像直接用,也可以自建。

注:搜索镜像的地址 https://cr.console.aliyun.com/cn-hangzhou/instances/images
(自建仓库构建总失败,所以我是输入网址找到的,搜是没搜到的……)

在服务器上拉取阿里云的镜像,需要先登录阿里云 image.png

拉取的镜像多,可以写了个脚本,包含拉取、打标签、删除原镜像,执行脚本即可拉取镜像。其中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

初始化后会出现以下提示 image.png

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. 查看集群的节点状态

image.png kube-system 是 Kubernetes 项目预留的系统 Pod 的工作空间

image.png 由于Master 节点的网络尚未就绪,所以这里 coredns 为 Pending 状态

5. 部署网络插件

参考官网给出的网络扩展( kubernetes.io/docs/concep… ),这里使用calico

$ wget https://docs.projectcalico.org/manifests/calico.yaml
$ kubectl apply -f calico.yaml

此时再查看集群状态 image.png

至此Master节点就安装完成了

四、部署K8s集群的Work节点

  1. 在Work节点上安装 Docker 和 kubeadm(本篇一、二)
  2. 执行部署 Master 节点时生成的 kubeadm join 指令
$ kubeadm join 172.16.0.7:6443 --token 9mr1az.wx1uau4w4cro4opa --discovery-token-ca-cert-hash sha256:7697ebc577d456d1505e47024dfa403bd9743edb228bdca0d0f55476e83fdc6d
没有多余服务器了,所以未尝试Work节点的部署

至此,Kubernetes集群部署完成