boxmoe_header_banner_img

(>wO``)❤

加载中

文章导读

k8sv3.34.1+containerdv2.1.4+calicov3.31.0集群部署


avatar
bai, mo 2026年4月12日 82
环境先前配置

如下图进行配置网关指定为10.10.10.1, DNS指定为10.10.10.101

联网可以配置dns为腾讯云dns ip :119.29.29.29;这里我使用的是联网配置

系统使用debian12;内存为2.9,处理器为一个数量两个内核,硬盘为80G

虚拟网络编辑器设置NAT网关为10.10.10.1,物理主机vment8网卡为10.10.10.2/24 网关为10.10.10.1

先不进行克隆以下配置均在controller主机内进行配置

1.1配置静态域名转换

vim /etc/hosts.conf<br>    10.10.10.101    controller<br>    10.10.10.102    node1<br>    10.10.10.103    node2

1.2配置时间服务器

apt install chrony -y<br>vim /etc/chrony/chrony.conf<br>     9 server ntp.aliyun.com iburst<br>    10 allow 10.10.10.0/24<br>    11 local stratum 10<br>    <br>date -R<br>timedatectl set-timezone Asia/Shanghai

1.3配置ipvs

apt install -y ipset ipvsadm<br>vim /etc/modules-load.d/ipvs.conf<br>    1 ip_vs<br>    2 ip_vs_rr<br>    3 ip_vs_wrr<br>    4 ip_vs_sh<br>    5 nf_conntrack<br>​<br>vim /root/ipvs.sh<br>    1 modprobe -- ip_vs<br>    2 modprobe -- ip_vs_rr<br>    3 modprobe -- ip_vs_wrr<br>    4 modprobe -- ip_vs_sh<br>    5 modprobe -- nf_conntrack<br>​<br>bash /root/ipvs.sh

1.4关闭swap分区

vim /etc/fstab<br>    15  sudo apt-get install -y kubelet=1.34.1-* kubeadm=1.34.1-* kubectl=1.34.1-*<br>​<br>swapoff -a  #临时关闭swap分区

1.5允许iptables检查桥接流量

cat <<EOF | tee /etc/modules-load.d/k8s.conf<br>br_netfilter<br>bridge<br>EOF<br>​<br>cat <<EOF | tee /etc/sysctl.d/k8s.conf  <br>net.bridge.bridge-nf-call-ip6tables = 1<br>net.bridge.bridge-nf-call-iptables = 1<br>net.ipv4.ip_forward = 1<br>EOF<br>sysctl --system

1.6禁用apparmor

systemctl disable --now apparmor

containerd

将所有相关的k8s软件包导入至虚拟机内

2.1拷贝containerd运行文件

cp  /root/k8s-soft/containerd-2.1.4-linux-amd64/bin/containerd /usr/local/bin/<br>cp /etc/systemd/system/containerd.service  /usr/lib/systemd/system/<br>cp /root/k8s-soft/containerd-2.1.4-linux-amd64/bin/ctr /usr/bin<br>​<br>chmod +x /usr/local/bin/containerd<br>​<br>containerd --help<br>​<br>root@controller:~# containerd --help<br>NAME:<br>   containerd -<br>                                    __        _                     __<br>                  _________  ____  / /_____ _(_)___  ___  _________/ /<br>                 / ___/ __ \/ __ \/ __/ __ `/ / __ \/ _ \/ ___/ __  /<br>                / /__/ /_/ / / / / /_/ /_/ / / / / /  __/ /  / /_/ /<br>                \___/\____/_/ /_/\__/\__,_/_/_/ /_/\___/_/   \__,_/<br>​<br>                high performance container runtime<br>​<br>​<br>USAGE:<br>   containerd [global options] command [command options]<br>​<br>VERSION:<br>   v2.1.4<br>​

2.2生成配置文件

mkdir /etc/containerd<br>containerd config default > /etc/containerd/config.toml

2.3修改containerd的配置文件

vim /etc/containerd/config.toml<br>     50 sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10'<br>    108 SystemdCgroup = true<br>    <br>grep SystemdCgroup /etc/containerd/config.toml<br>    SystemdCgroup = ture<br>​<br>grep sandbox /etc/containerd/config.toml<br>      sandbox = 'registry.aliyuncs.com/google_containers/pause:3.10'<br>​<br>systemctl enable --now containerd<br>systemctl status containerd

2.4拷贝容器运行时

cp /usr/local/bin/containerd-shim-runc-v2 /usr/bin

runc

3.1单独安装runc

cp -p /root/k8s-soft/runc-v1.3.2.amd64 /usr/sbin/runc<br>chmod +X /usr/sbin/runc<br>​<br>root@controller:~# runc -v<br>runc version 1.4.0-rc.2<br>commit: v1.4.0-rc.2-0-g8aeb2a4b<br>spec: 1.2.1+dev<br>go: go1.24.8<br>libseccomp: 2.5.6<br>​

k8s

4.1k8s软件安装

# 安装基础依赖<br>apt-get update<br>apt-get install -y apt-transport-https ca-certificates curl gpg<br>​<br># 创建密钥目录<br>mkdir -p /etc/apt/keyrings<br>​<br># 下载并添加GPG密钥<br>curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg<br>​<br># 添加Kubernetes APT源<br>echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /" | tee /etc/apt/sources.list.d/kubernetes.list<br>​<br>apt-get install -y kubelet=1.34.1-* kubeadm=1.34.1-* kubectl=1.34.1-*<br>systemctl enable kubectl kubelet --now

4.2导入calico所需镜像

tar xf k8s-soft/calico-images-v3.31.0-linux-amd64.tar -C /root<br>for image in /root/calico-images-v3.31.0/linux/amd64/*.tar;do ctr -n k8s.io images import "$image";done

4.3导入k8s所需镜像

for image in /root/k8s-soft/k8s-componentsv1.34.1-images/*.tar;do ctr -n k8s.io images import "$image";done
ctr -n k8s.io images list

4.4克隆controller生成node1与node2

#过程跳过<br>node1与node2设置IPv4地址

4.5ssh免密登录

#controller生成ssh密钥<br>ssh-keygen<br>ssh-copy-id 10.10.10.102<br>ssh-copy-id 10.10.10.103

4.6k8s初始化集群

#controller<br>kubeadm init --apiserver-advertise-address=10.10.10.101 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.34.1 --service-cidr=10.96.0.0/12 --pod-network-cidr=192.168.0.0/16

4.6k8s配置文件创建

#controller<br>mkdir -p $HOME/.kube<br>sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config<br>sudo chown $(id -u):$(id -g) $HOME/.kube/config

4.7node节点加入k8s集群

#node1&&node2<br>kubeadm join x.x.x.x:6443 --token picxyk.su53y03l1z0jh333e \<br>    --discovery-token-ca-cert-hash sha256:01fecbd4bdc0513811f7b65a43e41820d703a91c631e262b1ad4634e12cd0205 <br>    --cri-socket=unix:///run/containerd/containerd.sock

calico

#controller<br>kubectl apply -f calico.yaml

集群重置

# 1. 完全重置节点<br>sudo kubeadm reset --force<br>sudo rm -rf /etc/kubernetes/ /var/lib/kubelet/ /var/lib/etcd/ /etc/cni/net.d/<br>sudo iptables -F && sudo iptables -t nat -F && sudo iptables -t mangle -F && sudo iptables -X<br>​<br># 2. 清理 Docker(如果使用 Docker)<br>sudo docker ps -aq | xargs sudo docker rm -f<br>sudo docker system prune -af<br>​<br># 3. 重启节点<br>sudo reboot

删除故障pod

# 1. 清理异常的 Calico Pod<br>kubectl delete pod -n kube-system calico-kube-controllers-5766bdd7c-6kbwq --force --grace-period=0<br>​<br># 2. 重启所有 Calico 节点 Pod<br>kubectl delete pods -n kube-system -l k8s-app=calico-node<br>​<br># 3. 等待 Calico 重新启动<br>sleep 30<br>kubectl get pods -n kube-system | grep calico


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码

致读者:

欢迎在评论区留下您的宝贵意见^-^

2026 年 4 月
 123456
78910111213
14151617181920
21222324252627
28293031