华为云用户手册

  • 步骤四:查看并检查迁移结果 在目的端云耀云服务器 L实例 查看服务器操作系统。 单击云耀云服务器L实例资源卡片上的“远程登录”,可看到操作系统已经变更为源端服务器的CentOS系统及内核信息,表示迁移成功。 输入源端服务器的用户名密码,可直接登录,您可查看其它信息。 (可选)检查云耀云服务器L实例是否安装了一键式密码重置插件。 安装一键式密码重置插件后,在您遗忘密码时可重置密码,否则无法使用重置密码功能。 单击资源卡片上的“重置密码”。 如果界面弹窗出现输入新密码的提示,表示已安装一键式重置密码插件。 如果界面弹窗提示下载重置密码脚本,表示未安装一键式重置密码插件,继续执行如下步骤。 安装一键式密码重置插件。 如果您知晓您的源端服务器密码,请参考安装一键式密码重置插件安装插件。 如果您遗忘了您的源端 镜像服务 器密码,请参设置密码并安装一键式密码插件安装插件。 (可选)检查HSS服务状态。 如果您的目的端云耀云服务器L实例未包含HSS服务,请忽略此步骤。 在您的目的端云耀云服务器L实例包含HSS服务的情况下,如果您迁移服务器后,HSS为“未防护”异常状态请参考使用私有镜像创建/切换服务器后,主机安全(HSS)服务未启动怎么办?启用HSS。 图3 HSS为“未防护”异常状态
  • 准备工作 使用 SMS 服务前,请参考以下步骤准备好帐号、权限及源端、目的端服务器环境,以确保顺利完成迁移。 已注册华为帐号并开通华为云,登录华为云完成实名认证。 已获取华为帐号的迁移权限。 如果您使用华为帐号登录,默认拥有迁移权限,无需配置迁移权限;如果您使用 IAM 用户登录,可参考创建用户组并授权进行授权。 已获取目的端帐号的AK/SK。 迁移时使用访问密钥即AK/SK(Access Key ID/Secret Access Key)进行鉴权认证。请在目的端帐号创建并获取AK/SK,具体操作请参见如何获取AK/SK?(账号)。 主机迁移服务 不支持使用企业联邦用户(虚拟IAM用户)的AK/SK进行鉴权认证。 源端服务器账号密码要求。 如果您的源端服务器非华为云的服务器,请您牢记源端服务器账号密码。迁移服务器后,在目的端服务器安装一键式重置密码插件时,如果您知晓源端服务器账号密码,操作将较为简便,否则操作将较为复杂。 帐号余额不少于100元(充值、代金券皆可)。 建议您目的端账户余额不少于100元(充值、代金券皆可),避免迁移过程中欠费,导致迁移失败。 主机迁移 服务本身免费,但迁移过程中会创建按量付费资源并产生少量费用,具体费用请参见计费说明。 操作系统要求。 主机迁移服务支持迁移的源端服务器操作系统列表请参见Windows兼容性列表、Linux兼容性列表。 目的端服务器的操作系统类型需要和源端的OS类型(指Linux或Windows类型)保持一致。 迁移网络要求。 源端能连接到华为云API Gateway(安全组放通端口:443),具体操作请参见源端能连接到API Gateway。具体操作请参见配置安全组。 源端出网方向端口,建议全部开放。 源端能连接到目的端。具体操作请参见源端能连接到目的端。 本例使用弹性公网IP连接,源端和目的端均需要提前购买和配置正确的弹性公网IP。其中,目的端云耀云服务器L实例在创建后已经默认分配一个固定弹性公网IP。 目的端服务器所属安全组需要开放入方向端口: Windows系统需要开放TCP的8899端口、8900端口和22端口。 Linux系统文件级迁移开放22端口,块级迁移开放8900端口、22端口。 具体操作请参见配置安全组。 以上端口,建议只对源端服务器开放。 防火墙开放端口与操作系统开放端口保持一致。 源端服务器环境、剩余空间及其他要求。 源端服务器剩余空间要求: Windows:当分区大于等于600MB,该分区的可用空间小于320MB时不能迁移;当分区小于600MB,该分区的空间小于40MB时不能迁移。 Linux:根分区可用空间小于200MB时不能迁移。 源端服务器环境要求: 源端服务器时间与标准时间一致,避免源端Agent注册失败。 当源端服务器为Linux系统时,执行rsync -v查看是否安装Rsync库。 当未安装Rsync库,执行如下命令安装Rsync库: CentOS:执行yum -y install rsync。 Ubuntu:执行apt-get -y install rsync。 Debian:执行apt-get -y install rsync。 SUSE:执行zypper install rsync。 其他平台系统:参见官网安装相关文档。 当前主流服务器系统已默认安装Rsync库,无需手动安装。
  • 步骤一:在源端待迁移服务器安装并启动SMS-Agent 如果源端是linux系统,请参考安装Linux版的SMS-Agent。 如果源端是windows机器,请参考安装Windows版的SMS-Agent。 常见问题 在Linux源端待迁移服务器安装SMS-Agent时,如果出现rsync未安装的错误提示,请根据安装Rsync库先安装rsync,再重新安装SMS-Agent。 当出现如下错误提示时,请检查访问密钥是否输入正确,或者是否删除了访问密钥。 图1 错误提示 图2 访问密钥
  • 资源和成本规划 资源 数据规划 说明 成本 源端服务器 服务器名称:source-server 操作系统:CentOS 7.9 源端服务器可以是华为云服务器,也可以是其他云平台或线下物理服务器。 如果您的源端服务器未配置弹性公网IP,需要购买弹性公网IP,此时涉及费用。 目的端服务器 服务器名称:destination_server 操作系统: Huawei Cloud EulerOS 2.0 目的端服务器为华为云耀云服务器L实例。 云耀云服务器L实例需付费购买。 SMS服务 - SMS服务为您免费提供服务器迁移服务。 主机迁移服务本身免费,但迁移过程中会创建按量付费资源(包括云硬盘、云硬盘快照、流量)并产生少量费用,具体费用请参见计费说明。
  • 操作流程 操作步骤 说明 准备工作 使用SMS服务前,请准备好帐号、权限及源端、目的端服务器环境,以确保顺利完成迁移。 步骤一:在源端待迁移服务器安装并启动SMS-Agent 您需要在源端服务器上安装迁移Agent并且输入目的端云耀云服务器L实例所在华为帐号的AK/SK。迁移Agent启动成功后会收集源端服务器信息并自动发送给主机迁移服务。 步骤二:在华为云SMS控制台设置目的端迁移配置 迁移前,您需要设置目的端服务器,该目的端用来接收源端的数据。 步骤三:开始迁移服务器 将源端服务器所有数据都复制到目的端,复制速度取决源端服务器出网带宽和目的端服务器入网带宽(两者取较小者)。 步骤四:查看并检查迁移结果 查看源端服务器是否迁移成功,并安装一键式重置密码插件和主机安全Agent。 步骤五:制作并切换镜像 通过制作并切换镜像,可更改云耀云服务器L实例控制台镜像名称,并且在云耀云服务器L实例重装系统时,避免回退至原操作系统。
  • 操作步骤 登录pEDA-Schematic并进入首页。 在“主页”中的“服务”区域,单击“原理图格式转换”。 图1 原理图格式转换入口 在“原理图格式转换”页面,选择“元件转换”页签。 在“元件转换”页面,“原文件格式”选择“Altium Designer(.SchLib)”,“目标格式文件”选择“pEDA原理图工程(.zip)”。 图2 选择转换格式 单击“添加文件”,添加本地需要转换的Altium Designer元件文件,可同时选择并添加多个文件。 若需要删除已上传的待转换文件,可单击文件列表后的,单个删除文件。也可单击“添加文件”后的清空文件列表。 图3 待转换文件管理 单击“开始转换”,系统自动开始转换文件。转换完成后,文件列表可查看转换结果。 文件列表的文件名称显示为绿色,则表示文件转换成功。 文件列表的文件名称显示为红色,则表示文件转换失败。鼠标悬浮在转换失败文件所在的行,提示转换失败的原因,可参考Altium Designer格式转换失败原因说明排查失败详细原因。 图4 格式转换结果 (可选)若有文件转换失败,可单击“重新转换”,重新进行失败文件的转换。 单击“下载转换文件”,下载转换后的文件到本地。 下载到本地的转换文件,需要解压得到元件的json文件后才能导入pEDA-Schematic。
  • 不支持的图元类型 原理图格式转换不支持的Altium Designer图元如表2所示。 表2 不支持的图元 Altium Designer图元(标签) 图元(标签)含义 说明 Pin Symbol 引脚Symbol pEDA-Schematic暂不支持转换引脚Symbol。 Besier 贝塞尔曲线 pEDA-Schematic暂不支持转换贝塞尔曲线。 Ellipse 椭圆 pEDA-Schematic暂不支持转换椭圆,在格式转换过程中遇到Altium Designer中用椭圆图元绘制的圆形的情况,会特殊处理转换为圆形。 Piechart 饼状图 pEDA-Schematic暂不支持转换饼状图。 Round rectangle 圆角矩形 pEDA-Schematic暂不支持转换圆角矩形。 Elliptical arc 椭圆弧 pEDA-Schematic暂不支持转换椭圆弧,在格式转换过程中遇到Altium Designer中用椭圆弧图元绘制的圆弧的情况,会特殊处理转换为圆弧。 NoERC 无电气检查 pEDA-Schematic暂不支持转换无电气检查符号。 Net label 网络标签 pEDA-Schematic不支持直接转换网络标签,转换时做了特殊处理,处理成了导线或者总线的名称。 Image 图片 pEDA-Schematic暂不支持转换图片。 Sheet name and file name 图页名和文件名 pEDA-Schematic不支持直接转换图页名和文件名,转换时做了特殊处理,处理成了属性。 Warning sign 警告标识 pEDA-Schematic暂不支持警告标识。 Implementation list 占用空间、仿真模型、PCB3D模型或Ibis模型列表 pEDA-Schematic暂不支持Implementation list。 Implementation 占用空间、仿真模型、PCB3D模型或Ibis模型 pEDA-Schematic暂不支持Implementation。 Children of Sheet 图页的子节点,图页边框、图页名称、文件名称等 pEDA-Schematic暂不支持Children of Sheet。 Hyperlink 超链接 pEDA-Schematic暂不支持超链接。 Template 图纸模板 pEDA-Schematic暂不支持直接转换图纸模板,当Altium Designer原理图中存在图纸时,处理成增加一个A3大小的图框。
  • 支持的图元类型 原理图格式转换支持的Altium Designer图元如表1所示。 表1 支持的图元 Altium Designer图元(标签) Altium Designer图元(标签)含义 对应pEDA-Schematic图元 Altium Designer图元样式 转换为pEDA-Schematic后的图元样式 说明 Component 器件 Symbol - Pin 引脚 引脚 - Polyline 多段折线 折线 pEDA-Schematic的多线段是用折线来绘制的 Polygon 多边形 多边形 - Arc 圆弧 圆弧 - Line 线段 折线 - Rectangle 矩形 矩形 - Sheet symbol 图表符 CBB顶层Symbol 转换完成后,在pEDA-Schematic会生成CBB顶层Symbol。 Sheet entry 图纸入口 CBB的引脚 转换完成后,在pEDA-Schematic会生成CBB顶层Symbol引脚。 Power Port 电源端口 特殊符号 - Port 端口 特殊符号 - Bus 总线 总线 - Wire 导线 导线 - Text frame 文本框 文本框 - Designator 位号 位号 格式转换完成后,位号显示在pEDA-Schematic编辑器右侧属性面板的“REFDES”属性。 Bus entry 总线接入 总线和导线的连接 pEDA-Schematic没有单独的图元,在绘制总线和导线连接时自动生成 Parameter 参数 属性 格式转换完成后,参数显示在pEDA-Schematic编辑器右侧属性面板。 Junction 结点 结点 - Sheet 原理图 图页 - - - Label 标签 Name属性 - - 格式转换完成后,标签显示在pEDA-Schematic编辑器右侧属性面板的“Name”属性。
  • 操作步骤 登录pEDA-Schematic并进入首页。 在“主页”中的“服务”区域,单击“原理图格式转换”。 图1 原理图格式转换入口 在“原理图格式转换”页面,选择“工程转换”页签。 在“工程转换”页面,“原文件格式”选择“Altium Designer(.zip)”,“目标格式文件”选择“pEDA原理图工程(.zip)”。 图2 选择转换格式 单击“添加文件”,添加本地需要转换的Altium Designer工程文件,可同时选择并添加多个文件。 若需要删除已上传的待转换文件,可单击文件列表后的,单个删除文件。也可单击“添加文件”后的清空文件列表。 图3 待转换文件管理 单击“开始转换”,系统自动开始转换文件。转换完成后,文件列表可查看转换结果。 文件列表的文件名称显示为绿色,则表示文件转换成功。 文件列表的文件名称显示为红色,则表示文件转换失败。鼠标悬浮在转换失败文件所在的行,提示转换失败的原因,可参考Altium Designer格式转换失败原因说明排查失败详细原因。 图4 格式转换结果 (可选)若有文件转换失败,可单击“重新转换”,重新进行失败文件的转换。 单击“下载转换文件”,下载转换后的文件到本地。 下载到本地的转换文件,需要解压得到工程的zip压缩包后才能导入pEDA-Schematic。
  • Altium Designer格式转换失败原因说明 Altium Designer格式转换失败原因如表1所示。 表1 Altium Designer格式转换失败原因说明 失败原因 说明 文件大小超出限制 文件校验失败,单次上传的文件大小超出了限制,最大限制为15M。 无效参数 请求参数校验失败,接口参数传参错误。 无效后缀 文件校验失败,上传的文件后缀错误。需根据转换的资源类型上传对应后缀的文件,例如:AD原理图转换上传的文件为zip文件,AD元件库转换上传的文件为SchLib文件。 文件类型不正确 文件校验失败,上传的文件中至少存在一个不满足后缀要求的文件。 未授权访问资源 用户无权限。 单次转换最大文件数为10个 文件校验失败,单次上传的文件数量超出了限制,最大数量为10个。 文件内容为空 文件校验失败,上传的文件中至少存在一个空文件。 服务繁忙,请稍后再试 资源池满,请稍后重试。 zip包中的文件数量超过了限制 文件校验失败,上传的zip包中的文件数量超过了限制,最大限制为100个。 文件结构不完整,无法转换 文件校验失败,压缩包中文件缺失,请确认压缩包中是否存在.SchDoc和.PrjPcb后缀文件。 父主题: 格式转换说明
  • Altium Designer原理图工程文件限制 仅支持转换单board类型的原理图工程。 仅支持的上传文件类型为zip的压缩文件进行转换,支持单次上传的压缩文件数量不超过10个,单次转换任务文件总大小不超过15M。 转换的原理图工程压缩文件中必须包含 .PrjPcb和.SchDoc两种后缀的文件,其中.PrjPcb原理图文件必须存在,.SchDoc文件至少存在一个,否则会导致转换失败。 图1 TopLevelDocument转换文件要求
  • 不支持转换的BusEntry pEDA-Schematic格式转换只支持转换默认状态下的BusEntry,用户自定义修改后的BusEntry不支持转换,如图113号位置的BusEntry不支持转换。 图11 用户自定义BusEntry pEDA-Schematic的BusEntry只支持水平左右方向和垂直上下方向,在Altium Designer中位于端点位置的BusEntry,如图12所示不支持转换。 转换为pEDA-Schematic后导线和总线会断开,如图13所示,N0这段导线与总线断开。 图12 BusEntry位于端点位置 图13 BusEntry位于端点位置转换后 当Altium Designer中BusEntry与斜总线相连时,如图14所示不支持转换。 转换为pEDA-Schematic后导线和总线会断开,如图15所示。 图14 与斜总线连接的BusEntry 图15 与斜总线连接的BusEntry转换后 当Altium Designer中BusEntry与器件的引脚直接连接且中间没有导线时,如图16所示不支持转换,转换后的样式如图17所示。 图16 BusEntry与器件的引脚直接连接 图17 BusEntry与器件的引脚直接连接转换后
  • 导线与总线连接处的BusEntry差异 Altium Designer中的BusEntry,是一条用户可以自定义长度和方向的线段,如图9所示。 Altium Designer的BusEntry格式转换为pEDA-Schematic后,表现形式为一个大小固定的菱形且方向只有水平左右方向和垂直上下方向,如图10所示。 图9 Altium Designer中的BusEntry 图10 pEDA-Schematic中的BusEntry
  • 约束与限制 Pod互访限速设置需遵循以下约束: 约束类别 容器隧道网络模式 VPC网络模式 云原生2.0网络模式 支持的版本 所有版本都支持 v1.19.10以上集群版本 v1.19.10以上集群版本 支持的运行时类型 仅支持普通容器 支持的Pod类型 仅支持非HostNetwork类型Pod 支持的场景 支持Pod间互访、Pod访问Node、Pod访问Service的场景限速 限制的场景 无 无 不支持Pod访问100.64.0.0/10和214.0.0.0/8外部云服务网段的限速场景 不支持健康检查的流量限速场景 限速值取值范围 只支持单位M或G的限速配置,如100M,1G;最小取值1M,最大取值4.29G。
  • 操作步骤 编辑工作负载yaml文件。 vi deployment.yaml 根据需要在spec.template.metadata.annotations中设置工作负载实例的网络带宽,限制容器的网络流量,网络带宽限制字段详解请参见表1。 未设置默认不限制。 示例如下: apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx strategy: type: RollingUpdate template: metadata: labels: app: nginx annotations: # 入方向网络带宽 kubernetes.io/ingress-bandwidth: 100M # 出方向网络带宽 kubernetes.io/egress-bandwidth: 1G spec: containers: - image: nginx imagePullPolicy: Always name: nginx imagePullSecrets: - name: default-secret 表1 工作负载实例网络带宽限制字段详解 字段名称 字段说明 必选/可选 kubernetes.io/ingress-bandwidth 工作负载实例入方向网络带宽 取值范围:1k-1P,带宽如果设置大于32G,实际带宽将等于32G 可选 kubernetes.io/egress-bandwidth 工作负载实例出方向网络带宽 取值范围:1k-1P,带宽如果设置大于32G,实际带宽将等于32G 可选 创建工作负载。 kubectl create -f deployment.yaml 命令行终端显示如下类似信息: deployment.apps/nginx created
  • 操作场景 本文使用Wordpress应用为例,将自建Kubernetes集群中应用整体迁移到CCE集群。Wordpress应用包含Wordpress和MySQL两个组件,均为容器化实例,分别绑定了两个Local类型的本地存储卷,并通过NodePort服务对外提供访问。 迁移前通过浏览器访问Wordpress站点,创建站点名称为“Migrate to CCE”,并发布一篇文章用于验证迁移后PV数据的完整性。Wordpress中发布的文章会被存储在MySQL数据库的“wp_posts”表中,若迁移成功,数据库中的内容也将会被全量搬迁至新集群,可依此进行PV数据迁移校验。
  • 目标集群应用恢复 由于自建集群与后端的存储基础设施不同,集群迁移后会遇到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语句查看应用恢复情况。 恢复完成后查看应用实例是否正常运行,可能存在其他的更新适配问题,请参考资源更新适配中的步骤排查解决。
  • 前提条件 请在迁移前提前清理原集群中异常的Pod资源。当Pod状态异常但是又挂载了PVC的资源时,在集群迁移后,PVC状态会处于pending状态。 请确保CCE侧集群中没有与被迁移集群侧相同的资源,因为Velero工具在检测到相同资源时,默认不进行恢复。 为确保集群迁移后容器镜像资源可以正常拉取,请将镜像资源迁移至 容器镜像服务 (SWR)。 CCE不支持ReadWriteMany的云硬盘存储,在原集群中存在该类型资源时,需要先修改为ReadWriteOnce。 Velero集成Restic工具对存储卷进行备份还原,当前不支持HostPath类型的存储卷,详情请参见Restic限制。若您需备份该类型的存储卷,请参考无法备份HostPath类型存储卷将HostPath类型替换为Local类型。当备份任务中存在HostPath类型的存储,该类型存储卷将会被自动跳过并产生Warning信息,并不会导致备份失败。
  • 数据库与存储迁移(按需) 您可根据实际生产需求,选择是否使用云数据库服务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
  • 备份工具资源分配不足 在生产环境中,当备份资源较多时,如备份工具资源大小使用默认值,可能会出现资源分配不足的情况,请参考以下步骤调整分配给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-restic \ --restic-pod-cpu-request 500m \ --restic-pod-mem-request 1Gi \ --restic-pod-cpu-limit 1000m \ --restic-pod-mem-limit 1Gi 安装Velero后: 编辑命名空间velero下Velero和Restic工作负载的YAML文件。 kubectl edit deploy velero -n velero kubectl edit deploy restic -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
  • 关闭default的serviceaccount的token自动挂载功能 kubernetes默认会给每个工作负载实例关联default服务账号,即在容器内挂载一个token,该token能够通过kube-apiserver和kubelet组件的认证。在没有开启RBAC的集群,得到该token相当于是得到了整个CCE集群的控制权。在开启RBAC的集群,该token所拥有的权限,取决于环境管理员给这个服务账号关联了什么角色。该服务账号的token一般是给需要访问kube-apiserver的容器使用,如CoreDNS、autoscaler、prometheus等。对于不需要访问kube-apiserver的工作负载,建议关闭服务账号的自动关联功能。 禁用方法: 方法一:将服务账号的automountServiceAccountToken字段设置为false。完成设置后,创建的工作负载将不会默认关联default服务账号。注意:每个命名空间都要按需设置。 apiVersion: v1 kind: ServiceAccount metadata: name: default automountServiceAccountToken: false ... 当工作负载需要关联服务账号时,在工作负载的yaml描述文件中显式地指定。 ... spec: template: spec: serviceAccountName: default automountServiceAccountToken: true ... 方法二:显式地关闭工作负载自动关联服务账号的功能。 ... spec: template: spec: automountServiceAccountToken: false ...
  • 使用最新版本的CCE集群 Kubernetes社区一般4个月左右发布一个大版本,CCE的版本发布频率跟随社区版本发布节奏,在社区发布Kubernetes版本后3个月左右同步发布新的CCE版本,例如Kubernetes v1.19于2020年9月发布后,CCE于2021年3月左右发布CCE v1.19版本。 最新版本的集群修复了已知的漏洞或者拥有更完善的安全防护机制,新建集群时推荐选择使用最新版本的集群。在集群版本停止提供服务前,请及时升级到新版本。
  • kubelet开启Webhook鉴权模式 v1.15.6-r1及之前版本的CCE集群涉及。v1.15.6-r1之后的版本不涉及。 将CCE集群版本升级至1.13或1.15版本,并开启集群RBAC能力,如果版本已经是1.13或以上版本,则无需升级。 创建节点时可通过postInstall文件注入的方式开启kubelet的鉴权模式(设置kubelet的启动参数:--authorization-node=Webhook),步骤如下: 创建clusterrolebinding,执行命令: kubectl create clusterrolebinding kube-apiserver-kubelet-admin --clusterrole=system:kubelet-api-admin --user=system:kube-apiserver 已创建的节点,需要登录到节点更改kubelet的鉴权模式,更改节点上/var/paas/kubernetes/kubelet/kubelet_config.yaml里的authorization mode为Webhook,然后重启kubelet,执行如下命令: sed -i s/AlwaysAllow/Webhook/g /var/paas/kubernetes/kubelet/kubelet_config.yaml; systemctl restart kubelet 新创建的节点,在创建节点的安装后执行脚本里加入以下命令去后置修改kubelet的权限模式: sed -i s/AlwaysAllow/Webhook/g /var/paas/kubernetes/kubelet/kubelet_config.yaml; systemctl restart kubelet
  • 合理配置用户的集群访问权限 CCE支持账号创建多个IAM用户。通过创建不同的用户组,并授予不同用户组不同的访问权限,然后在创建用户时将用户加入对应权限的用户组中,即可完成控制不同用户具备不同的区域(region)、是否只读的权限。同时也支持为用户或者用户组配置命名空间级别的权限。考虑到安全,建议最小化用户的访问权限。 如果主账号下需要配置多个IAM用户,应合理配置子用户和命名空间的权限。 配置集群权限请参考集群权限(IAM授权)。 设置命名空间权限请参考命名空间权限(Kubernetes RBAC授权)。
  • 配置验证 使用IAM用户user-example连接集群,查看Pod,发现可以查看。 # kubectl get pod NAME READY STATUS RESTARTS AGE nginx-658dff48ff-7rkph 1/1 Running 0 4d9h nginx-658dff48ff-njdhj 1/1 Running 0 4d9h # kubectl get pod nginx-658dff48ff-7rkph NAME READY STATUS RESTARTS AGE nginx-658dff48ff-7rkph 1/1 Running 0 4d9h
  • 解决方案 Kubernetes提供一套RBAC授权机制,可以非常方便的实现命名空间内容资源的权限控制。 Role:角色,其实是定义一组对Kubernetes资源(命名空间级别)的访问规则。 RoleBinding:角色绑定,定义了用户和角色的关系。 ClusterRole:集群角色,其实是定义一组对Kubernetes资源(集群级别,包含全部命名空间)的访问规则。 ClusterRoleBinding:集群角色绑定,定义了用户和集群角色的关系。 Role和ClusterRole指定了可以对哪些资源做哪些动作,RoleBinding和ClusterRoleBinding将角色绑定到特定的用户、用户组或ServiceAccount上。如下图所示。 图1 角色绑定 上图中的用户在CCE中可以是IAM用户或用户组,通过这样的绑定设置,就可以非常方便的实现命名空间内容资源的权限控制。 下面将通过给一个IAM用户user-example配置查看Pod的权限(该用户只有查看Pod的权限,没有其他权限),演示Kubernetes RBAC授权方法。
  • 创建集群 使用账号登录CCE,并创建一个集群。 注意不要使用IAM用户user-example创建集群,因为CCE会自动为创建集群的用户添加该集群所有命名空间cluster-admin权限,也就是说该用户允许对集群以及所有命名空间中的全部资源进行完全控制。 使用IAM用户user-example登录CCE控制台,在集群中下载kubectl配置文件并连接集群,执行命令获取Pod信息,可以看到没有相关权限,同样也无查看其它资源的权限。这说明user-example这个IAM用户没有操作Kubernetes资源的权限。 # kubectl get pod Error from server (Forbidden): pods is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "pods" in API group "" in the namespace "default" # kubectl get deploy Error from server (Forbidden): deployments.apps is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "deployments" in API group "apps" in the namespace "default"
  • 创建IAM用户和用户组 使用账号登录IAM,在IAM中创建一个名为user-example的IAM用户和名为cce-role-group的用户组,如下所示。创建IAM用户和用户组的具体步骤请参见创建IAM用户和创建用户组。 创建后给cce-role-group用户组授予CCE FullAccess权限,如下所示。给用户组授权的方法具体请参见给用户组授权。 CCE FullAccess拥有集群操作相关权限(包括创建集群等),但是没有操作Kubernetes资源的权限(如查看Pod)。
共100000条