1. K3s单节点K8S集群部署概述K3s作为轻量级Kubernetes发行版已经成为开发者本地测试和小型生产环境的首选方案。相比标准K8S动辄需要多台服务器的资源消耗K3s单节点方案仅需1台2核4G配置的机器即可运行完整集群功能。我在2026年3月最新测试中验证当前K3s v1.28.5k3s1版本在CentOS 8.5和Ubuntu 22.04 LTS上均能稳定运行。这种部署模式特别适合以下场景个人开发者需要本地K8S环境进行应用测试中小团队快速搭建CI/CD流水线的编排环境边缘计算场景下的轻量级容器管理教学演示环境需要快速启动和销毁集群重要提示虽然称为单节点但通过添加--cluster-init参数后续仍可扩展为多节点集群。这种设计既满足了初期简单部署的需求又为后期扩容保留了可能性。2. 环境准备与系统配置2.1 硬件与操作系统要求实测最低配置要求CPUx86_64或ARM64架构至少2核内存2GB运行基本组件建议4GB磁盘20GB可用空间网络能正常访问外网需要拉取镜像推荐操作系统版本# CentOS/RHEL系列 cat /etc/redhat-release CentOS Linux release 8.5.2111 # Ubuntu/Debian系列 lsb_release -d Description: Ubuntu 22.04.3 LTS2.2 前置依赖安装必须完成的系统级配置# 关闭SwapK8S强制要求 sudo swapoff -a sudo sed -i / swap / s/^\(.*\)$/#\1/g /etc/fstab # 设置内核参数 cat EOF | sudo tee /etc/modules-load.d/k8s.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter # 设置sysctl参数 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 --system2.3 容器运行时配置K3s默认使用containerd作为运行时但需要预先配置# 安装containerd sudo apt-get update sudo apt-get install -y containerd # 生成默认配置 sudo mkdir -p /etc/containerd containerd config default | sudo tee /etc/containerd/config.toml # 修改配置启用SystemdCgroup sudo sed -i s/SystemdCgroup false/SystemdCgroup true/g /etc/containerd/config.toml # 重启服务 sudo systemctl restart containerd3. K3s核心安装流程3.1 一键安装命令解析标准安装命令curl -sfL https://get.k3s.io | INSTALL_K3S_VERSIONv1.28.5k3s1 sh -s - \ --disable traefik \ --disable servicelb \ --cluster-init \ --write-kubeconfig-mode 644关键参数说明--disable traefik禁用默认Ingress控制器可按需启用--disable servicelb禁用内置LB单节点环境不需要--cluster-init启用etcd集群模式为后续扩容准备--write-kubeconfig-mode 644放宽kubeconfig权限3.2 安装过程实时监控安装过程中可以另开终端观察组件启动情况# 查看containerd容器 sudo crictl ps # 查看K3s服务日志 journalctl -u k3s -f # 检查节点状态安装完成后 kubectl get nodes -o wide典型成功输出NAME STATUS ROLES AGE VERSION k3s-node Ready control-plane,master 90s v1.28.5k3s13.3 关键组件健康检查安装完成后验证核心组件# 检查Pod状态 kubectl get pods -A # 检查服务端点 kubectl get endpoints -A # 测试DNS解析 kubectl run -it --rm --restartNever test \ --imagebusybox:1.28 -- nslookup kubernetes.default4. 集群功能增强配置4.1 持久化存储方案单节点推荐使用local-path-provisioner# 查看默认StorageClass kubectl get sc # 创建测试PVC验证 cat EOF | kubectl apply -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: local-path-pvc spec: accessModes: - ReadWriteOnce storageClassName: local-path resources: requests: storage: 100Mi EOF4.2 网络策略配置启用NetworkPolicy支持需对应CNI插件# 安装Calico替换默认Flannel kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml # 验证网络插件 kubectl get pods -n kube-system -l k8s-appcalico-node4.3 监控与日志方案部署轻量级监控栈# 安装Prometheus Operator helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm install prometheus prometheus-community/kube-prometheus-stack \ --namespace monitoring \ --create-namespace \ --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValuesfalse5. 运维管理与故障排查5.1 日常维护命令关键运维操作# 查看集群信息 k3s kubectl cluster-info # 检查证书有效期 sudo k3s kubectl get --raw/readyz?verbose | grep lease # 备份etcd数据 sudo k3s etcd-snapshot save --snapshot-compress5.2 常见问题解决镜像拉取失败# 查看具体错误 journalctl -u k3s | grep pull image # 解决方案配置国内镜像仓库 sudo mkdir -p /etc/rancher/k3s cat EOF | sudo tee /etc/rancher/k3s/registries.yaml mirrors: docker.io: endpoint: - https://docker.mirrors.ustc.edu.cn EOF sudo systemctl restart k3s节点NotReady状态# 诊断步骤 kubectl describe node node-name | grep -i condition sudo cat /var/lib/rancher/k3s/agent/containerd/containerd.log # 常见原因内存不足或网络插件异常5.3 性能调优建议针对单节点的特殊优化# 调整kubelet资源预留 sudo vi /etc/rancher/k3s/config.yaml 添加 kubelet-arg: - system-reservedcpu500m,memory1Gi - kube-reservedcpu500m,memory1Gi # 重启服务生效 sudo systemctl restart k3s6. 生产环境注意事项虽然单节点部署简便但需要注意数据持久化关键数据应定期备份使用以下命令创建etcd快照sudo k3s etcd-snapshot save --snapshot-compress --dir /opt/k3s-backup安全加固# 禁用匿名访问 sudo vi /etc/rancher/k3s/config.yaml 添加 kube-apiserver-arg: - --anonymous-authfalse # 启用审计日志 - --audit-log-path/var/lib/rancher/k3s/server/logs/audit.log - --audit-log-maxage30 - --audit-log-maxbackup10升级策略小版本升级可直接运行curl -sfL https://get.k3s.io | INSTALL_K3S_VERSIONv1.28.6k3s1 sh -对于需要长期运行的业务负载建议至少部署3节点集群以保证高可用性。单节点方案更适合作为开发测试环境使用。