上篇回顾
上一篇我们讲解了k8s集群中的master的安装,在本章中我们将加入node节点
在上一章节中,master初始化后,最后会出现一个提示如何加入节点的命令(第八步)。
在完成node节点的初始化工作后,可以通过这个命令来讲node节点加入到这个集群。
node节点操作
1.节点初始化
1.修改系统参数
修改主机名
vim /etc/hosts
172.21.176.3 k8s-master
172.21.176.4 k8s-node01
关闭swap
sed -ri 's/^([^#].*swap.*)$/#\1/' /etc/fstab
grep swap /etc/fstab
swapoff -a
关闭防火墙
ufw disable
systemctl disable ufw
设置时区
timedatectl set-timezone Asia/Shanghai
echo 'LC_TIME=en_DK.UTF-8' >> /etc/default/locale
#重启后就会显示24小时制的
开启ipv4转发和网络桥接功能
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOF
sysctl --system
sysctl net.ipv4.ip_forward
sysctl net.bridge.bridge-nf-call-iptables
sysctl net.bridge.bridge-nf-call-ip6tables
2.安装containerd
k8s在1.24版本之后,默认的后端为containerd,并且不再直接支持docker,这里就按照官方趋势,安装containerd
apt安装containerd
apt update && apt install -y containerd
#看下版本
containerd -v
#生成配置文件
mkdir -p /etc/containerd && \
containerd config default > /etc/containerd/config.toml
#修改cgroup
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
#修改pause镜像地址为阿里云地址
sed -i 's#sandbox_image = "registry.k8s.io/pause:3.8"#sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.8"#g' /etc/containerd/config.toml
#修改完毕后一定要重启服务
systemctl daemon-reload
systemctl restart containerd.service
3.使用kubeadm介入K8S集群
(截止2025年3月,k8s最新版本为1.32.2)
此处参考官网案例:安装 kubeadm | Kubernetes
由于k8s的默认镜像在google,内网环境或国内服务器不一定能访问通,所以此处将地址切换为阿里云镜像源
1、apt更新 和安装依赖
更新apt 包索引并安装使用 Kubernetes apt 仓库所需要的包:
sudo apt-get update
# apt-transport-https 可能是一个虚拟包(dummy package);如果是的话,你可以跳过安装这个包
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
2、下载安装签名密钥
用于 Kubernetes 软件包仓库的公共签名密钥。所有仓库都使用相同的签名密钥:
# 如果 `/etc/apt/keyrings` 目录不存在,则应在 curl 命令之前创建它,请阅读下面的注释。
sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
说明:
在低于 Debian 12 和 Ubuntu 22.04 的发行版本中,/etc/apt/keyrings 默认不存在。 应在 curl 命令之前创建它。
3、添加 Kubernetes apt 仓库
请注意,此处使用的为 Kubernetes 1.32 的软件包; 对于其他 Kubernetes 次要版本,则需要更改 URL 中的 Kubernetes 次要版本以匹配你所需的次要版本 (你还应该检查正在阅读的安装文档是否为你计划安装的 Kubernetes 版本的文档)。
# 此操作会覆盖 /etc/apt/sources.list.d/kubernetes.list 中现存的所有配置。
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list
4、安装 kubelet、kubeadm 和 kubectl,并锁定其版本:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl
5、查看kubeadm的版本
上述步骤在2台服务器中都操作完毕后,可以通过kubeadm version命令会返回代码,里面显示了详细的版本信息,此处显示版本为v1.32.2
root@k8s-node:~# kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"32", GitVersion:"v1.32.2", GitCommit:"67a30c0adcf52bd3f56ff0893ce19966be12991f", GitTreeState:"clean", BuildDate:"2025-02-12T21:24:52Z", GoVersion:"go1.23.6", Compiler:"gc", Platform:"linux/amd64"}
使用 kubeadm 加入集群
使用kube join命令 将node节点加入集群
① keueadm join 命令 ,这个是在master初始化完毕后会显示
② 生成一些配置文件
③ 加入完毕,提示可以通过kubectl get nodes命令来查看集群中的节点
查看集群中的节点数量
通过命令可以看到,刚才的node节点已经加入成功。
忘记了keueadm join命令?
在一些环境中,可能只有一台服务器作为master节点,暂时没有node的资源,也没有保存当时生成的kubeadm join命令。那么后期在准备加入node资源节点的时候,该怎么去找这个命令呢?
通过这个命令,可以重新生成一条加入集群的命令,记得是在master上运行。
kubeadm token create --print-join-command