华为云用户手册

  • 使用Node.js应用部署模板创建并部署应用 在主机上部署Node.js框架的web服务,并启动该服务。 请确认目标主机已安装Node.js,若已安装请移除模板中“安装Node.js”步骤。 该模板涉及的部署步骤如下所示: 安装Node.js 下载软件包 停止Node.js服务 启动Node.js服务 服务启动测试 该模板需要填写的参数如表1所示。 表1 模板参数说明 参数 说明 host_group 该应用部署的目标环境。 package_url 软件包下载地址,可前往制品仓库-软件发布库获取下载链接。 service_port 应用端口。 父主题: 使用预置模板新建并部署应用
  • 使用Tomcat应用部署模板创建并部署应用 在主机上将war包部署到Tomcat服务,并启动该服务。 请确认目标主机已安装Tomcat,若已安装请移除模板中“安装Tomcat”步骤。 该模板涉及的部署步骤如下所示: 安装JDK 安装Tomcat 停止Tomcat服务 选择部署来源 启动Tomcat服务 URL健康测试 该模板提供的参数设置说明如表1所示。 表1 模板参数说明 参数 说明 host_group 该应用部署的目标环境。 package_url 软件包下载地址,可前往制品仓库-软件发布库获取下载链接。 service_port Tomcat应用端口,默认值为8080。 tomcat_home_path Tomcat客户端所在路径,默认值为“/usr/local/tomcat/apache-tomcat-8.5.38”。 父主题: 使用预置模板新建并部署应用
  • 启动/停止Tomcat 根据服务的指定路径来启动、停止服务。同时提供部署后组件的指标监控、日志查询功能,信息配置如下所示。 表1 启动/停止Tomcat参数说明 参数项 是否必填 说明 步骤显示名称 是 步骤添加后在部署步骤显示的名称。仅支持汉字、英文字母、数字、空格、或-_,;:./()()符号,其中空格不可在名称开头或结尾使用,长度为1-128。 环境 是 选择当前资源类型为主机集群的环境,作为部署对象。 服务操作类型 是 配置“启动服务”或者“停止服务”。 服务对应的绝对路径 是 Tomcat 服务路径。 http端口 是 当“服务操作类型”选择“启动服务”时,需要填写。 Tomcat 服务监听的http端口。 ajp端口 是 当“服务操作类型”选择“启动服务”时,需要填写。 Tomcat 服务监听的ajp端口。 shutdown端口 是 当“服务操作类型”选择“启动服务”时,需要填写。 Tomcat 服务监听的shutdown端口。 等待时间 是 当“服务操作类型”选择“启动服务”时,需要填写。 等待服务启动的时间,当选择启动服务时,启动过程中会通过检测进程方式检测服务是否成功启动,可根据服务启动实际所需时间进行调整,如时间设置不合理,会导致检测结果无效。 组件监控 否 配置是否启用应用运维服务( AOM ),该服务提供指标监控、日志查询、告警功能(勾选后自动安装数据采集器 ICAgent,仅支持华为云linux主机,且与此应用在同一region下),详细请参见配置组件监控。 控制选项 否 配置是否启用该操作。 失败后继续运行:当前步骤部署失败后,应用是否继续部署后续的步骤。 使用sudo权限执行:配置是否使用sudo权限部署该步骤。 若在部署过程中遇到问题,可参考该步骤的常见问题解决办法。 父主题: 配置CodeArts Deploy应用关于服务启动停止相关的部署步骤
  • 使用Django应用部署模板创建并部署应用 在主机上部署Django框架的Python后台应用,并启动该服务。 请确认目标主机已安装Nginx,若已安装请移除模板中“安装Nginx”步骤。 请确认目标主机已安装uWSGI,若已安装请移除模板中“安装uWSGI”步骤。 配置pip源和yum源保证安装正常。模板中安装软件使用yum和pip,请配置好对应的源地址,保证安装正常。 新建Django项目,并上传至制品仓库。使用构建服务,将Django项目文件压缩后上传至制品仓库,之后在部署步骤中下载并解压后使用。 暂不支持Python3.10及其以上版本使用此模板。 该模板涉及的部署步骤如下所示: 安装Python 安装django和uWSGI 安装Nginx 启动Nginx 下载软件包 解压软件包 重启uWSGI 重载Nginx配置文件 服务启动测试 该模板需要填写的参数如表1所示。 表1 模板参数说明 参数 说明 host_group 该应用部署的目标环境。 service_port Django应用端口,默认值为8080。 uwsgi_pid_file_path uwsgi进程id文件所在路径。 uwsgi_lni_file_path uwsgi配置文件所在路径。 package_path Django应用发布包下载至目标主机中的路径。 package_name Django应用发布包下载至目标主机中的文件名。 package_url 软件包下载地址,可前往制品仓库-软件发布库获取下载链接。 父主题: 使用预置模板新建并部署应用
  • 使用SpringBoot应用部署模板创建并部署应用 在主机上部署SpringBoot框架的Java后台应用,并启动该服务。 请确认目标主机已安装JDK,若已安装请移除模板中“安装JDK”步骤。 该模板涉及的部署步骤如下所示: 安装JDK 选择部署来源 停止SpringBoot服务 启动SpringBoot服务 URL健康测试 该模板需要填写的参数如表1所示。 表1 模板参数说明 参数 说明 host_group 该应用部署的目标环境。 package_url 软件包下载地址,可前往制品仓库-软件发布库获取下载链接。 service_port SpringBoot应用端口,默认值为8080。 package_name SpringBoot应用发布包名称(该名称不包含文件后缀)。 父主题: 使用预置模板新建并部署应用
  • 添加代理主机 进入基础资源管理。 单击已创建的集群名称,进入该集群页面的“目标主机”页签。 单击“添加或导入主机”,“选择添加方式”选择“通过IP手动添加”。 当主机集群的主机连通方式为“代理模式”时,可新增代理主机。填写以下信息后,单击“确定”,完成代理主机的创建。 表1 Linux系统代理主机参数说明 参数项 是否必填 说明 主机名 是 请输入自定义的代理主机名称。 仅支持3-128位数字、中文、英文字母或-_.符号。 IP 是 请输入代理主机所绑定的公网IP地址。支持IPv4或IPv6格式。 操作系统 是 不可更改,默认为当前主机集群的操作系统。 请参见Linux系统主机配置对目标主机进行配置,避免连通性认证失败。 认证方式 是 请根据实际情况选择密码或密钥进行认证。 密码:页面显示“用户名”与“密码”。以E CS 为例,输入的是ECS的用户名及密码。 密钥:页面显示“用户名”与“密钥”。密钥的生成与获取方式请参考获取Linux密钥。 SSH端口 是 推荐使用22端口,支持自定义端口。 安装AOM-ICAgent复选框 否 若勾选该选项,可免费在主机上安装并使用AOM-ICAgent,实现指标监控、日志查询、告警功能。其中,ICAgent仅限华为云Linux主机,安装前请参照创建/使用委托配置委托。 表2 Windows系统代理主机参数说明 参数项 是否必填 说明 主机名 是 请输入自定义的代理主机名称。 仅支持3-128位数字、中文、英文字母或-_.符号。 IP 是 请输入代理主机所绑定的公网IP地址。支持IPv4或IPv6格式。 操作系统 是 不可更改,默认为当前主机集群的操作系统。 请参见Windows系统主机配置对目标主机进行配置,避免连通性认证失败。 认证方式 是 Windows系统代理机仅支持密码认证。以ECS为例,输入的是ECS的用户名及密码。 winrm端口 是 推荐使用5986端口,支持自定义端口。 您也可单击“添加或导入主机”,“选择添加方式”选择“导入已购ECS”,将自申请的华为云弹性云服务器作为目标主机或代理主机。 使用导入已购ECS功能时,要满足以下条件才能成功导入主机: 实例正在运行中。 实例与主机集群操作系统一致。 在官方资源池的代理场景下,代理主机必须为公网IP。 实例已导入为目标主机,不能导入为代理主机。 在代理机场景下,需要先配置代理主机才能正常使用目标主机。 进行主机连通性验证。 主机新建成功后开始自动进行连通性验证,如果主机连通性验证失败,请单击“失败”,根据弹框中显示的失败原因或单击“查看解决方案”进行排查故障。
  • Windows系统代理机配置 所需资源 已有Windows机器。 代理机和主机网络连通正常。 操作步骤 进入代理机,打开powershell窗口,执行netsh命令,注意按参数说明替换参数: netsh interface portproxy add v4tov4 listenaddress=${proxy_ip} listenport=${proxy_port} connectaddress=${host_ip} connectport=${host_port} 如果是IPv6主机,则请将上文命令中的“v4tov4”替换为“v6tov6”,再进行参数替换。 表4 参数说明 参数 参数释义 ${proxy_ip} 代理机私网IP ${proxy_port} 代理机监听端口,如54 ${host_ip} 主机私网IP ${host_port} 主机端口,一般为5986 进行安全配置,需要开通代理监听端口,即上述指令中的${proxy_port}。
  • 使用限制 目前支持主流的jdk8、jdk11、jdk17以及jdk21。 jdk8环境请选用末尾不带-jdkxx的版本,jdkxx环境请选用末尾带-jdkxx的版本,需要支持profiler则选用带-profiler的版本。 Agent下载规则:末尾带-jdk17、-jdk11或-jdk21的版本,请在Agent下载路径的末尾增加对应的-jdk17、-jdk11或-jdk21即可。 例如:2.4.12版本Agent的下载地址为:https://apm2-javaagent***/apm2_javaagent/apm-javaagent-2.4.12.tar,则2.4.12-jdk17版本Agent的下载地址为:https://apm2-javaagent***/apm2_javaagent/apm-javaagent-2.4.12-jdk17.tar
  • 使用导读 本地图介绍了 APM 功能使用场景的相关指导,您可以根据需要选择。 应用列表 APM应用列表展示了应用组件或环境、Agent状态、支持的操作等信息。 CMDB管理 APM会内置一个资源配置管理信息CMDB,用于组织应用结构信息以及相关配置信息。 应用指标监控 APM可以管理标签、监控应用的JVM、GC、服务调用、异常、外部调用、数据库访问、Profiler性能分析、Debugging诊断以及其他中间件的指标调用等数据,帮助用户全面掌握应用的运行情况。APM支持通过普罗实例,将应用指标上报到AOM界面。 调用链 拓扑发现异常服务,通过查看调用状态、耗时、接口调用的详细信息,进一步定界问题产生的原因。 应用拓扑 可视化展示应用间调用关系和依赖关系,应用拓扑自发现,异常应用实例无处躲藏。 应用拓扑主要分两种: 单组件拓扑:是单个组件下的单个环境的拓扑,同时可以展开直接或间接上下游的组件的拓扑关系。 全局应用拓扑:可以查看这个应用下面全部或者部分组件的全局拓扑关系。 URL跟踪 通过URL跟踪可以让用户跟踪某一些重要接口调用与下游的服务调用关系,从更细粒度角度发现问题。 资源标签管理 通过给账户下资源添加标签,可以对资源进行自定义标记,实现资源的分类。 标签管理 APM支持各业务下的环境及应用进行标签管理,按照业务需求对不同的环境及应用添加对应的标签,用来划分业务,方便对业务进行管理。 告警管理 接入APM的应用在达到设定告警条件时,会触发告警并及时上报信息,以便用户在第一时间获取到服务的异常状况,进而迅速处理故障,避免造成业务损失。 探针管理 通过Agent管理您可以查看当前已接入Agent的部署状态及运行状态,并且能对接入的Agent进行停止、启动和删除操作。 前端监控 APM Agent会周期性采集一些前端监控的性能指标数据,用来衡量网站/H5端以及小程序端的总体健康状况。可以采集性能加载、API请求、JS错误、访问分析、会话追踪以及自定义上报等数据,帮助用户全面掌握前端应用的运行情况。 链路追踪 链路追踪采集分布式应用的完整调用链路,提供了拓扑、接口调用、数据库、异常等数据采集类型,配置告警策略,可以帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率。 App监控 APM Agent会周期性采集一些移动监控的性能指标数据,用来衡量Android端、iOS端以及Harmony端的总体健康状况。可以采集崩溃、卡顿、错误、启动性能、网络请求、终端设备以及自定义上报等数据,帮助用户全面掌握App应用的运行情况。 系统管理 集中管理、展示系统配置,主要包括:采集中心、数据脱敏、用量统计、访问密钥以及通用配置。 采集中心:采集中心主要是集中管理、展示APM中支持的采集器插件的入口,在这里可以看到APM中支持的各种采集器插件、指标以及支持的可配置的参数信息。 数据脱敏:APM支持配置脱敏策略,对依赖APM2.0上报的接口相关数据,按照脱敏配置策略进行脱敏处理。 探针接入后,可以在用量统计中查看“探针量统计”以及“写入量统计”。 访问密钥:是租户在APM服务的长期身份证,用户确保上报请求的机密性、完整性和请求者身份的正确性。 通用配置:系统通用配置,包括:Agent字节码方式拦截,慢请求阈值、监控指标数据采集的最大行数、慢SQL请求阈值、应用性能报表推送以及前端监控聚合设置。 性能监控 为提高APM用户体验,解决“缺少运维视角”、“拓扑图难用”、“关联分析不够”等问题,APM支持“性能监控”。 SDK参考 APM服务提供的SDK语言版本,列举了iOS、Android、鸿蒙、浏览器/H5端以及小程序接入SDK的方法。 权限管理 APM使用企业项目管理控制用户对APM资源的访问范围。 了解更多 权限管理 创建用户并授权使用APM。 快速入门 使用APM功能前,了解多种场景下应用如何接入APM。
  • 操作场景 随着容器化技术的发展,越来越多的企业使用容器代替了虚拟机完成应用的运行部署,而Kubernetes的发展让容器化的部署变得简单并且高效。目前许多企业选择自建Kubernetes集群,但是自建集群往往有着沉重的运维负担,需要运维人员自己配置管理系统和监控解决方案,伴随而来的就是企业人力成本的上升和效率的降低。 在性能方面,自建集群的规模固定,可扩展性又比较弱,在业务流量高峰期无法实现自适应的弹性扩缩容,很容易出现集群资源不足或浪费等现象。而且自建集群往往没有考虑容灾风险,导致可靠性较差,一旦出现故障将会使整个集群无法使用,可能会形成十分严重的生产事件。 面对以上的种种不足,CCE提供了简单的集群管理能力和灵活的弹性放缩能力,深度集成应用服务网格和Helm标准模板,能够有效帮助企业简化集群运维管理方式,降低运营成本,以简单易用、高性能、安全可靠、开放兼容等诸多优点,获取了大量企业用户的青睐。因此很多企业选择将自建集群全量搬迁至CCE进行管理,本文主要介绍集群迁移上云的方案和步骤。
  • 迁移方案 本文介绍一种集群迁移方案,适合如下几类集群: 本地IDC自建的K8s集群 通过多台ECS自建的集群 其他云服务商提供的集群服务 停止维护,无法原地升级的需要迁移的CCE集群 在迁移前,需对原集群的所有资源进行分析再决定迁移方案,可迁移的资源包括集群内资源和集群外资源,如下表所示。 表1 可迁移资源列表 资源类别 可迁移对象 备注 集群内资源 集群中的所有对象,Pod、Job、Service、Deployment、ConfigMap等。 不建议迁移的资源:命名空间velero和kube-system下的资源。 velero:该命名空间下的资源为迁移工具创建,无需迁移。 kube-system:该命名空间下的资源为系统资源。如原集群该命名空间下包含用户自行创建的资源,建议按需迁移。 注意: 如果您是迁移或备份CCE中集群的资源,比如从一个Namespace到另外一个Namespace,请不要备份名称为paas.elb的Secret。因为paas.elb的内容是会定期更新,备份后再恢复时可能已经失效,会影响网络存储相关功能。 挂载到容器的持久化存储。 由于Restic工具限制,不支持进行HostPath类型存储迁移,解决方法请参考无法备份HostPath类型存储卷。 集群外资源 自建镜像仓库。 可迁移至 容器镜像服务 SWR。 非容器化的数据库。 可迁移至云数据库服务RDS。 对象存储等非本地存储。 可迁移至 对象存储服务 OBS等 云存储 服务。 迁移流程如图1所示,对于集群外资源您可根据实际需求进行选择性迁移。 图1 迁移方案示意图
  • 迁移步骤 集群迁移大致包含如下6个步骤: 目标集群资源规划。 请详细了解CCE集群与自建集群间的差异,参考目标集群资源规划中的关键性能参数,按需进行资源规划,建议尽量保持迁移后集群与原集群中性能配置相对一致。 集群外资源迁移。 若您需对集群外的相关资源进行迁移,可使用对应的迁移解决方案,具体请参见集群外资源迁移。 迁移工具安装。 完成集群外资源迁移后,可通过迁移工具在原集群和目标集群内分别进行应用配置的备份和还原,工具的安装步骤请参考迁移工具安装。 集群内资源迁移。 使用Velero将原集群内资源备份至对象存储中,并在目标集群中进行恢复,详细步骤可参考集群内资源迁移(Velero)。 原集群应用备份 当用户执行备份时,首先通过Velero工具在原集群中创建Backup对象,并查询集群相关的数据和资源进行备份,并将数据打包上传至S3协议兼容的对象存储中,各类集群资源将以JSON格式文件进行存储。 目标集群应用恢复 在目标集群中进行还原时,Velero将指定之前存储备份数据的临时对象桶,并把备份的数据下载至新集群,再根据JSON文件对资源进行重新部署。 资源更新适配。 迁移后的集群资源可能存在无法部署的问题,需要对出现错误的资源进行更新适配,可能发生的适配问题主要包括如下几类: 镜像更新适配 访问服务更新适配 StorageClass更新适配 数据库更新适配 其余工作。 集群资源正常部署后,需对迁移后应用内的功能进行验证,并将业务流量切换至新集群。最后确定所有服务正常运行后,可将原集群下线。
  • 备份工具资源分配不足 在生产环境中,当备份资源较多时,如备份工具资源大小使用默认值,可能会出现资源分配不足的情况,请参考以下步骤调整分配给Velero和Restic的CPU和内存大小。 安装Velero前: 您可在安装Velero时指定Velero和Restic使用的资源大小。 安装参数示例如下: velero install \ --velero-pod-cpu-request 500m \ --velero-pod-mem-request 1Gi \ --velero-pod-cpu-limit 1000m \ --velero-pod-mem-limit 1Gi \ --use-node-agent \ --node-agent-pod-cpu-request 500m \ --node-agent-pod-mem-request 1Gi \ --node-agent-pod-cpu-limit 1000m \ --node-agent-pod-mem-limit 1Gi 安装Velero后: 编辑命名空间velero下Velero和node-agent工作负载的YAML文件。 kubectl edit deploy velero -n velero kubectl edit ds node-agent -n velero 修改resources字段下分配的资源大小,Velero和Restic工作负载的修改内容一致,如下所示。 resources: limits: cpu: "1" memory: 1Gi requests: cpu: 500m memory: 1Gi
  • 无法备份HostPath类型存储卷 HostPath与Local均为本地存储卷,但由于Velero集成的Restic工具无法对HostPath类型的PV进行备份,只支持Local类型,因此需要在原集群中将HostPath类型存储卷替换为Local类型。 Local volume类型的存储建议在Kubernetes v1.10及以上的版本中使用,且只能静态创建,详情请参考local。 创建Local volume的StorageClass。 YAML文件如下: apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer 需要修改hostPath字段为local字段,指定宿主机原有的本地磁盘路径,并添加nodeAffinity字段。 YAML文件示例如下: apiVersion: v1 kind: PersistentVolume metadata: name: mysql-pv labels: app: mysql spec: accessModes: - ReadWriteOnce capacity: storage: 5Gi storageClassName: local #指定上一步创建的StorageClass persistentVolumeReclaimPolicy: Delete local: path: "/mnt/data" #指定挂载的本地磁盘路径 nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: Exists 执行以下命令验证创建结果。 kubectl get pv 回显如下: NAME CAPACITY AC CES S MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE mysql-pv 5Gi RWO Delete Available local 3s
  • 应用功能验证 由于集群迁移是对应用数据的全量迁移,可能存在应用内适配问题。例如本示例中,集群迁移后,Wordpress中发布的文章跳转链接仍是原 域名 ,单击文章标题将会重定向至原集群中的应用实例,因此需要通过搜索将Wordpress中原有的旧域名并替换为新域名,并修改数据库中的site_url和主url值,具体操作可参考更改站点URL。 最后在浏览器上访问迁移后的Wordpress应用新地址,可以看到迁移前发布的文章,说明持久卷的数据还原成功。
  • 镜像更新适配 由于本例使用的Wordpress和MySQL镜像均可从SWR正常拉取,因此不会出现镜像拉取失败(ErrImagePull)问题。如迁移应用为私有镜像,请执行以下步骤完成镜像更新适配。 将镜像资源迁移至容器 镜像服务 (SWR),具体步骤请参考客户端上传镜像。 登录SWR控制台查看获取迁移后的镜像地址。 镜像地址格式如下: 'swr.{区域}.myhuaweicloud.com/{所属组织名称}/{镜像名称}:{版本名称}' 使用如下命令对工作负载进行修改,并将YAML文件中的image字段替换成迁移后的镜像地址。 kubectl edit deploy wordpress 查看应用实例运行情况。
  • 数据库更新适配 本例中数据库为本地MySQL数据库,迁移后无需重新配置。若您通过 数据复制服务 DRS将本地数据库迁移至云数据库RDS,则在迁移后需重新配置数据库的访问,请您根据实际情况进行配置。 若云数据库RDS实例与CCE集群处于同一VPC下,则可通过内网地址访问,否则只能通过绑定EIP的方式进行公网访问。建议使用内网访问方式,安全性高,并且可实现RDS的较好性能。 请确认RDS所在安全组入方向规则已对集群放通,否则将连接失败。 登录RDS控制台,在该实例的“基本信息”页面获取其“内网地址”及端口。 使用如下命令对Wordpress工作负载进行修改。 kubectl edit deploy wordpress 设置env字段下的环境变量: WORDPRESS_DB_HOST:数据库的访问地址和端口,即上一步中获取的内网地址及端口。 WORDPRESS_DB_USER:访问数据库的用户名。 WORDPRESS_DB_PASSWORD:访问数据库的密码。 WORDPRESS_DB_NAME:需要连接的数据库名。 检查RDS数据库是否正常连接。
  • 访问服务更新适配 集群迁移后,原有集群的访问服务可能无法生效,可执行如下步骤更新服务。如原集群中设置了Ingress资源,迁移后需重新对接ELB,您可参考添加Ingress-对接已有ELB。 通过kubectl连接集群。 编辑对应Service的YAML文件,修改服务类型及端口。 kubectl edit svc wordpress LoadBanlancer资源进行更新时,需要重新对接ELB。请参考通过kubectl命令行创建-使用已有ELB,添加如下Annotation: annotations: kubernetes.io/elb.class: union #共享型ELB kubernetes.io/elb.id: 9d06a39d-xxxx-xxxx-xxxx-c204397498a3 #ELB的ID,可前往ELB控制台查询 kubernetes.io/elb.subnet-id: f86ba71c-xxxx-xxxx-xxxx-39c8a7d4bb36 #ELB所在子网的ID kubernetes.io/elb.session-affinity-mode: SOURCE_IP #开启会话保持,基于源IP地址 浏览器访问查看服务是否可用。
  • 安装MinIO(可选) MinIO 是一个兼容S3接口协议的高性能对象存储开源工具。若使用MinIO进行存放集群迁移的备份文件,您需要一台临时服务器用于部署MinIO并对外提供服务。若您使用OBS存放备份文件,请忽略此步骤,前往安装Velero。 MinIO的安装位置选择有如下几种: 集群外临时ECS 将MinIO服务端安装在集群外,能够保障集群发生灾难性故障时,备份文件不会受到影响。 集群内的空闲节点 您可以远程登录节点安装MinIO服务端,也可以选择容器化安装MinIO,请参考Velero官方文档。 如使用容器化安装MinIO: Velero官方文档提供的YAML文件中存储类型为empty dir,建议将其修改为HostPath或Local类型,否则容器重启后将永久丢失备份文件。 您需将MinIO服务对外提供访问,否则将无法在集群外下载备份文件,可选择将Service修改为NodePort类型或使用其他类型的公网访问服务。 无论使用何种方法进行部署,安装MinIO的服务器需要有足够的存储空间,且均需要绑定EIP并在安全组中开放MinIO的服务端口,否则将无法上传(下载)备份文件。 本示例选择在一台集群外的临时ECS上安装MinIO,步骤如下。 下载MinIO对象存储。 mkdir /opt/minio mkdir /opt/miniodata cd /opt/minio wget https://dl.minio.io/server/minio/release/linux-amd64/minio chmod +x minio 设置MinIO的用户名及密码。 此方法设置的用户名及密码为临时环境变量,在服务重启后需要重新设定,否则会使用默认root凭据minioadmin:minioadmin来创建服务。 export MINIO_ROOT_USER=minio export MINIO_ROOT_PASSWORD=minio123 创建服务,其中/opt/miniodata/为MinIO 存储数据的本地磁盘路径。 MinIO的API端口默认为9000,console端口默认为随机生成,您可使用--console-address参数指定console访问端口。 ./minio server /opt/miniodata/ --console-address ":30840" & 安装MinIO工具的服务器需开放防火墙、安全组中对应的API和console端口,否则将无法访问对象桶。 浏览器访问http://{minio所在节点的eip}:30840,可进入MinIO console界面。
  • 安装Velero 首先前往OBS控制台或MinIO console界面,创建存放备份文件的桶并命名为velero。此处桶名称可自定义,但安装Velero时必须指定此桶名称,否则将无法访问导致备份失败,参见5。 原集群和目标集群中均需要安装部署Velero实例,安装步骤一致,分别用于备份和恢复。 CCE集群的Master节点不对外提供远程登录端口,您可通过kubectl操作集群完成Velero安装。 如果备份资源量较大,请调整Velero及node-agent工具的cpu和内存资源(建议调整至1U1G及以上),请参考备份工具资源分配不足。 用于存放备份文件的对象存储桶需要是空桶。 从Velero官方发布路径https://github.com/vmware-tanzu/velero/releases下载最新的稳定版二进制文件,本文以Velero 1.13.1版本为例。原集群和目标集群中的安装过程一致,请参考如下步骤。 登录一台可以访问公网的虚拟机,并使用kubectl连接需要安装Velero的集群。 下载Velero 1.13.1版本的二进制文件。 wget https://github.com/vmware-tanzu/velero/releases/download/v1.13.1/velero-v1.13.1-linux-amd64.tar.gz 安装Velero客户端。 tar -xvf velero-v1.13.1-linux-amd64.tar.gz cp ./velero-v1.13.1-linux-amd64/velero /usr/local/bin 创建备份对象存储访问密钥文件credentials-velero。 vim credentials-velero 文件内容如下,其中的AK/SK请根据实际情况进行替换。使用OBS时,可参考获取访问密钥(AK/SK)获取AK/SK。如使用MinIO,此处AK/SK则为2中所创建的用户名及密码。 [default] aws_access_key_id = {AK} aws_secret_access_key = {SK} 部署Velero服务端。注意其中--bucket参数需要修改为已创建的对象存储桶名称,本例中为velero。关于更多自定义安装参数,请参考自定义安装Velero。 velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.9.1 \ --bucket velero \ --secret-file ./credentials-velero \ --use-node-agent \ --use-volume-snapshots=false \ --backup-location-config region=cn-north-4,s3ForcePathStyle="true",s3Url=http://obs.cn-north-4.myhuaweicloud.com 表1 Velero安装参数说明 安装参数 参数说明 --provider 声明使用的插件类型为AWS S3组件。 --plugins 使用AWS S3兼容的API组件,本文使用的OBS和MinIO对象存储均支持该S3协议。 --bucket 用于存放备份文件的对象存储桶名称,需提前创建。 --secret-file 访问对象存储的密钥文件,即4中创建的“credentials-velero”文件。 --use-node-agent PV数据备份,建议开启,否则将无法备份存储卷资源。 --use-volume-snapshots 是否创建 VolumeSnapshotLocation 对象进行PV快照,需要提供快照程序支持。该值设为false。 --backup-location-config 对象存储桶相关配置,包括region、s3ForcePathStyle、s3Url等。 region 对象存储桶所在区域。 OBS:请根据实际区域填写,如“cn-north-4”。 MinIO:参数值为minio。 s3ForcePathStyle 参数值为“true”,表示使用S3文件路径格式。 s3Url 对象存储桶的API访问地址。 OBS:该参数值需根据对象存储桶地域决定,参数值为“http://obs.{region}.myhuaweicloud.com”。例如区域为北京四(cn-north-4),则参数值为“http://obs.cn-north-4.myhuaweicloud.com”。 MinIO:该参数值需根据MinIO安装节点的IP及暴露端口确定,参数值为“http://{minio所在节点的eip}:9000”。 说明: s3Url中的访问端口需填写MinIO的API端口,而非console端口。MinIO API端口默认为9000。 访问集群外安装的MinIO时,需填写其公网IP地址。 Velero实例将默认创建一个名为velero的namespace,执行以下命令可查看pod状态。 $ kubectl get pod -n velero NAME READY STATUS RESTARTS AGE node-agent-rn29c 1/1 Running 0 16s velero-c9ddd56-tkzpk 1/1 Running 0 16s 为防止在实际生产环境中备份时出现内存不足的情况,建议您参照备份工具资源分配不足,修改node-agent和Velero分配的CPU和内存大小。 查看Velero工具与对象存储的对接情况,状态需要为available。 $ velero backup-location get NAME PROVIDER BUCKET/PREFIX PHASE LAST VALIDATED ACCESS MODE DEFAULT default aws velero Available 2021-10-22 15:21:12 +0800 CST ReadWrite true
  • 前提条件 原始自建集群Kubernetes版本需1.10及以上,且集群可正常使用DNS与互联网服务。 若您使用OBS存放备份文件,需已有OBS操作权限用户的AK/SK,请参考获取访问密钥(AK/SK)。 若您使用MinIO存放备份文件,则安装MinIO的服务器需要绑定EIP并在安全组中开放MinIO的API端口和Console端口。 已创建迁移的目标CCE集群。 原集群和目标集群中需要至少各拥有一个空闲节点,节点规格建议为4U8G及以上。
  • 数据库与存储迁移(按需) 您可根据实际生产需求,选择是否使用云数据库服务RDS和对象存储服务OBS。完成迁移后,新建CCE集群中的应用需要重新配置数据库与存储。 数据库迁移 若您的数据库采用集群外的非容器化部署方案,且需将数据库同步搬迁上云,可以使用数据复制服务 DRS帮助完成数据库迁移。DRS服务具有实时迁移、备份迁移、实时同步、数据订阅和实时灾备等多种功能。请由运维或者开发人员进行数据库的迁移,详情请参见跨云数据库在线迁移。完成迁移后,可参考数据库更新适配进行对接。 存储迁移 若您的集群对接了对象存储服务,且需同步搬迁至上云,可以使用 对象存储迁移 服务 OMS ,帮助您将对象存储中的数据在线迁移至对象存储服务。其他存储类型暂未提供官方工具支持。 请由运维或者开发人员进行对象存储数据的迁移,详情请参见创建单个迁移任务。完成迁移后,可参考对接已有对象存储挂载到应用实例。 目前对象存储迁移服务OMS支持亚马逊云(中国)、阿里云、微软云、百度云、华为云、金山云、优刻得、青云、七牛云、腾讯云平台的对象存储数据迁移到华为云对象存储服务OBS。
  • 容器镜像迁移 为保证集群迁移后容器镜像可正常拉取,提升容器部署效率,十分建议您将私有镜像迁移至容器镜像服务SWR。CCE配合SWR为您提供容器自动化交付流水线,采用并行传输的镜像拉取方式,能够大幅提升容器的交付效率。 若您的自建镜像仓库为Harbor 1.10.5以上版本,则Harbor中集成了与华为云SWR的对接,只需要填写相关参数即可进行迁移,具体操作请参考跨云Harbor同步镜像至华为云SWR。否则,您可以按以下操作手动完成容器镜像的迁移。 远程登录原集群中任意一个节点,使用docker pull命令拉取所有镜像到本地。 登录SWR控制台,单击页面右上角的“登录指令”并复制。 在节点上执行上一步复制的登录指令。 登录成功会显示“Login Succeeded”。 为所有本地镜像打上标签。 docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] [镜像名称1:版本名称1]:等待上传的本地镜像名称和版本名称。 [镜像仓库地址]:可在SWR控制台上查询。 [组织名称]:您在SWR控制台创建的组织名称。 [镜像名称2:版本名称2]:SWR中显示的镜像名称和镜像版本。 示例: docker tag nginx:v1 swr.cn-north-4.myhuaweicloud.com/cloud-develop/mynginx:v1 使用docker push命令将所有本地容器镜像文件上传到SWR。 docker push [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] 示例: docker push swr.cn-north-4.myhuaweicloud.com/cloud-develop/mynginx:v1
  • 操作场景 本文使用Wordpress应用为例,将自建Kubernetes集群中应用整体迁移到CCE集群。Wordpress应用包含Wordpress和MySQL两个组件,均为容器化实例,分别绑定了两个Local类型的本地存储卷,并通过NodePort服务对外提供访问。 迁移前通过浏览器访问Wordpress站点,创建站点名称为“Migrate to CCE”,并发布一篇文章用于验证迁移后PV数据的完整性。Wordpress中发布的文章会被存储在MySQL数据库的“wp_posts”表中,若迁移成功,数据库中的内容也将会被全量搬迁至新集群,可依此进行PV数据迁移校验。
  • 前提条件 请在迁移前提前清理原集群中异常的Pod资源。当Pod状态异常但是又挂载了PVC的资源时,在集群迁移后,PVC状态会处于pending状态。 请确保CCE侧集群中没有与被迁移集群侧相同的资源,因为Velero工具在检测到相同资源时,默认不进行恢复。 为确保集群迁移后容器镜像资源可以正常拉取,请将镜像资源迁移至容器镜像服务(SWR)。 CCE不支持ReadWriteMany的云硬盘存储,在原集群中存在该类型资源时,需要先修改为ReadWriteOnce。 Velero对存储卷进行备份还原时不支持HostPath类型的存储卷,详情请参见文件系统备份限制。若您需备份该类型的存储卷,请参考无法备份HostPath类型存储卷将HostPath类型替换为Local类型。当备份任务中存在HostPath类型的存储,该类型存储卷将会被自动跳过并产生Warning信息,并不会导致备份失败。
  • 目标集群应用恢复 由于自建集群与后端的存储基础设施不同,集群迁移后会遇到Pod无法挂载PV的问题。因此在进行迁移时需要对新集群中的StorageClass进行适配,从而在创建工作负载时可以屏蔽两个集群之间底层存储接口的差异,申请相应类型的存储资源,相关操作请参考StorageClass更新适配。若您使用对象存储迁移服务OMS完成存储迁移,可参考对接已有对象存储将对象存储桶挂载到应用实例。 通过kubectl连接CCE集群,这里选择创建一个原集群中相同名称StorageClass来完成适配。 本例中原集群的StorageClass名为local,存储类型为本地磁盘。本地磁盘存储完全依赖节点可用性,数据容灾性能差,节点不可用时将直接影响已有存储数据。因此CCE集群中的存储资源选用云硬盘存储卷,后端存储介质使用SAS存储。 包含PV数据的应用在CCE集群中进行恢复时,定义的StorageClass将会根据PVC动态创建相应的存储资源(如云硬盘)并挂载,请您知悉。 此处集群的存储资源可以根据需求进行更改,并非仅限于云硬盘存储卷。若需要挂载其他类型的存储,如文件存储、对象存储,请参考StorageClass更新适配进行适配。 被迁移侧集群YAML文件: apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer 迁移侧集群YAML文件示例如下: allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local selfLink: /apis/storage.k8s.io/v1/storageclasses/csi-disk parameters: csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io csi.storage.k8s.io/fstype: ext4 everest.io/disk-volume-type: SAS everest.io/passthrough: "true" provisioner: everest-csi-provisioner reclaimPolicy: Delete volumeBindingMode: Immediate 使用Velero工具创建restore,指定名称为wordpress-backup的备份,将Wordpress应用恢复至CCE集群。 velero restore create --from-backup wordpress-backup 可通过velero restore get语句查看应用恢复情况。 恢复完成后查看应用实例是否正常运行,可能存在其他的更新适配问题,请参考资源更新适配中的步骤排查解决。
  • 目标集群资源规划 CCE支持对集群资源进行自定义选择,以满足您的多种业务需求。表1中列举了集群的主要性能参数,并给出了本示例的规划值,您可根据业务的实际需求大小进行设置,建议与原集群性能配置保持相对一致。 集群创建成功后,表1中带“*”号的资源参数将不可更改,请谨慎选择。 表1 CCE集群规划 资源 主要性能参数 参数说明 本示例规划 集群 *集群类型 CCE集群:支持虚拟机节点。基于高性能网络模型提供全方位、多场景和安全稳定的容器运行环境。 CCE Turbo 集群:基于云原生基础设施构建的云原生2.0容器引擎服务,具备软硬协同、网络无损、安全可靠和调度智能的优势,为用户提供一站式、高性价比的全新容器服务体验。支持裸金属节点。 CCE集群 *网络模型 VPC网络:采用VPC路由方式与底层网络深度整合,适用于高性能场景,节点数量受限于 虚拟私有云VPC 的路由配额。 容器隧道网络(Overlay):基于底层VPC网络,另构建了独立的VXLAN隧道化容器网络,适用于一般场景。 云原生2.0:深度整合弹性网卡(Elastic Network Interface,简称ENI)能力,采用VPC网段分配容器地址,支持ELB直通容器,享有高性能。 VPC网络 *控制节点数 3:三个控制节点,容灾性能好,在单个控制节点发生故障后集群可以继续使用,不影响业务功能。 1:单个控制节点,不建议在商用场景使用。 3 节点 OS类型 EulerOS CentOS Ubuntu EulerOS 节点规格(根据实际区域可能存在差异) 通用型:该类型实例提供均衡的计算、存储以及网络配置,适用于大多数的使用场景。通用型实例可用于Web服务器、开发测试环境以及小型数据库工作负载等场景。 内存优化型:该类型实例提供内存比例更高的实例,可以用于对内存要求较高、数据量大的工作负载,例如关系数据库、NoSQL等场景。 通用入门型:通用入门型实例提供均衡的计算、存储以及网络配置,利用CPU积分机制保证基准性能,适合平时不会持续高压力使用CPU,但偶尔需要提高计算性能完成工作负载的场景,可用于轻量级Web服务器、开发、测试环境以及中低性能数据库等场景。 GPU加速型:提供优秀的浮点计算能力,从容应对高实时、高并发的海量计算场景。P系列适合于深度学习,科学计算,CAE等;G系列适合于3D动画渲染,CAD等。仅支持1.11及以上版本集群添加GPU加速型节点。 高性能计算型:实例提供具有更稳定、超高性能计算性能的实例,可以用于超高性能计算能力、高吞吐量的工作负载场景,例如科学计算。 通用计算增强型:该类型实例具有性能稳定且资源独享的特点,满足计算性能高且稳定的企业级工作负载诉求。 磁盘增强型:该类型实例能提供可使用本地磁盘存储以及更高网络性能的实例,可以用于处理需要高吞吐以及高数据交换处理的工作负载,例如大数据工作负载等场景。 超高I/O型:该类型实例提供超低SSD盘访问延迟和超高IOPS性能,适用于高性能关系型数据库、NoSQL数据库(如Cassandra、MongoDB)、ElasticSearch搜索等场景。 AI加速型:AI加速型节点实例,搭载高性能、低功耗的海思Ascend 310 AI处理器,实现快速高效地处理推理和图像识别等工作,适用于图像识别、视频处理、推理计算以及机器学习等场景。 通用型(节点规格为4U8G) 系统盘类型 高IO:后端存储介质为SAS类型。 超高IO:后端存储介质为SSD类型。 高IO 存储类型 云硬盘存储卷:CCE支持将EVS创建的云硬盘挂载到容器的某一路径下。当容器迁移时,挂载的云硬盘将一同迁移,这种存储方式适用于需要永久化保存的数据。 文件存储卷: CCE支持创建SFS存储卷并挂载到容器的某一路径下,也可以使用底层SFS服务创建的文件存储卷,SFS存储卷适用于多读多写的持久化存储,适用于多种工作负载场景,包括 媒体处理 、内容管理、大数据分析和分析工作负载程序等场景。 对象存储卷:CCE支持创建OBS对象存储卷并挂载到容器的某一路径下,对象存储适用于云工作负载、数据分析、内容分析和热点对象等场景。 极速文件存储卷:CCE支持创建SFS Turbo极速文件存储卷并挂载到容器的某一路径下,极速文件存储具有按需申请,快速供给,弹性扩展,方便灵活等特点,适用于DevOps、容器微服务、企业办公等应用场景。 云硬盘存储卷
  • 应用指标监控 APM应用指标监控可以度量应用的整体健康状况。包括:应用监控详情、应用监控配置、监控项视图、实例、采集状态以及组件设置。 应用监控详情:APM Agent会采集Java、Python、Go、Php、C++、.Net和Node.js应用的Profiler性能分析、Debugging诊断、JVM,GC,服务调用,异常,外部调用,数据库访问以及其他中间件的指标数据,帮助用户全面掌握应用的运行情况。 APM支持通过普罗实例,将应用指标上报到AOM界面。 应用监控配置:可以对监控项对应的部分采集器自定义采集参数,实现自定义采集配置。 监控项视图:监控项视图当前支持汇总表格、趋势图、最近数据表格和原始表格几种类型。 实例:通过实例页面您可以查看实例的相关信息,并且能对实例的Agent进行停止、启动和删除等操作。 采集状态:通过采集状态页面您可以查看主机的采集状态。 组件设置:组件设置包括关联日志服务、Profiler性能剖析配置以及全采样设置。
  • 系统管理 系统管理包括三部分:采集中心、数据脱敏、用量统计、访问密钥以及通用配置。 采集中心:集中管理、展示APM中支持的采集器插件的入口,在这里可以看到APM中支持的各种采集器插件、指标以及支持的可配置的参数信息。 数据脱敏:APM支持配置脱敏策略,对依赖APM2.0上报的接口相关数据,按照脱敏配置策略进行脱敏处理。 用量统计:探针接入后,可以在用量统计中查看“探针量统计”以及“写入量统计”。 访问密钥:访问密钥(AK/SK,Access Key ID/Secret Access Key)包含访问密钥ID(AK)和秘密访问密钥(SK)两部分,是您在华为云APM服务的长期身份凭证,JavaAgent携带密钥ID(AK)上报数据,华为云通过该AK识别访问用户的身份,通过SK对请求数据进行签名认证,用于确保上报请求的机密性、完整性和请求者身份的正确性。 通用配置:系统通用配置,包括:停止Agent字节码方式拦截,慢请求阈值、监控指标数据采集的最大行数、慢SQL请求阈值、前端监控聚合设置以及应用性能报表推送。
  • 应用拓扑 应用拓扑主要分两种: 单组件拓扑:是单个组件下的单个环境的拓扑,同时可以展开直接或间接上下游的组件的拓扑关系。 全局应用拓扑:可以查看这个应用下面全部或者部分组件的全局拓扑关系。 拓扑图展示服务之间一段时间的调用关系,可以是从调用方统计的,也可以是从被调用方统计的,并且可以查看这个调用关系的趋势图。通过拓扑图,一方面可以自动梳理服务之间的调用关系,同时也可以从全局视角查看服务之间调用是否正常,快速定位问题所在。可以清晰地展示应用间关系、调用数据(服务、实例指标)、健康状况等详细内容。
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全