ubuntu服务器云原生环境搭建核心是构建支持容器化、可编排、可观测、易扩展的基础设施栈,需依次部署containerd(推荐)、kubernetes(kubeadm方式)、cni网络插件(如flannel),并加固系统(禁swap、同步时间、配置ipv4转发等),辅以kuboard、metrics server等增强组件实现生产就绪。

Ubuntu 服务器云原生环境搭建,核心是构建一套支持容器化、可编排、可观测、易扩展的基础设施栈。它不是只装 Docker 就完事,而是围绕 Docker(容器运行时)→ Kubernetes(编排平台)→ 可选边缘/管理组件(如 KubeEdge、Kuboard) 逐层落地。整个过程强调稳定性、安全性和生产就绪性。
一、基础系统准备与加固
这是所有后续部署的前提,直接影响集群长期可用性:
- 统一系统版本:推荐 Ubuntu 22.04 LTS 或 24.04 LTS(内核 6.6+ 对 cgroup v2 和 systemd 驱动更友好),避免使用桌面版,选用 Server 版最小安装
-
禁用 Swap:Kubernetes 要求关闭 Swap,否则 kubelet 启动失败:
sudo swapoff -a并注释/etc/fstab中 swap 行 -
配置主机名与 hosts:确保每台节点有唯一静态 hostname,并在
/etc/hosts中映射所有节点 IP 与 hostname(kubeadm 初始化依赖 DNS 解析) -
启用 IPv4 转发和桥接流量:编辑
/etc/sysctl.conf,添加net.ipv4.ip_forward = 1net.bridge.bridge-nf-call-iptables = 1net.bridge.bridge-nf-call-ip6tables = 1
然后执行sudo sysctl -p -
同步时间:所有节点必须时间一致,建议安装并启用
chrony:sudo apt install chrony && sudo systemctl enable --now chrony
二、容器运行时:Docker 或 containerd
当前 Kubernetes 官方已弃用 dockershim,推荐直接使用 containerd(更轻量、更符合 OCI 标准)。若习惯 Docker,也可保留其作为 containerd 的前端管理工具:
Ubuntu 26.04 LTS(代号“Resolute Raccoon”)是Canonical于2026年4月23日发布的下一代长期支持版操作系统,提供长达10年的技术支持。它搭载Linux 7.0内核与GNOME 50桌面环境,全面转向Wayland协议,并引入Rust重写的核心工具以增强安全性。官方提供适用于AMD64和ARM64架构的桌面及服务器ISO镜像,是追求前沿技术与极致稳定的开发者
- 卸载旧容器组件:
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done - 添加 Docker 官方源(含 containerd):
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - 安装:
sudo apt update && sudo apt install containerd.io docker-ce-cli - 配置 containerd 使用 systemd cgroup 驱动(关键!否则 kubelet 报错):
sudo mkdir -p /etc/containerdcontainerd config default | sudo tee /etc/containerd/config.toml
编辑该文件,将SystemdCgroup = false改为true,保存后执行:sudo systemctl restart containerd
三、Kubernetes 集群部署(kubeadm 方式)
这是云原生底座的核心,建议 master + worker 分离部署(单节点测试可用 all-in-one):
- 安装 kubeadm/kubelet/kubectl:
sudo apt-get update && sudo apt-get install -y apt-transport-https ca-certificates curlcurl -fsSLo /usr/share/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.listsudo apt-get update && sudo apt-get install -y kubelet kubeadm kubectlsudo systemctl enable --now kubelet - 初始化 control-plane:
kubeadm init --pod-network-cidr=10.244.0.0/16 --cri-socket unix:///run/containerd/containerd.sock
(注意 CIDR 与后续 CNI 插件匹配;--cri-socket显式指定 containerd socket) - 按提示配置 kubectl:
mkdir -p $HOME/.kubesudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/configsudo chown $(id -u):$(id -g) $HOME/.kube/config - 安装 CNI 网络插件(如 Flannel):
kubectl apply -f https://github.com/flannel-io/flannel/releases/download/v0.24.2/kube-flannel.yml - 加入 worker 节点:
在 master 上执行kubeadm token create --print-join-command获取命令,在 worker 上直接运行即可
四、增强能力与可观测性(可选但推荐)
真正面向生产的云原生环境,还需补充以下模块:
-
Kuboard V3:轻量级 Web 控制台,部署只需一条命令:
kubectl apply -f https://kuboard.cn/install-script/kuboard-v3.yaml,访问http://<master-ip>:30080</master-ip> -
Metrics Server:支撑 HPA 和 kubectl top 功能:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.7.2/components.yaml - 日志与监控:可快速部署 Loki + Promtail + Grafana(轻量)或完整 ELK/Prometheus Stack
- 边缘扩展(KubeEdge):若需管理边缘设备,部署 KubeEdge 需额外配置 cloudcore/edgecore,并启用 MQTT 或 WebSocket 通信
不复杂但容易忽略细节,比如 cgroup 驱动不一致、Swap 未关、时间不同步——这些都会导致集群初始化卡住或节点 NotReady。建议每步执行后验证状态:kubectl get nodes -o wide、kubectl get pods -A、systemctl status kubelet。










