- 一、概述
- 1.1 与原生部署的优缺点对比
- 1.2 适合使用 Kubernetes 部署的场景
- ✅推荐使用 K8s
- ❌ 不建议上 K8s,优先原生部署
- 1.3 选型总结
- 二、安装Kubernetes
- 2.1 环境准备
- 2.2 添加 Kubernetes 1.31 官方 apt 仓库
- 2.3 安装指定版本 1.31.6
- 2.4 验证安装
- 2.5 初始化集群
- 2.6 安装 CNI 网络插件(calico/flannel)
- 2.7 常见命令
- containerd容器运行时
- kubelet服务(核心,负责拉起所有k8s组件pod)
- containerd容器运行时
- kubelet服务(核心,负责拉起所有k8s组件pod)
- 三 获取乐创者相关镜像
乐创者开发平台支持部署到Kubernetes,在部署之前,需要做好以下准备工作:
一、概述
乐创者开发平台支持部署到Kubernetes,在确定使用Kubernetes部署前,请仔细阅读以下信息作为参考。
1.1 与原生部署的优缺点对比
与原生部署相比,具有以下优点:
1. 自动化运维能力强
- 故障自愈:Pod 异常崩溃自动重启、节点宕机自动把业务调度到其他健康节点;
- 弹性伸缩:HPA 根据 CPU / 内存 / 自定义指标自动扩缩副本;
- 滚动更新、灰度发布:版本升级不中断业务,支持回滚,无需停机。
2. 资源调度与利用率高 - 统一调度 CPU、内存资源;
- 资源配额、Limit/Request 限制,避免单个服务耗尽整机资源。
3. 环境一致性 - 基于容器镜像,开发、测试、生产环境统一,解决 “本地能跑线上不行”;
- 屏蔽底层硬件差异,应用不关心跑在哪台机器。
4. 服务治理基础设施内置 - Service 实现服务发现、负载均衡;ConfigMap/Secret 统一管理配置与密钥;
- 统一日志、监控、事件体系;存储卷 PV/PVC 标准化存储挂载。
5. 多集群、多云可迁移 - 业务与底层基础设施解耦,可以迁移到物理机、私有云、公有云 K8s 集群。
缺点:
- 学习与运维成本高
- 组件多(apiserver、etcd、scheduler、controller‑manager、kubelet、CNI 插件);运维人员需要掌握容器、网络、存储、排障体系;
- 集群本身有运维负担:版本升级、etcd 备份、集群故障排查。
- 资源开销
- K8s 控制平面组件本身会消耗 CPU 内存,小规模业务会有额外资源损耗。
- 复杂度上升
- 简单业务会过度设计;网络、存储、权限 RBAC 配置不当容易引发疑难问题;
- 调试链路变长,问题排查相比直接登录机器更绕。
- 对应用有一定约束
- 应用最好设计成无状态;有状态应用(数据库、消息队列)需要额外 Operator、PV 保障,原生 K8s 不直接简化有状态业务。
- 故障域放大风险
- 如果集群控制面故障,会影响批量业务,集群本身变成单点风险,需要高可用集群。
1.2 适合使用 Kubernetes 部署的场景
✅推荐使用 K8s
- 微服务架构,服务数量多
几十个及以上微服务,大量实例需要统一管理、发布、服务发现。手工维护大量实例成本极高。 - 业务流量波动大,需要弹性伸缩
流量存在波峰波谷,需要自动扩容扛流量,低谷缩容节省资源,例如互联网业务、活动营销系统。 - 需要频繁迭代发布,灰度 / 滚动 / 回滚需求强
研发迭代快,每周多次版本上线,要求发布不停机、支持快速回滚,DevOps 流水线配合。 - 多应用混部,希望提升服务器资源利用率
多套业务共用一批服务器,通过 K8s 调度合理分配 CPU 内存,降低硬件采购成本。 - 需要故障自动化处理
业务要求高可用:实例异常自动重建、节点故障自动迁移业务,不想人工介入故障恢复。 - 多环境统一交付(开发、测试、预发、生产)
希望镜像交付,一套制品到处运行,消除环境差异;需要标准化配置、密钥管理。 - 多云 / 混合云,业务需要跨环境迁移
业务需要在私有机房、公有云之间迁移,不想绑定底层虚拟机 / 物理机环境。 - 团队具备容器 & K8s 运维能力
有熟悉 K8s 运维人员,能够承担集群运维、故障排查、版本升级工作。
❌ 不建议上 K8s,优先原生部署
- 业务规模很小:单实例、2‑3 个服务,机器数量少(1‑3 台)
业务量小,上 K8s 带来的复杂度大于收益。 - 重量级有状态老旧应用,无法容器化改造
老系统强依赖特殊系统库、硬件、本地路径,改造容器成本巨大。 - 极致性能要求,需要独占硬件资源
部分数据库、高性能计算业务,追求裸机性能,不想引入容器层开销。 - 团队没有 K8s 运维能力,也不打算投入学习建设
没有人员维护集群,K8s 集群本身会成为不稳定风险点。 - 简单固定负载,几乎不做版本迭代,流量稳定无波动
业务上线几乎不改版,流量恒定,不需要弹性、滚动发布能力。
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 containerd2.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.list2.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 kubectl2.4 验证安装
kubeadm version # 应显示 v1.31.6
kubelet --version # 应显示 v1.31.6
kubectl version --client # 应显示 v1.31.62.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
`shellcontainerd容器运行时
sudo systemctl start containerd
kubelet服务(核心,负责拉起所有k8s组件pod)
sudo systemctl start kubelet
- 重启 Kubernetes
```shell
# containerd容器运行时
sudo systemctl restart containerd
# kubelet服务(核心,负责拉起所有k8s组件pod)
sudo systemctl restart kubeletkubelet服务(核心,负责拉起所有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
最后编辑:柳杨 更新时间:2026-09-10 20:27
———— 本文档对您有帮助吗?或有错误,恳请 反馈 ————
