前提搭建控制平面: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(为节点配置代理)

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐