前面一篇文章介绍了 Kubernetes **Master 节点** 的 部署,那么,在部署 **Master 节点**后,怎么向集群中增加 **工作节点** 呢? 这就是下面要介绍的内容。
安装好 **kubelet, kubectl , kubeadm** , 启动 **docker** 与 **kubelet.service** 服务:
systemctl enable docker.service
systemctl start docker.service
systemctl enable kubelet.service
systemctl start kubelet.service
然后,需要重新配置 一下 容器运行时 **containerd** 以支持 Kubernetes:
### 生成 containerd 的默认配置文件
containerd config default > /etc/containerd/config.toml
### 查看 sandbox 的默认镜像仓库在文件中的第几行
cat /etc/containerd/config.toml | grep -n "sandbox_image"
### 使用 vim 编辑器 定位到 sandbox_image,将 仓库地址修改成 k8simage/pause:3.6
vim /etc/containerd/config.toml
sandbox_image = "k8simage/pause:3.6"
### 重启 containerd 服务
systemctl daemon-reload
systemctl restart containerd.service
接下来,创建 并 初始化 Master 节点 ,前面的 文章 是 使用配置 文件 来 初始化 Master 节点的,这次 使用 命令行 选项 与 参数 来配置 Master 节点,运行下面的命令 :
# --image-repository 用来 指定 初始化 Master 节点 时 使用的 镜像仓库
# --kubernetes-version='v1.26.2' 用来指定 Kubernetes 的版本,因为 kubernetes 更新迭代的速度很快
# 如果不指定 版本,有可能造成 kubernetes 出新版本了 而 配置的 镜像仓库 没有 最新版 的镜像,从而拉取镜像失败
# --apiserver-advertise-address 就是 Master 节点 的 ip 地址,读者请根据实际情况 改成自己的 ip
kubeadm init --image-repository='k8simage' --kubernetes-version='v1.26.2' --apiserver-advertise-address='10.0.2.5'
请留意 圈出来的部分,很重要,看到类似上面的输出,就表示成功了。
运行 命令 查看 集群 当中的 节点:
kubectl get nodes
结果 报错了: ' E0322 01:36:09.693871 148936 memcache.go:238] couldn't get current server API group list: Get "http://localhost:8080/api?timeout=32s": dial tcp [::1]:8080: connect: connection refused ' 。 这个 报错就 跟上面 红圈 里面的内容 有关 ,可以通过 配置 KUBECONFIG 环境 变量 或者 将 生成的 配置文件 /etc/kubernetes/admin.conf 复制到 $HOME/.kube/config 解决:
# 如果是 root 用户,执行下面这个
export KUBECONFIG=/etc/kubernetes/admin.conf
# 如果是 普通用户,执行下面这组命令
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
再 运行 kubectl get nodes 命令查看一下,就不会报错了:
但是,注意到上面的 node 状态 是 NotReady , 这个是因为没有 配置 网络 插件 CNI 。 这里将 使用 calico 来 充当 CNI 插件。 在 github 上面,找到 calico 项目 https://github.com/projectcalico/calico , 在 manifests 文件 夹里面 即: https://github.com/projectcalico/calico/tree/master/manifests
有一个 calico.yaml 的文件,这个文件就是 部署 calico 的 清单文件。选择 raw 格式 下载 :
wget https://raw.githubusercontent.com/projectcalico/calico/master/manifests/calico.yaml
将 calico.yaml 文件 下载到 Master 节点 后, 部署 calico 组件:
kubectl create -f calico.yaml