随着企业数字化转型的深入,云计算已成为 IT 基础设施的核心平台 。openEuler 作为面向数字基础设施的开源操作系统,深度适配主流云平台,支持在公有云、私有云和混合云环境中高效运行。本章将带你掌握如何在云上部署 openEuler,利用 cloud-init 实现自动化初始化,并了解其与 OpenStack、Kubernetes 等云原生生态的集成能力。
🌟 本章目标
- 了解 openEuler 在主流云平台(华为云、阿里云等)的支持情况
- 学会在云平台创建 openEuler 云服务器实例
- 掌握
cloud-init的基本原理与配置方法 - 理解 openEuler 与 OpenStack、Kubernetes 的集成优势
- 实战:在华为云创建 openEuler 实例并自动部署 Web 服务
22.1 openEuler 与云平台支持
openEuler 已被多家主流云厂商官方支持,提供预装镜像,开箱即用。
✅ 主流云平台支持
| 云厂商 | 支持情况 | 镜像获取方式 |
|---|---|---|
| 华为云 | ✅ 官方镜像,深度优化 | 控制台直接选择 |
| 阿里云 | ✅ Alibaba Cloud Linux 基于 openEuler | 通过 Alibaba Cloud Linux 选择 |
| 腾讯云 | ✅ 提供社区镜像 | 自定义镜像或市场镜像 |
| AWS | ✅ 社区支持 | 通过 AWS Marketplace |
| OpenStack | ✅ 完全兼容 | 上传 qcow2 镜像 |
🔗 openEuler 云镜像下载:https://www.openeuler.org/zh/download/cloud/
22.2 在华为云创建 openEuler 云服务器
我们以 华为云(Huawei Cloud) 为例,演示完整创建流程。
步骤1:登录华为云控制台
步骤2:进入"弹性云服务器 ECS"
- 点击【服务】→【计算】→【弹性云服务器】
步骤3:创建实例
- 选择区域与可用区(如 华东-上海一)
- 选择镜像 :
- 公共镜像 → 操作系统:openEuler
- 选择版本(如
openEuler 22.03-LTS)
- 选择规格 :
- 推荐:
euler.c1.large(2核4G)
- 推荐:
- 配置网络 :
- VPC、子网、安全组(开放 22、80 端口)
- 设置登录方式 :
- 推荐:SSH 密钥对(更安全)
- 确认并创建
✅ 实例创建成功,获取公网 IP。
22.3 使用 cloud-init 自动初始化
cloud-init 是云实例的"第一段代码",在首次启动时自动执行初始化任务。
✅ cloud-init 能做什么?
- 设置主机名
- 配置网络
- 添加用户与 SSH 公钥
- 安装软件包
- 执行自定义脚本
在华为云配置 cloud-init
创建实例时,在"高级配置"中选择"自定义脚本":
bash
#cloud-config
hostname: web-server-01
users:
- name: zhangsan
sudo: ['ALL=(ALL) NOPASSWD:ALL']
groups: users,wheel
shell: /bin/bash
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2E... zhangsan@company.com
runcmd:
- dnf update -y
- dnf install -y nginx
- systemctl start nginx
- systemctl enable nginx
- echo "Cloud-init setup complete" > /var/log/cloud-init.log
💡 说明:
#cloud-config表示 YAML 配置格式runcmd中的命令以 root 身份执行
验证 cloud-init 执行结果
登录云服务器后检查:
bash
# 查看主机名
hostname
# 查看用户
id zhangsan
# 查看 Nginx 是否运行
systemctl status nginx
# 查看 cloud-init 日志
cat /var/log/cloud-init-output.log
✅ 若无错误,说明自动化部署成功!
22.4 openEuler 与 OpenStack 集成
OpenStack 是主流的私有云平台,openEuler 可作为其理想的计算节点操作系统。
✅ 优势
- 多架构支持:x86、ARM 云平台统一管理
- 高性能内核:优化虚拟化性能
- 安全可信:SELinux、国密算法支持
- 容器友好:iSulad 轻量容器引擎
部署方式
- 将 openEuler 镜像转换为
qcow2格式 - 上传到 OpenStack Glance 镜像服务
- 在 Nova 中创建实例
🔧 镜像制作工具:
virt-builder、image-builder
22.5 openEuler 与 Kubernetes 集成
Kubernetes 是容器编排的事实标准,openEuler 是理想的 Kubernetes 节点操作系统。
✅ 为什么选择 openEuler?
- 轻量高效:iSulad 容器引擎资源占用低
- 稳定可靠:LTS 版本支持 5 年
- 云原生优化:支持 CRI、CSI、CNI
- 安全加固:SELinux、AppArmor 支持
部署 Kubernetes 节点
- 在 openEuler 上安装
kubeadm、kubelet、kubectl - 初始化控制平面或加入集群
- 配置 CNI 网络插件(如 Calico、Flannel)
💡 openEuler 提供
kubelet等组件的 RPM 包,简化安装。
22.6 云监控与运维实践
🔍 云平台监控
- 华为云 CES(云监控服务):监控 CPU、内存、磁盘、网络
- 设置告警规则(如 CPU > 80% 持续 5 分钟)
🛠️ 远程运维
- 使用 SSH 密钥登录
- 配置 Ansible 自动化管理多台云主机
- 使用
tmux或screen保持长连接
🔐 安全建议
- 禁用密码登录,使用密钥
- 配置安全组,最小化开放端口
- 定期更新系统:
sudo dnf update -y
22.7 实战:在华为云自动部署 Web 服务
需求
创建一台 openEuler 云服务器,自动完成:
- 更新系统
- 安装 Nginx
- 启动服务
- 写入欢迎页面
cloud-init 脚本
bash
#cloud-config
hostname: openeuler-web
manage_etc_hosts: true
runcmd:
- dnf makecache
- dnf update -y
- dnf install -y nginx
- systemctl start nginx
- systemctl enable nginx
- echo "<h1>Deployed on openEuler @ $(date)</h1>" > /usr/share/nginx/html/index.html
- firewall-cmd --permanent --add-service=http
- firewall-cmd --reload
- echo "Web server setup complete" > /var/log/web-setup.log
final_message: "openEuler Web Server is ready! Visit http://{{public_ipv4}}"
{``{public_ipv4}}会被云平台自动替换为公网 IP。
操作步骤
- 在华为云创建 ECS 实例
- 选择 openEuler 镜像
- 在"自定义脚本"中粘贴上述内容
- 创建并等待启动
验证
- 查看控制台输出或
cloud-init-output.log - 浏览器访问
http://<公网IP>,应看到欢迎页面
✅ 云上自动化部署成功!
✅ 本章小结
| 技术 | 用途 | 工具/平台 |
|---|---|---|
| 公有云 | 快速部署应用 | 华为云、阿里云、AWS |
| cloud-init | 实例初始化 | YAML 脚本,自动配置 |
| OpenStack | 私有云平台 | Glance + Nova + openEuler |
| Kubernetes | 容器编排 | kubelet + iSulad |
| 云监控 | 性能与告警 | CES、Prometheus |
📝 课后练习
- 在华为云或阿里云创建一台 openEuler 云服务器。
- 使用 cloud-init 自动创建一个用户
dev并配置 SSH 公钥。 - 在 cloud-init 中安装
htop并设置开机自启。 - 配置安全组,仅允许你的 IP 访问 SSH(22 端口)。
- 使用
curl或浏览器访问云服务器的 80 端口(可先安装 Nginx)。 - (挑战)编写一个 cloud-init 脚本,自动部署一个 Python Flask 应用并使用 gunicorn 启动。
🔜 下一章预告:第23章《备份与灾难恢复策略》
我们将学习:
- 数据备份的重要性与 RTO/RPO 概念
- 使用
tar、rsync进行本地与远程备份 - 利用
cron实现自动化备份 - 使用 LVM 快照进行应用一致性备份
- 制定灾难恢复计划并演练
- 实战:搭建 rsync 备份服务器
准备好为系统"上保险"了吗?