华为云Flexus云容器实例对接使用完全指南:从零搭建容器化应用
1. Flexus云容器实例概述
Flexus云容器实例是华为云面向学生、个人开发者和中小企业推出的轻量级容器服务。用户只需指定容器镜像和计算资源规格,即可在云上运行各类应用程序——从简单的Web应用到多层微服务架构,Flexus容器负责运行容器服务,而无需用户管理任何底层基础设施。
与传统Kubernetes容器服务相比,Flexus容器操作极为简便,可一键启动容器应用,非常适合容器技术的入门用户。在成本方面,Flexus容器采用按需计费模式,随启随停,具有超高性价比。同时提供多种规格和模板,大幅减少容器配置操作,容器启动速度更快,能够快速响应业务诉求。
华为云Flexus云服务是一个产品家族,包含Flexus应用服务器L实例、Flexus云服务器X实例、Flexus云数据库RDS、Flexus云容器实例等,各产品之间相互独立,用户可以根据实际需求选择使用其中一种或多种。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. 创建Flexus容器实例
2.1 前提准备
在创建Flexus容器实例之前,需要完成以下准备工作:首先注册华为账号并开通华为云服务,如果计划使用中国大陆云服务区的资源,还需要完成实名认证。建议提前规划好容器将要部署的区域——不同区域的云服务产品之间内网互不相通,应就近选择靠近业务用户的区域,以降低网络时延、提高访问速度。
2.2 控制台创建步骤
登录Flexus容器控制台后,在页面右上角单击"购买Flexus云容器实例"按钮,进入创建页面。创建过程主要分为基础配置和容器配置两个阶段。
基础配置:目前Flexus容器仅支持按需计费模式。选择区域时需注意,Flexus容器为X86架构,不支持使用ARM架构创建的私有容器镜像。
容器配置:创建容器有两种方式——使用模板配置或自定义配置。
模板配置方式提供了Nginx、hello-world、WordPress三种预设模板。选择模板后,系统会自动填充容器名称、端口号等配置项,用户只需确认即可快速创建。例如选择Nginx模板,容器端口默认为80;选择WordPress模板则同时配置80(TCP)和3306(TCP)两个端口。
自定义配置方式则更为灵活,用户根据实际需求添加容器配置。容器名称需满足命名规范:1到63个字符,可包含小写英文字母、数字和中划线(-),以字母或数字开头和结尾,且创建后不支持修改。
2.3 容器镜像配置
Flexus容器默认对接华为云容器镜像服务SWR,可直接使用SWR中的公共镜像,也可以使用个人上传的私有镜像。容器镜像是一种区域性资源,Flexus容器仅支持使用同区域的私有镜像。
在创建容器时,需要指定镜像地址。如果使用SWR私有镜像,格式通常为:swr.{region}.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本}。使用前需确保镜像已上传至对应区域的SWR服务中。
2.4 启动命令配置
启动命令必须为容器镜像支持的命令,否则会导致容器启动失败。在云容器实例中同样可以设置容器的启动命令,在创建负载时配置容器的高级设置即可。例如Dockerfile中的CMD或ENTRYPOINT指令,在Flexus容器中可以通过高级设置进行覆盖或补充。
3. 网络配置与公网访问
3.1 VPC虚拟私有云
虚拟私有云(VPC)为Flexus容器构建了一个逻辑上完全隔离的专有网络区域。用户可以在VPC中定义安全组、IP地址段等网络特性,方便管理和配置内部网络。
创建命名空间时需要设置VPC和子网。命名空间名称在云容器实例中需全局唯一。VPC网段建议使用:10.0.0.0/8~22、172.16.0.0/12~22、192.168.0.0/16~22。需要特别注意的是,VPC和子网的网段不能为10.247.0.0/16,该网段是云容器实例预留给负载访问的网段,如果使用此网段可能会造成IP冲突,导致负载无法创建或服务不可用。
子网设置时需关注可用IP数量,确保有足够数量的可用IP,否则会导致负载创建失败。创建的命名空间会在设置的子网中预热部分IP,默认个数为10个,在高级设置中可以调整预热IP资源池的大小和回收间隔。
3.2 安全组配置
安全组是一个逻辑上的分组,为具有相同安全保护需求并相互信任的云服务器、云容器、云数据库等实例提供访问策略。安全组由入方向规则和出方向规则共同组成,入方向规则控制外部请求访问容器实例的流量,出方向规则控制容器实例访问外部网络的流量。
配置安全组规则时,需要根据容器应用的实际需求放通相应端口。例如Web应用通常需要放通80(HTTP)和443(HTTPS)端口。安全组配置入口位于Flexus容器控制台的资源详情页面中的"安全组"页签。
3.3 公网访问配置
Flexus容器支持通过弹性公网IP(EIP)提供公网访问能力。创建容器实例时,可以配置公网配置信息,指定容器端口与公网端口的映射关系。容器停止后会释放公网IP,重新启动时将重新分配公网IP。
同账号同区域、处于同一VPC中的多台Flexus容器实例之间默认内网互通,不收取内网访问费用。不同VPC之间的实例默认内网不互通,可以通过对等连接或云连接实现跨VPC通信。
4. 存储管理
4.1 存储类型概览
云容器实例支持多种类型的持久化存储,满足不同场景下的存储需求。主要包括云硬盘存储卷(EVS)和极速文件存储卷(SFS Turbo)两种类型。
4.2 EVS云硬盘存储
云硬盘(EVS)可以为容器提供高可靠、高性能、规格丰富且可弹性扩展的块存储服务。云容器实例支持将EVS创建的云硬盘存储卷挂载到容器的某一路径下,当容器迁移时,挂载的云硬盘存储卷将一同迁移。这种存储方式适用于需要永久化保存数据的场景。
使用EVS云硬盘存储卷时需注意:不支持多个Pod挂载相同的EVS磁盘,也不支持单个Pod同时挂载多个可用区的云硬盘卷。文件系统类型通常为ext4。
4.3 PVC持久化存储声明
云容器实例使用PersistentVolumeClaim(PVC)申请并管理持久化存储。PVC让用户无需关心底层存储资源如何创建和释放,只需声明需要何种类型的存储资源以及多大的存储空间。在实际使用中,通过Pod中的Volume来关联PVC,从而使用持久化存储。
在云容器实例控制台,可以导入已创建的EVS和SFS Turbo存储资源,导入的同时会创建对应的PVC。也可以直接在控制台购买EVS,购买动作不仅创建存储资源,同时也会创建PVC并自动导入到云容器实例中。
5. 容器实例的生命周期管理
5.1 查看与更新
在Flexus容器控制台可以查看已创建的容器实例列表,点击实例名称可进入详情页面查看容器状态、配置信息、运行日志等。需要注意的是,Flexus容器不支持更新容器服务名称。如需修改名称,只能重新创建容器实例。
5.2 启动与停止
在Flexus容器列表页,可以对运行中的实例单击"停止"按钮,等待容器实例停止。实例停止后,将终止当前容器服务并释放公网IP,容器不再提供公网访问能力,可节省计算和网络费用。
对于已停止的实例,可以单击"启动"按钮重新启动容器实例。实例启动后,将按照原有部署信息启动容器应用并重新分配公网IP,同时继续收取容器实例管理费用。
5.3 删除
当容器实例不再需要时,可以在控制台执行删除操作。删除操作不可逆,请确保已备份重要数据。容器删除后,相关的计算资源和公网IP将被释放,但持久化存储数据(如EVS云硬盘)需要单独管理。
6. 通过API和SDK对接Flexus容器
6.1 API调用基础
华为云提供了REST风格API,支持通过HTTPS请求调用Flexus容器服务。调用API前需要充分了解Flexus容器的相关概念。API请求的组成包括请求方法、URI、请求头和请求体等部分。
认证方式采用Token认证,通过调用IAM服务的获取用户Token接口获取Token,然后在API请求的Header中携带Token进行鉴权。获取Token需要提供IAM用户名、密码和项目ID等信息。
6.2 Python SDK示例
以下是通过Python SDK调用华为云API管理Flexus容器的示例代码。首先需要安装华为云Python SDK:
pip install huaweicloud-sdk-core huaweicloud-sdk-cci然后编写代码创建容器实例:
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcci.v1.region.cci_region import CciRegion
from huaweicloudsdkcci.v1 import *
# 配置认证信息
ak = "your_ak"
sk = "your_sk"
project_id = "your_project_id"
credentials = BasicCredentials(ak, sk, project_id)
client = CciClient.new_builder() \
.with_credentials(credentials) \
.with_region(CciRegion.value_of("cn-north-4")) \
.build()
# 创建容器实例请求
request = CreateContainerRequest()
request.body = ContainerSpec(
name="my-flexus-container",
image="swr.cn-north-4.myhuaweicloud.com/my-org/nginx:latest",
resources=ResourceRequirements(
limits={"cpu": "0.5", "memory": "1Gi"},
requests={"cpu": "0.25", "memory": "512Mi"}
),
ports=[ContainerPort(container_port=80)]
)
response = client.create_container(request)
print(response)6.3 Java SDK示例
Java SDK的使用方式如下。首先在pom.xml中添加依赖:
<dependency>
<groupId>com.huaweicloud.sdk</groupId>
<artifactId>huaweicloud-sdk-cci</artifactId>
<version>3.1.0</version>
</dependency>然后编写Java代码:
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.cci.v1.CciClient;
import com.huaweicloud.sdk.cci.v1.model.*;
public class CreateContainerExample {
public static void main(String[] args) {
String ak = "your_ak";
String sk = "your_sk";
String projectId = "your_project_id";
BasicCredentials auth = new BasicCredentials()
.withAk(ak).withSk(sk).withProjectId(projectId);
CciClient client = CciClient.newBuilder()
.withCredential(auth)
.withRegion(CciRegion.valueOf("cn-north-4"))
.build();
ContainerSpec spec = new ContainerSpec()
.withName("my-flexus-container")
.withImage("swr.cn-north-4.myhuaweicloud.com/my-org/nginx:latest");
CreateContainerRequest request = new CreateContainerRequest()
.withBody(spec);
CreateContainerResponse response = client.createContainer(request);
System.out.println(response);
}
}6.4 查询实例状态
创建容器实例的API为异步接口,请求下发后会返回order_id和instances_ids,此时仅表示订单创建完成,容器实例尚未真正创建完成。需要使用返回的order_id调用查询订单状态接口,通过响应消息中status参数的值确认容器实例的创建状态,status为5时表示创建成功。
7. 最佳实践与成本优化
7.1 典型应用场景
Flexus容器适用于多种场景:容器快速入门——简单易用,是入门容器服务的最佳选择;游戏专属服务器——一键部署,操作简单;跨境电商代理——提供小规格实例配合EIP快速搭建。
对于轻量级Web应用、API服务、开发测试环境等中低负载场景,Flexus容器能够以极低的运维成本满足需求。
7.2 成本优化策略
Flexus容器支持按需计费模式。容器创建后即开始计费,若容器长时间处于"未就绪"状态,应排查异常原因。成本优化可从以下方面入手:
按需启停——对于非持续运行的业务(如开发测试环境),可以在非工作时间停止容器实例以节省计算和网络费用。
合理选型——根据实际负载选择合适的CPU和内存规格,避免资源浪费。Flexus容器提供多种规格选择,可灵活匹配业务需求。
内网通信——同VPC内的容器实例之间通信不产生费用,应优先利用内网进行服务间调用。
7.3 常见问题排查
容器长时间处于"未就绪"状态时,常见原因包括容器镜像配置错误(如镜像地址不正确、镜像不存在或镜像格式不兼容)以及公网IP配额不足。建议检查SWR镜像是否已正确上传至同区域,确认镜像架构为X86。启动命令必须为镜像支持的命令,否则也会导致启动失败。
如果点击进入Flexus云容器实例时出现错误提示,应及时检查服务状态并联系技术支持。
8. 总结
华为云Flexus云容器实例以极简的操作体验、按需付费的灵活成本和快速响应的部署能力,为容器技术的入门用户和中小企业提供了一个高性价比的容器运行平台。通过控制台可以快速完成容器实例的创建、配置和部署,通过API和SDK可以实现编程化管理。结合VPC网络隔离、安全组访问控制、EVS持久化存储等企业级特性,Flexus容器能够在简化运维的同时满足生产环境的安全和可靠性要求。掌握本文介绍的对接使用方法,读者即可轻松上手Flexus云容器实例,将容器化应用快速部署到华为云上。
常见问题解答
问:Flexus云容器实例和华为云CCI(云容器实例)有什么区别?
答:Flexus云容器实例是华为云面向学生、个人开发者和中小企业打造的轻量级容器服务,操作更简单、入门门槛更低,采用按需计费模式。而CCI是面向企业级用户的容器实例服务,功能更丰富、配置更灵活。Flexus容器可以理解为CCI的轻量简化版,更适合容器技术入门场景。
问:Flexus容器停止后还会收费吗?
答:不会。Flexus容器实例停止后会终止容器服务并释放公网IP,不再提供公网访问能力,可节省计算和网络费用。重新启动后将按照原有部署信息恢复运行并重新分配公网IP。
问:可以使用自己的Docker镜像吗?
答:可以。需要先将镜像上传到华为云容器镜像服务SWR中,且必须上传到与Flexus容器相同的区域。Flexus容器为X86架构,不支持使用ARM架构的镜像。上传后即可在创建容器时通过镜像地址引用。
问:容器创建后名称可以修改吗?
答:不支持修改。容器名称在创建时确定,创建后无法更新。如需修改名称,只能删除原有容器实例并重新创建。
问:如何让外部用户访问容器中的应用?
答:创建容器实例时配置公网访问,系统会为容器分配弹性公网IP并映射容器端口。同时需要在安全组中放通相应的入方向端口(如80、443等)。容器停止后会释放公网IP,重新启动时IP会变化。
问:容器实例状态一直显示"未就绪"怎么办?
答:首先检查容器镜像配置是否正确——镜像地址是否准确、镜像是否已上传至同区域SWR、镜像架构是否为X86。其次确认启动命令是否为镜像支持的命令。最后检查公网IP配额是否充足。排查以上问题后仍无法解决,建议查看容器日志获取详细错误信息。



