K8s部署实践-基于Debian13(Trixie)

环境准备

K8s版本:1.34

操作系统:3台debian13 64位虚拟机

容器引擎:containerd

网络插件:Flannel(或Calico)

前置准备

1.更新系统

bash 复制代码
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl gnupg2 lsb-release apt-transport-https ca-certificates curl 

2.禁用交换空间

bash 复制代码
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

3.关闭selinux(需要重启)

bash 复制代码
echo "SELINUX = disabled" >> /etc/selinux/semanage.conf

4.加载内核模块

bash 复制代码
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
bash 复制代码
modprobe overlay
modprobe br_netfilter

5.配置内核参数

bash 复制代码
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF
sudo sysctl --system

6.设置主机名

bash 复制代码
#在主节点上
sudo hostnamectl set-hostname k8s-master
#在工作节点上
sudo hostnamectl set-hostname k8s-worker01

安装容器运行时

1.下载containerd并安装

从https://github.com/containerd/containerd/releases选择版本下载

下载后

bash 复制代码
wget https://github.com/containerd/containerd/releases/download/v2.2.0/containerd-2.2.0-linux-amd64.tar.gz
sudo tar Cxzvf /usr/local containerd-2.2.0-linux-amd64.tar.gz
wget https://raw.githubusercontent.com/containerd/containerd/v2.2.0/containerd.service
sudo mv containerd.service /usr/lib/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now containerd

2.containerd配置文件

bash 复制代码
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml && \
grep 'SystemdCgroup' -B 11 /etc/containerd/config.toml
# 使用 sed 替换镜像源
sudo sed -i 's|registry.k8s.io/pause:3.10.1|registry.aliyuncs.com/google_containers/pause:3.10.1|g' /etc/containerd/config.toml
sudo systemctl daemon-reload
sudo systemctl restart containerd.service

3.安装runc

从https://github.com/opencontainers/runc/releases下载runc.amd64

然后执行

bash 复制代码
sudo chmod +x runc.amd64
sudo mv runc.amd64 /usr/bin/runc
#查看runc版本号
runc -v

安装K8s组件

bash 复制代码
# 添加 Kubernetes 签名密钥
sudo curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gpg
# 添加 Kubernetes 仓库
sudo echo 'deb [signed-by=/etc/apt/trusted.gpg.d/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
# 安装kubeadm、kubectl、kubelet
sudo apt update
sudo apt install kubelet=1.34.* kubeadm=1.34.* kubectl=1.34.*
sudo apt-mark hold kubelet kubeadm kubectl

创建配置文件初始化集群

yaml 复制代码
# 创建 kubeadm 配置
cat <<EOF | tee kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta3
kind: InitConfiguration
localAPIEndpoint:
  advertiseAddress: $(hostname -I | awk '{print $1}')
  bindPort: 6443
---
apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
kubernetesVersion: 1.34.2
imageRepository: registry.aliyuncs.com/google_containers
controlPlaneEndpoint: "$(hostname -I | awk '{print $1}'):6443"
networking:
  #如果使用calico,配置成192.168.0.0/16
  podSubnet: "10.244.0.0/16"
  serviceSubnet: "10.96.0.0/12"
EOF

初始化集群

bash 复制代码
sudo kubeadm init --config=kubeadm-config.yaml --upload-certs

网络比较慢的话,这步需要较长时间

初始化成功控制台会打印类似

bash 复制代码
kubeadm join 192.168.0.101:6443 --token pylai8.nzq4ojgrk4wsv27t \
        --discovery-token-ca-cert-hash sha256:xxxx

这个需要保存下来,用来将工作节点加入集群中

然后将master节点中的【/etc/kubernetes/admin.conf】文件拷贝到node节点相同目录下,然后在master节点和工作节点配置环境变量:

bash 复制代码
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> ~/.bash_profile
source ~/.bash_profile

之后就可以使用kubectl命令查看pod的运行状态了

bash 复制代码
kubectl get pod -A

安装cni插件

bash 复制代码
kubectl create -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml

至此,就搭建好了一个K8s集群

相关推荐
孔令飞32 分钟前
很多人想学AI Infra,今天推荐一个 AI Agent / AI Infra 学习路线
云原生·go·ai编程
晨陌y1 小时前
Flare自托管导航页教程:Docker部署、多用户、API与公网访问
运维·docker·容器
无言听风雨丶1 小时前
Kubernetes GitOps 持续交付实战:用 Argo CD 让 Git 成为集群事实源
git·elasticsearch·kubernetes
Z21-X1 小时前
云原生运维实战笔记:华为云存储类服务全景解析——EVS、OBS、SFS与CBR深度实践
运维·笔记·学习·云原生·华为云
分布式存储与RustFS2 小时前
K8s 集群备份落到自建对象存储:Velero 接 RustFS 配置指南
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
无言听风雨丶11 小时前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
openFuyao12 小时前
openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?
kubernetes·openfuyao
螺蛳粉 螺蛳粉12 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻13 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
相思难忘成疾15 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes