云原生ARTICLE / 2026
单机 Kubernetes 1.34 安装与服务部署流程
在 Ubuntu 24.04 上搭建单机 Kubernetes 1.34,并部署 containerd、Traefik 与基础服务。
一、环境准备
机器规格:4 核 8G 内存,80G 硬盘
操作系统:Ubuntu 24.04
内网 NAS 提供 NFS 存储
系统准备:
swapoff -a
sed -i '/swap/d' /etc/fstab
modprobe overlay
modprobe br_netfilter
cat <<EOF >/etc/sysctl.d/k8s.conf
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
EOF
sysctl --system
二、安装 containerd
- 安装 containerd:
sudo apt update
sudo apt install -y containerd
- 生成默认配置:
sudo mkdir -p /etc/containerd
containerd config default > /etc/containerd/config.toml
sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' \
/etc/containerd/config.toml
- 重新启动:
sudo systemctl restart containerd
- 验证:
containerd --version
sudo ctr version
三、安装 Kubernetes 1.34(单机)
- 安装依赖
sudo apt update
apt install -y apt-transport-https ca-certificates curl
- 安装 kubeadm、kubelet、kubectl
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.34/deb/Release.key \
| gpg --dearmor -o /etc/apt/keyrings/kubernetes.gpg
echo "deb [signed-by=/etc/apt/keyrings/kubernetes.gpg] \
https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /" \
> /etc/apt/sources.list.d/kubernetes.list
sudo apt update
apt install -y kubeadm kubelet kubectl
- 初始化单节点集群
kubeadm init \
--pod-network-cidr=10.244.0.0/16 \
--cri-socket=unix:///run/containerd/containerd.sock
- 保存 kubeconfig:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
单机允许调度
允许普通 Pod 被调度到 control-plane(主控节点)上运行
kubectl taint nodes --all node-role.kubernetes.io/control-plane-
- 安装网络插件 Flannel
kubectl apply -f \
https://raw.githubusercontent.com/flannel-io/flannel/master/Documentation/kube-flannel.yml
- 验证:
kubectl get pods -n kube-system
四、安装 Traefik Ingress
- 安装 Helm3
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- 添加 Traefik 仓库
helm repo add traefik https://helm.traefik.io/traefik
helm repo update
- 安装 Traefik
kubectl create namespace traefik
helm install traefik traefik/traefik \
-n traefik \
-f traefik-values.yaml
- 配置文件traefik-value.yaml
# traefik-value.yaml
deployment:
replicas: 1
ports:
web:
port: 8000
exposedPort: 80
websecure:
port: 8443
exposedPort: 443
service:
type: LoadBalancer
loadBalancerIP: 10.10.0.100
LB参考 MetalLB部署搭建