云计算、AI、云原生、大数据等一站式技术学习平台

网站首页 > 教程文章 正文

k8s 关于服务器节点维护场景模拟添加新服务器节点【第五节】

jxf315 2025-08-03 05:41:16 教程文章 3 ℃

由于现有服务器节点负载已经达到一定程度,需要进行服务器扩容,添加新的服务器节点,具体步骤如下:

1. 环境准备

首先在新节点上进行基础环境配置:

设置主机名
# cat /etc/hostname
node3

添加host配置文件

# 关闭防火墙
systemctl disable --now firewalld

# 关闭SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config

# 关闭swap
swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

# 设置系统参数
cat > /etc/modules-load.d/k8s.conf << EOF
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

验证是否加载内核
lsmod | grep overlay
lsmod | grep  br_netfilter

cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sysctl --system

# 设置时区
timedatectl set-timezone Asia/Shanghai

说明:为什么在 Kubernetes 中必须加载这两个模块?

  • overlay:为容器运行时(如 containerd)提供存储支持,否则容器无法正常创建和运行。
  • br_netfilter:确保 Kubernetes 的网络插件(如 Calico、Flannel)能够正常工作,实现 Pod 网络通信和安全策略。

如果不加载这两个模块,Kubernetes 集群可能会出现容器无法启动、网络不通等问题。因此,在安装 Kubernetes 前,通常需要通过 modprobe 命令手动加载它们,并通过 sysctl 配置相关网络参数(如
net.bridge.bridge-nf-call-iptables)。

2. 安装 containerd

我这边docker也顺带安装,安装docker ,containerd ,K8S 1.24 及以上版本推荐使用 containerd 作为容器运行时,替代 Docker。

dnf config-manager --add-repo=https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
sed -i 's+$releasever+9+' /etc/yum.repos.d/docker-ce.repo
dnf makecache
dnf install docker-ce docker-ce-cli containerd.io -y

配置containerd

mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i 's|registry.k8s.io|registry.aliyuncs.com/google_containers|g' /etc/containerd/config.toml
sed -i 's|SystemdCgroup = false|SystemdCgroup = true|g' /etc/containerd/config.toml
systemctl enable containerd --now
systemctl restart containerd
systemctl status containerd 

3. 安装 Kubernetes 组件

# cat /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/rpm/
#baseurl=https://pkgs.k8s.io/core:/stable:/v1.32/rpm/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes-new/core/stable/v1.32/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
systemctl enable --now kubelet

4. 准备加入集群

在控制平面节点上生成加入命令:

# kubeadm token create --print-join-command

在新节点执行:

kubeadm join masterip:6443 --token t9m4w1.2d9agaois2njwc32 --discovery-token-ca-cert-hash sha256:28e85a396536ce5ffdf954a79ac0189ef4979b35b3ee00739ab06afcdd6cd4b3

5. 验证节点加入

kubectl get nodes
kubectl get pods -A -o wide | grep node3

6. 安装网络插件(如果集群还没有安装)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

如果加入的节点已经是read,并且查看pod已经有网络插件的pod那么说明网络插件已经安装,不需要重新安装。

Tags:

最近发表
标签列表