Kubernetes(k8s)集群搭建笔记2(加入工作节点)
找到[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]下的SystemdCgroup。找到[plugins.'io.containerd.cri.v1.images'.pinned_images]修改sandbox。注:此时/etc/containerd/config.toml该路径文件缺少必要参数,需
前提搭建控制平面:Kubernetes(k8s)集群搭建笔记1(控制平面)
在前面搭建好控制平面单节点集群的基础上,进一步加入工作节点
需另准备一台主机或者虚拟机
硬件版本:ubuntu24.04(内核版本:6.14.0-29-generic)
软件版本:和控制平面一致
前期准备工作:(和控制平面一致)
1、配置静态IP(非常重要,防止断网重联ip变化导致集群挂掉):
在网络设置中进行配置:从自动改为手动,填写ip、掩码、网关、DNS。

重新连接wifi或者有线网,使配置生效,使用ifconfig进行检查:
ifconfig

2、进入root模式:
sudo -i
3、关闭swap(非常重要,k8s强制要求):
注:电脑重启后,swap可能会重新挂载,因此每次重启电脑都需要关闭swap,否则集群不会正常启动
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
验证:
free -h
交换必须是0B

4、开启内核模块(containerd和CNI必须):
cat <<EOF | tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
5、添加内核参数:
cat <<EOF | tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
验证检查:
sysctl --system
正式开始安装(安装顺序:容器运行时-k8s组件):
一、安装容器运行时(这里选择containerd):
1、安装依赖:
apt update
apt install -y ca-certificates curl gnupg lsb-release
2、添加docker官方源(containerd在dorcker仓库里):
注:高版本ubuntu一般自带keyrings文件夹,若不存在就自己建:
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| gpg --dearmor -o /etc/apt/keyrings/docker.gpg
确保/etc/apt/keyrings目录下出现docker.gpg:
ls /etc/apt/keyrings
没有就多运行几次。
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null
3、安装containerd:
apt update
apt install -y containerd.io
验证版本:
containerd --version
注:此时/etc/containerd/config.toml该路径文件缺少必要参数,需要对其进行初始化。
4、初始化生成默认配置:
注:一般安装完该文件夹会自动生成,如果没有就自己建:
mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
5、修改cgroup驱动(k8s v1.35官方文档要求):
vi /etc/containerd/config.toml
找到[plugins.'io.containerd.cri.v1.runtime'.containerd.runtimes.runc.options]下的SystemdCgroup
将SystemdCgroup = false 改为 SystemdCgroup = true

6、重载沙箱(pause)镜像:
找到[plugins.'io.containerd.cri.v1.images'.pinned_images]修改sandbox
sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10.1'(使用国内源)

保存并退出编辑:esc + :wq + 回车
7、启动验证containerd:
systemctl daemon-reload
systemctl restart containerd
systemctl enable containerd
检查状态:
systemctl status containerd
看是否active(running)
按q退出
8、开启内核能力(可选,这里选择开启):
apt install -y linux-tools-common linux-tools-$(uname -r)
9、添加kubernetes官方源(这里是v1.35版本,可以根据实际进行更改):
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.35/deb/Release.key \
| sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg
确保/etc/apt/keyrings目录下出现kubernetes.gpg:
ls /etc/apt/keyrings
echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] \
https://pkgs.k8s.io/core:/stable:/v1.35/deb/ /" \
| sudo tee /etc/apt/sources.list.d/kubernetes.list
10、安装cri-tools:
apt update
apt install -y cri-tools
验证:
crictl version
如果能看到 RuntimeName: containerd,说明 CRI 链路完全正常。
11、配置 crictl 默认 socket(指明containerd.sock,避免每次加参数):
cat <<EOF | sudo tee /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
二、安装kuberbetes:
1、安装三大组件:
apt update
apt install -y kubelet kubeadm kubectl
验证版本:
kubeadm version
kubectl version --client
kubelet --version
2、锁版本(防止自动升级出现版本问题):
apt-mark hold kubelet kubeadm kubectl
3、输入exit退出root模式
注:接下来会反复在控制平面和工作节点之间操作
三、加入集群(工作节点):
1、在控制平面:查询加入令牌(注意24h会刷新):
kubeadm token create --print-join-command
2、在工作节点:执行加入令牌:
注:改成自己控制平面的ip,token使用查询到的令牌
kubeadm join 192.168.105.53:6443 --token.........
3、在控制平面:为控制平面添加污渍:
注:替换为你的主机名 (例如 24-04gnb)
kubectl taint nodes 24-04gnb node-role.kubernetes.io/control-plane:NoSchedule
4、在控制平面:更新参数为多节点:
helm upgrade cilium cilium/cilium -n kube-system \
--reuse-values \
--set operator.replicas=2
验证是否变为两个pod:
kubectl get pods -n kube-system -l io.cilium/app=operator
5、dns重新分配:
查看当前分布(会发现它们都在控制平面上):
kubectl get pods -n kube-system -l k8s-app=kube-dns -o wide
执行滚动重启:
kubectl -n kube-system rollout restart deployment coredns
再次观察(会发现它们分布在工作节点上了):
kubectl get pods -n kube-system -l k8s-app=kube-dns -o wide
至此,工作节点加入成功。
可以为工作节点的containerd也配置代理:Kubernetes(k8s)集群搭建笔记3(为节点配置代理)
更多推荐


所有评论(0)