乐创者开发平台支持部署到Kubernetes,在部署之前,需要做好以下准备工作:

一、概述

乐创者开发平台支持部署到Kubernetes,在确定使用Kubernetes部署前,请仔细阅读以下信息作为参考。

1.1 与原生部署的优缺点对比

与原生部署相比,具有以下优点
1. 自动化运维能力强

  • 故障自愈:Pod 异常崩溃自动重启、节点宕机自动把业务调度到其他健康节点;
  • 弹性伸缩:HPA 根据 CPU / 内存 / 自定义指标自动扩缩副本;
  • 滚动更新、灰度发布:版本升级不中断业务,支持回滚,无需停机。
    2. 资源调度与利用率高
  • 统一调度 CPU、内存资源;
  • 资源配额、Limit/Request 限制,避免单个服务耗尽整机资源。
    3. 环境一致性
  • 基于容器镜像,开发、测试、生产环境统一,解决 “本地能跑线上不行”;
  • 屏蔽底层硬件差异,应用不关心跑在哪台机器。
    4. 服务治理基础设施内置
  • Service 实现服务发现、负载均衡;ConfigMap/Secret 统一管理配置与密钥;
  • 统一日志、监控、事件体系;存储卷 PV/PVC 标准化存储挂载。
    5. 多集群、多云可迁移
  • 业务与底层基础设施解耦,可以迁移到物理机、私有云、公有云 K8s 集群。

缺点:

  1. 学习与运维成本高
    • 组件多(apiserver、etcd、scheduler、controller‑manager、kubelet、CNI 插件);运维人员需要掌握容器、网络、存储、排障体系;
    • 集群本身有运维负担:版本升级、etcd 备份、集群故障排查。
  2. 资源开销
    • K8s 控制平面组件本身会消耗 CPU 内存,小规模业务会有额外资源损耗。
  3. 复杂度上升
    • 简单业务会过度设计;网络、存储、权限 RBAC 配置不当容易引发疑难问题;
    • 调试链路变长,问题排查相比直接登录机器更绕。
  4. 对应用有一定约束
    • 应用最好设计成无状态;有状态应用(数据库、消息队列)需要额外 Operator、PV 保障,原生 K8s 不直接简化有状态业务。
  5. 故障域放大风险
    • 如果集群控制面故障,会影响批量业务,集群本身变成单点风险,需要高可用集群。

1.2 适合使用 Kubernetes 部署的场景

✅推荐使用 K8s

  1. 微服务架构,服务数量多
    几十个及以上微服务,大量实例需要统一管理、发布、服务发现。手工维护大量实例成本极高。
  2. 业务流量波动大,需要弹性伸缩
    流量存在波峰波谷,需要自动扩容扛流量,低谷缩容节省资源,例如互联网业务、活动营销系统。
  3. 需要频繁迭代发布,灰度 / 滚动 / 回滚需求强
    研发迭代快,每周多次版本上线,要求发布不停机、支持快速回滚,DevOps 流水线配合。
  4. 多应用混部,希望提升服务器资源利用率
    多套业务共用一批服务器,通过 K8s 调度合理分配 CPU 内存,降低硬件采购成本。
  5. 需要故障自动化处理
    业务要求高可用:实例异常自动重建、节点故障自动迁移业务,不想人工介入故障恢复。
  6. 多环境统一交付(开发、测试、预发、生产)
    希望镜像交付,一套制品到处运行,消除环境差异;需要标准化配置、密钥管理。
  7. 多云 / 混合云,业务需要跨环境迁移
    业务需要在私有机房、公有云之间迁移,不想绑定底层虚拟机 / 物理机环境。
  8. 团队具备容器 & K8s 运维能力
    有熟悉 K8s 运维人员,能够承担集群运维、故障排查、版本升级工作。

❌ 不建议上 K8s,优先原生部署

  1. 业务规模很小:单实例、2‑3 个服务,机器数量少(1‑3 台)
    业务量小,上 K8s 带来的复杂度大于收益。
  2. 重量级有状态老旧应用,无法容器化改造
    老系统强依赖特殊系统库、硬件、本地路径,改造容器成本巨大。
  3. 极致性能要求,需要独占硬件资源
    部分数据库、高性能计算业务,追求裸机性能,不想引入容器层开销。
  4. 团队没有 K8s 运维能力,也不打算投入学习建设
    没有人员维护集群,K8s 集群本身会成为不稳定风险点。
  5. 简单固定负载,几乎不做版本迭代,流量稳定无波动
    业务上线几乎不改版,流量恒定,不需要弹性、滚动发布能力。

1.3 选型总结

  • K8s 核心价值不是 “跑容器”,而是编排、自动化、弹性、标准化交付;如果你的诉求不在这几点,原生部署往往更简单稳定。
  • 小规模可以用轻量 K8s(k3s)降低集群开销,但依然要承担编排复杂度;有状态应用(MySQL、RocketMQ 等)无论哪种方案都需要额外做高可用设计,K8s 不会自动解决有状态业务难点。

二、安装Kubernetes

先了解Kubernetes安装的操作系统类型,来确定支持的Kubernetes版本。
以天翼云操作系统 ctyunos 23.01为例,最高支持Kubernetes1.31.6。

本文档以Ubuntu 24.04.4 LTS操作系统作为宿主机为例,简单说明安装Kubernetes1.31.6的过程。

2.1 环境准备

# 1. 关闭 swap(K8s 强制要求)
sudo swapoff -a
sudo sed -i '/ swap / s/^/#/' /etc/fstab

# 2. 加载内核模块
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

# 3. 设置内核参数
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

# 4. 安装 containerd 并启用 systemd cgroup 驱动
sudo apt-get update
sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml >/dev/null
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
sudo systemctl restart containerd

2.2 添加 Kubernetes 1.31 官方 apt 仓库

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gpg

sudo mkdir -p -m 755 /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.31/deb/Release.key \
  | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.31/deb/ /' \
  | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list

2.3 安装指定版本 1.31.6

sudo apt-get update

# 先确认 1.31.6-1.1 是否在仓库可用
apt-cache policy kubeadm | grep 1.31.6

# 精确安装
sudo apt-get install -y kubelet=1.31.6-1.1 kubeadm=1.31.6-1.1 kubectl=1.31.6-1.1

# 锁定版本,防止 apt upgrade 误升级
sudo apt-mark hold kubelet kubeadm kubectl

2.4 验证安装

kubeadm version        # 应显示 v1.31.6
kubelet --version      # 应显示 v1.31.6
kubectl version --client   # 应显示 v1.31.6

2.5 初始化集群

sudo kubeadm init \
  --kubernetes-version=v1.31.6 \
  --apiserver-advertise-address=<本机IP> \
  --pod-network-cidr=10.244.0.0/16 \
  --image-repository=registry.aliyuncs.com/google_containers   # 国内网络必加,避免拉取 registry.k8s.io 超时

<本机IP> : 宿主机器的真实ip

集群初始化成功后,显示大致如下:

验证状态:

kubectl get pods -n kube-flannel

初始化完成后,默认 master 节点不允许调度业务 Pod(节点污点 node-role.kubernetes.io/control-plane:NoSchedule

单节点模式
如果是小型系统,不想运行多个work,可以移除控制平面污点,允许业务Pod跑在本机

kubectl taint nodes --all node-role.kubernetes.io/control-plane-

多节点模式
需要在其他物理机上安装其他work,本文档不做深入探讨,可参考官方教程。

2.6 安装 CNI 网络插件(calico/flannel)

kubectl apply -f https://docs.projectcalico.org/v3.28/manifests/calico.yaml

安装成功后,运行:

kubectl get nodes

节点状态应显示 Ready;节点状态 NotReady,代表 Pod 网络不通。

到此,Kubernetes的安装就基本结束了。

2.7 常见命令

  • 确认 kubelet 服务状态

    systemctl status kubelet
  • 查看容器运行时 containerd 状态

    systemctl status containerd
  • 启动 Kubernetes
    `shell

    containerd容器运行时

    sudo systemctl start containerd

kubelet服务(核心,负责拉起所有k8s组件pod)

sudo systemctl start kubelet


- 重启 Kubernetes
```shell
#  containerd容器运行时
sudo systemctl restart containerd

# kubelet服务(核心,负责拉起所有k8s组件pod)
sudo systemctl restart kubelet
  • 停止 Kubernetes
    `shell

    containerd容器运行时

    sudo systemctl stop containerd

kubelet服务(核心,负责拉起所有k8s组件pod)

sudo systemctl stop kubelet
`

三 获取乐创者相关镜像

乐创者相关镜像文件:

模块 镜像名称 tar名称 说明
lczServer tomcat-lczserver tomcat-lczserver-8.1.0.tar 包含tomcat10 + jdk17 + lczServer.War

中间件相关镜像文件:

模块 镜像名称 tar名称 说明
nginx nginx-lcz nginx-lcz-1.30.4.tar 基于nginx:1.30.4-alpine
valkey valkey-lcz valkey-8.1.4.tar 直接使用官方valkey:8.1.4-alpine,可自行升级
mongo mongo-lcz mongo-7.0.tar 直接使用官方valkey:8.1.4-alpine,可自行升级
作者:柳杨  创建时间:2026-09-05 08:59
最后编辑:柳杨  更新时间:2026-09-10 20:27