华为云用户手册

  • 同Region U CS 华为云集群迁移流程 在同一地理区域内的华为云UCS管理的Kubernetes集群间进行迁移,实现资源优化、应用升级或其他管理需求。迁移流程如图1所示。 图1 迁移流程 主要包含四个步骤: 集群评估 在这个阶段,您将根据源集群的现状来评估适合迁移的目标集群类型。UCS的kspider工具能够自动收集源集群的信息,包括Kubernetes版本、规模、工作负载、存储等数据,并根据收集到的数据为您提供推荐的目标集群信息。具体请参见集群评估。 存储迁移 在这个阶段,您将把云硬盘的数据迁移到目标AZ。具体请参见存储迁移。 应用备份 在这个阶段,您将对源AZ集群中的应用进行备份。UCS的k8clone工具可以自动收集Kubernetes元数据,并将其以压缩包的形式保存到本地,从而实现集群中应用的备份。具体请参见应用备份。 应用迁移 在这个阶段,您将利用备份数据恢复的方法,将源AZ集群中的应用迁移到目标AZ集群。具体请参见应用迁移。 父主题: 同Region UCS华为云集群迁移
  • 不同Region UCS华为云集群迁移流程 在华为云UCS管理的Kubernetes集群间进行迁移,将应用程序从一个地理区域迁移到另一个地理区域,以满足数据合规性、延迟和可用性等需求。迁移流程如图1所示。 图1 迁移流程 主要包含四个步骤: 集群评估 在这个阶段,您将根据源集群的现状来评估适合迁移的目标集群类型。UCS的kspider工具能够自动收集源集群的信息,包括Kubernetes版本、规模、工作负载、存储等数据,并根据收集到的数据为您提供推荐的目标集群信息。具体请参见集群评估。 数据迁移 在这个阶段,您将把镜像和相关依赖服务的数据迁移到目标Region。镜像的跨区域迁移可以使用 容器镜像服务 SWR的“镜像同步”功能。 对于依赖服务的数据迁移,您可以查看华为云对应云产品的跨区域迁移指导来完成。具体请参见数据迁移。 应用备份 在这个阶段,您将对源Region集群中的应用进行备份。UCS的k8clone工具可以自动收集Kubernetes元数据,并将其以压缩包的形式保存到本地,从而实现集群中应用的备份。具体请参见应用备份。 应用迁移 在这个阶段,您将利用备份数据恢复的方法,将源Region集群中的应用迁移到目标Region集群。具体请参见应用迁移。 父主题: 不同Region UCS华为云集群迁移
  • 创建策略实例 登录UCS控制台,在左侧导航栏中选择“策略中心”。 在列表中找到已启用策略中心功能的容器舰队或集群,单击“创建策略实例”。 填写如下参数: 图1 创建策略实例 策略定义:从内置的33个策略定义中选择一个,以便为您的集群或容器舰队配置资源审计规则。尽管当前不支持自定义策略定义,但这些预定义的策略定义基本可以满足您在合规性和安全性方面的需求。策略定义的详细介绍请参阅策略定义库概述。 策略执行方式:包括拦截和告警两种方式。拦截表示不符合策略要求的资源将无法创建,告警表示不符合策略要求的资源仅告警提醒,仍可以正常创建。 策略生效范围:选择生效的命名空间。 单击“创建”,创建完成后系统会自动分发策略,如果分发成功,策略实例将在集群中生效。 策略实例分发成功后可在集群中执行符合策略实例的动作,此时该动作可正常执行;若在集群中执行不符合策略实例的动作,该动作将被拒绝掉或者上报告警事件。
  • 修改/删除策略实例 作为平台工程师,您通常需要定期审视和更新策略实例,或者删除一些不再使用的策略实例。要执行这些操作,请参考以下步骤: 登录UCS控制台,在左侧导航栏中选择“策略中心”。 在列表中找到已启用策略中心功能的容器舰队或集群,单击舰队或集群名称,进入详情页面。 在“策略实施详情”中单击“策略实例”页签。 找到待操作的策略实例,单击操作列的“编辑”或“删除”,完成相关参数的修改,或者删除策略实例。
  • 查看策略实施状态 在容器舰队或集群的策略详情页,可以查看策略实施详情和状态,以及舰队或集群的不合规资源、告警事件和强制拦截事件的情况。您可以根据这些数据评估集群的合规情况,并及时采取修复措施。 图2 策略实施详情 当前,不合规资源统计的上报时间大约在15至30分钟之间。 如果下发策略实例后未对违规资源进行拦截或告警,请检查是否已开启ValidatingAdmissionPolicy特性门控、是否已启用ValidatingAdmissionWebhook和MutatingAdmissionWebhook准入控制器,详情请参考准入控制器的作用是什么?
  • 符合策略实例的资源定义 示例中sysctls的name符合策略实例。 apiVersion: v1kind: Podmetadata: name: nginx-forbidden-sysctls-disallowed labels: app: nginx-forbidden-sysctlsspec: containers: - name: nginx image: nginx securityContext: sysctls: - name: net.core.somaxconn value: "1024"
  • 策略实例示例 以下策略实例展示了策略定义生效的资源类型,parameters中的forbiddenSysctls定义了sysctls中不能允许的名称。 apiVersion: constraints.gatekeeper.sh/v1beta1kind: K8sPSPForbiddenSysctlsmetadata: name: psp-forbidden-sysctlsspec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: forbiddenSysctls: # - "*" # * may be used to forbid all sysctls - kernel.*
  • 不符合策略实例的资源定义 示例中sysctls的name(kernel.msgmax)不符合策略实例。 apiVersion: v1kind: Podmetadata: name: nginx-forbidden-sysctls-disallowed labels: app: nginx-forbidden-sysctlsspec: containers: - name: nginx image: nginx securityContext: sysctls: - name: kernel.msgmax value: "65536" - name: net.core.somaxconn value: "1024"
  • 基本信息 策略类型:安全 推荐级别:L3 生效资源类型:Pod 参数: exemptImages: 字符串数组runAsUser: rule: 字符串 ranges: - min: 整型 max: 整型runAsGroup: rule: 字符串 ranges: - min: 整型 max: 整型supplementalGroups: rule: 字符串 ranges: - min: 整型 max: 整型fsGroup: rule: 字符串 ranges: - min: 整型 max: 整型
  • 不符合策略实例的资源定义 示例中runAsUser等参数不在范围内,不符合策略实例。 apiVersion: v1kind: Podmetadata: name: nginx-users-disallowed labels: app: nginx-usersspec: securityContext: supplementalGroups: - 250 fsGroup: 250 containers: - name: nginx image: nginx securityContext: runAsUser: 250 runAsGroup: 250
  • 符合策略实例的资源定义 示例中runAsUser等参数均在范围内,符合策略实例。 apiVersion: v1kind: Podmetadata: name: nginx-users-allowed labels: app: nginx-usersspec: securityContext: supplementalGroups: - 199 fsGroup: 199 containers: - name: nginx image: nginx securityContext: runAsUser: 199 runAsGroup: 199
  • 策略实例示例 以下策略实例展示了策略定义生效的资源类型,parameters中定义了对runAsUser、runAsGroup、supplementalGroups和fsGroup等字段的约束。 apiVersion: constraints.gatekeeper.sh/v1beta1kind: K8sPSPAllowedUsersmetadata: name: psp-pods-allowed-user-rangesspec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: runAsUser: rule: MustRunAs # MustRunAsNonRoot # RunAsAny ranges: - min: 100 max: 200 runAsGroup: rule: MustRunAs # MayRunAs # RunAsAny ranges: - min: 100 max: 200 supplementalGroups: rule: MustRunAs # MayRunAs # RunAsAny ranges: - min: 100 max: 200 fsGroup: rule: MustRunAs # MayRunAs # RunAsAny ranges: - min: 100 max: 200
  • 通过控制台配置调度策略 登录UCS控制台,进入集群联邦页面。 在创建工作负载时,在“高级配置”中找到“调度策略”。 表1 节点亲和性设置 参数名 参数描述 必须满足 即硬约束,设置必须要满足的条件,对应于requiredDuringSchedulingIgnoredDuringExecution,多条规则间是一种“或”的关系,即只需要满足一条规则即会进行调度。 尽量满足 即软约束,设置尽量满足的条件,对应于preferredDuringSchedulingIgnoredDuringExecution,无论是满足其中一条或者是都不满足都会进行调度。 在“节点亲和性”、“工作负载亲和性”、“工作负载反亲和性”下单击添加调度策略。 表2 调度策略设置 参数名 参数描述 标签名 对应节点的标签,可以使用默认的标签也可以用户自定义标签。 操作符 可以设置六种匹配关系(In, NotIn, Exists, DoesNotExist. Gt, and Lt)。 In:是否在标签值的列表中 NotIn:是否不在标签值的列表中 Exists:某个标签存在 DoesNotExist:某个标签不存在 Gt:标签的值大于某个值(字符串比较) Lt:标签的值小于某个值(字符串比较) 标签值 请填写标签值。 命名空间 仅支持在工作负载亲和/工作负载反亲和调度策略中使用。 指定调度策略生效的命名空间。 拓扑域 仅支持在工作负载亲和/工作负载反亲和调度策略中使用。 先圈定拓扑域(topologyKey)指定的范围,然后再选择策略定义的内容。 权重 仅支持在“尽量满足”策略中添加。
  • 通过Kubectl命令创建MCS对象 使用kubectl连接集群联邦,详细操作请参见使用kubectl连接集群联邦。 创建并编辑 mcs.yaml 文件,文件内容定义如下所示,参数定义请参见表1。 vi mcs.yaml 示例YAML定义的MCS对象关联了名为foo的Service,支持在cluster A中访问到部署在cluster B中的该Service。 apiVersion: networking.karmada.io/v1alpha1 kind: MultiClusterService metadata: name: foo # MCS对象名称 namespace: default # MCS对象所在命名空间名称spec: types: - CrossCluster # 类型为集群间服务发现 providerClusters: # Service的下发集群 - name: clusterB consumerClusters: # Service的访问集群 - name: clusterA 表1 关键参数说明 参数 是否必填 参数类型 描述 metadata.name 是 String MCS对象的名称,应与关联Service保持一致。 metadata.namespace 否 String MCS对象所在命名空间名称,应与关联Service所在命名空间名称保持一致。不填则默认为default。 spec.types 是 String 流量方向,实现集群间服务发现能力应配置为CrossCluster。 spec.providerClusters.name 否 String Service的下发集群名称,应配置为Service的部署集群。不填则默认将Service下发至集群联邦内所有集群。 注意: 若Service部署在cluster B,但在下发集群中配置了cluster A与cluster B,则该Service会同时下发至cluster A与cluster B,覆盖A中的原同名Service。 spec.consumerClusters.name 否 String Service的访问集群名称,应配置为期望通过MCS实现跨集群访问Service的集群名称。不填则默认设置为所有集群联邦内集群可访问该Service。 执行如下命令创建MCS对象。 kubectl apply -f mcs.yaml 执行如下命令查看MCS对象的状态。其中foo为MCS对象的名称。 kubectl describe mcs foo YAML文件中的status字段记录了MCS的状态,当status字段中出现如下内容时,表明Endpoint Slices下发并同步成功,集群间服务发现能力可用。 status: conditions: - lastTransitionTime: "2023-11-20T02:30:49Z" message: EndpointSlices are propagated to target clusters. reason: EndpointSliceAppliedSuccess status: "True" type: EndpointSliceApplied 创建完成后,可以执行如下命令操作MCS对象。其中foo为MCS对象的名称。 获取MCS对象:kubectl get mcs foo 更新MCS对象:kubectl edit mcs foo 删除MCS对象:kubectl delete mcs foo 若MCS实例删除状态异常,一直显示“删除中”,则异常实例需要强制删除并清理资源。具体操作请参见MCS/MCI实例删除异常如何排查?
  • GitOps优势 简单易学:Git易于被开发者接受,易于集成,无需额外学习成本。 安全性高:开发者使用GitOps无需任何Kubernetes集群权限,仅需要Git仓库权限,保证集群安全可靠。 可靠性强:提供原生Kubernetes资源、Helm Chart资源、Kustomize等资源交付清单的版本管理,方便用户进行部署应用、增量变化和应用配置的回滚。 应用持续部署:Kubernetes集群和Git仓库中的应用状态自动同步,保持一致,实现应用持续部署。
  • 通过控制台YAML创建多集群服务(MCS) 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“服务与路由”,选择“多集群服务”页签。 在多集群服务页签,单击右上角“YAML创建”,弹出多集群服务(MCS)YAML创建界面。 当前数据选择YAML,在编辑栏进行编辑(根据实际需求调整配置参数): apiVersion: networking.karmada.io/v1alpha1kind: MultiClusterServicemetadata: name: mcs-24132 # MCS对象名称 namespace: default # MCS对象所在命名空间名称spec: types: - CrossCluster # 类型为集群间服务发现 providerClusters: - name: cluster-25043 # Service的下发集群 consumerClusters: - name: cluster-29544 # Service的访问集群 编辑完成后,单击右下角“确定”,完成多集群服务(MCS)创建。
  • 准备工作 部署工作负载与服务 MCS提供跨集群服务发现与访问能力,因此需要在集群联邦中提前部署可用的工作负载(Deployment)和服务(Service)。若您无可用工作负载和服务,请参考无状态负载和集群内访问(ClusterIP)创建。 设置集群网络 请参照设置集群网络对集群间网络互通进行检查与设置。 若创建MCS实例时,出现报错"policy doesn't allow 'get loadbalancer' to be performed."或"because no identity-based policy allows the xxx action.",表示当前委托权限还未生效,请等待片刻后重试即可,错误出现在事件中则无需关心。
  • GitOps实现方式 开发运维人员基于Git工作流,可将现有流程,从应用开发扩展到到部署、应用生命周期管理和基础架构配置,开箱即用,客户无须运维Gitops工具。 Gitops插件通过内置Kustomize结合Base/overlay制品组织方式和HelmRelease结合valuesFrom/valuesFiles等方式的能力,满足客户差异化的配置管理诉求。 将Git仓库中最新合入的制品配置信息同步部署至多个集群中,同时对应用发布行为进行版本化管理和权限控制,提供发布回滚和版本迭代控制,并进行审计跟踪。 所需的基础架构状态会自动应用于基础架构,而无需任何手动干预,持续监控并确保基础架构始终遵循Git存储库中的配置,确保基础设施处于理想状态。 图1 GitOps实现方式
  • 流水线发布流程 图1 流水线发布流程 流水线发布的流程如图1所示,具体步骤如下: 配置项目与扩展点。在该小节,您将会为应用开通新的流水线项目,并为该项目配置跨服务权限。 新建发布环境。在该小节,您将会为应用建立新的代码仓库,并配置环境信息以及关联的UCS集群舰队信息。 配置发布策略。在该小节,您将会根据预置的发布模板,配置应用的发布策略。 配置流水线及参数。在该小节,您将会对发布流程进行图形化编排,通过发布插件选择环境级别、发布环境以及产物地址。 发布舰队应用。在该小节,您将会通过流水线,结合上述步骤的调测、编排,实现从源码构建到舰队应用发布全流程的自动化体验。
  • GitOps概述 GitOps是使用Git仓库来管理应用的部署模板,将Git仓库作为Kubernetes集群中部署应用的唯一来源,实现应用的持续部署,实现多集群的GitOps持续交付,满足应用的高可用部署、系统组件多集群分发等需求。GitOps假设每一个基础设施都被表示为一个具有版本控制功能的存储系统中的文件,并且有一个自动化的过程可以无缝地将更改的应用同步到应用程序运行环境。 而结合Kubernetes生态中的声明式API、Controller Loop可以更好得实现这一思想,该系统从一开始就遵循声明性规范以及最终一致性和收敛性的原则。
  • 创建FederatedHPA策略 控制台创建 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 单击已开通集群联邦的容器舰队名称,进入容器舰队详情页面。 在左侧导航栏选择“负载伸缩”,在“指标伸缩策略”页签下,单击右上角的“创建指标伸缩策略”。 配置FederatedHPA策略参数。 表1 FederatedHPA策略参数配置 参数 参数说明 策略名称 FederatedHPA策略的名称。输入长度范围为4-63个字符。 命名空间 请选择需要自动扩缩的工作负载所在命名空间的名称。也可新建命名空间,具体操作请参见命名空间。 生效工作负载 请选择需要设置自动扩缩的工作负载的名称。也可新建工作负载,具体操作请参见工作负载。 实例范围 触发策略时,工作负载内Pod数量所能达到的最大值与最小值。 最小值:请输入1-299之间的正整数。 最大值:请输入1-1500之间的正整数,且填写值需大于实例范围最小值。 稳定窗口时长 稳定窗口时长内指标数据持续达到期待值,才会进行扩缩。默认扩容稳定窗口时长为0秒,缩容稳定窗口时长为300秒。稳定窗口时长的详细信息请参见如何保证负载伸缩的稳定性?。 扩容:请输入0-3600之间的正整数,单位为秒。 缩容:请输入0-3600之间的正整数,单位为秒。 系统规则 若您需要基于系统指标对工作负载进行扩缩,则需配置该规则。 指标:可选择“CPU利用率”或“内存利用率”。 期待值:指标数据达到期待值时,触发扩缩。 自定义规则 若您需要基于自定义指标对工作负载进行扩缩,则需配置该规则。 自定义指标名称:在下拉框中选择自定义指标的名称。 指标来源:在下拉框中选择自定义指标所描述的对象类型,目前仅支持“Pod”。 期待值:指标数据达到期待值时,触发扩缩。 注意: 自定义规则仅支持1.19及更高版本的集群创建。 使用自定义规则时,集群中需要安装支持采集自定义指标的插件,且工作负载需正常上报并采集自定义指标,详情请参见安装指标采集插件。 参数配置完成后,单击右下角“创建”,即可跳转指标伸缩策略列表查看策略详情,完成FederatedHPA策略创建。 命令行创建 使用kubectl连接集群联邦,具体操作请参见使用kubectl连接集群联邦。 创建并编辑fhpa.yaml文件,文件内容定义如下所示,关键参数定义请参见表2。 vi fhpa.yaml 本示例创建的FederatedHPA策略名称为hpa-example-hpa,作用于名称为hpa-example的工作负载,稳定窗口时长为扩容0秒、缩容300秒,最大Pod数为100、最小Pod数为2,包含两条系统指标规则(名称为“memory”和“cpu”)。其中,memory规则中内存利用率的期望值为50%,cpu规则中CPU利用率的期望值为60%。 apiVersion: autoscaling.karmada.io/v1alpha1 kind: FederatedHPAmetadata: name: hpa-example-hpa # FederatedHPA策略名称 namespace: default # 工作负载所在命名空间名称 spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: hpa-example # 工作负载名称 behavior: scaleDown: stabilizationWindowSeconds: 300 # 缩容的稳定窗口时长为300秒 scaleUp: stabilizationWindowSeconds: 0 # 扩容的稳定窗口时长为0秒 minReplicas: 2 # 最小Pod数为2 maxReplicas: 100 # 最大Pod数为100 metrics: - type: Resource resource: name: memory # 第一条规则名称 target: type: Utilization # 指标类型为利用率 averageUtilization: 50 # 期望的平均利用率 - type: Resource resource: name: cpu # 第二条规则名称 target: type: Utilization # 指标类型为利用率 averageUtilization: 60 # 期望的平均利用率 表2 关键参数说明 参数 是否必填 参数类型 描述 stabilizationWindowSeconds 否 String 缩容的稳定窗口时长,请输入0-3600之间的正整数,单位为秒,不定义时默认为300秒。 说明: 稳定窗口时长内指标数据持续达到期待值,才会进行扩缩。稳定窗口时长的详细信息请参见如何保证负载伸缩的稳定性?。 stabilizationWindowSeconds 否 String 扩容的稳定窗口时长,请输入0-3600之间的正整数,单位为秒,不定义时默认为0秒。 minReplicas 是 String 触发策略时,工作负载内Pod数量所能缩容到的最小值,请输入1-299之间的正整数。 maxReplicas 是 String 触发策略时,工作负载内Pod数量所能扩容到的最大值,请输入1-1500之间的正整数,且输入值需大于实例范围最小值。 name 是 String 规则名称。基于系统指标进行弹性伸缩时,基于内存利用率的规则名称为memory,基于CPU利用率的规则名称为cpu。 type 是 String 指标类型。 Value:总量 AverageValue:平均量 = 总量 / 当前Pod数 Utilization:利用率 = 平均量 / 申请量 averageUtilization 是 String 指标数据达到期待值时,触发扩缩。 执行如下命令创建FederatedHPA策略。 kubectl apply -f fhpa.yaml 回显如下表明创建成功。 FederatedHPA.autoscaling.karmada.io/hpa-example-hpa created 创建完成后,可以执行如下命令观察负载伸缩的运行效果。 检查工作负载的当前Pod数:kubectl get deployments 查看FederatedHPA策略事件(仅保留最近三条):kubectl describe federatedhpa hpa-example-hpa 可以执行如下命令管理FederatedHPA策略。其中hpa-example-hpa为FederatedHPA策略的名称,实际情况中需修改为自己所创建的策略名称。 获取FederatedHPA策略:kubectl get federatedhpa hpa-example-hpa 更新FederatedHPA策略:kubectl edit federatedhpa hpa-example-hpa 删除FederatedHPA策略:kubectl delete federatedhpa hpa-example-hpa
  • master节点与组件升级命令说明 本地集群用户可以通过最新版本的本地集群命令行工具ucs-ctl来进行集群升级,对于管理组件和管理节点的升级,命令如下: ./ucs-ctl upgrade cluster [cluster_name] [flags] 可以配置的flag如下: -a:节点的全量升级,默认情况下upgrade cluster只会升级管理面节点和服务组件,加上-a后则表示全量升级,包括升级所有的业务节点。 -y:默认同意所有请求。 -patch:升级补丁包。 -R:回滚选项。
  • 升级操作 登录UCS控制台,选择“容器舰队”或“未加入舰队的集群”内一个正在运行的低版本集群,单击右下方“升级集群”。 下载更新工具,请使用一台能连接集群的节点作为执行机,先使用如下命令下载新版本的集群管理工具: curl https://ucs-onprem.obs.XXXX.huawei.com/toolkits/ucs-ctl/ucs-ctl -o ucs-ctl && chmod +x ucs-ctl 升级master节点,这里可以使用-y命令来跳过所有选择项,其他可配置的flag请参照master节点与组件升级命令说明: ./ucs-ctl upgrade cluster [cluster name] 集群名称需要和创建本地集群时指定的名称一致,如果不确定名称可进集群内,使用命令查看: ./ucs-ctl get cluster node节点升级,node节点升级可以选择两种升级方式: 全量升级,全量升级指的是将集群内剩余节点全部升级,命令如下: ./ucs-ctl upgrade node -a -c [cluster name] 分批次部分升级,为了防止升级过程出现业务中断的情况,用户也可以选择分批次部分升级节点,此时需要手动选择节点。 ./ucs-ctl upgrade node -n [node ip] -c [cluster name] 特殊情况:若本地集群目前只有master节点,无node节点,此时仅提供master节点的升级命令。 其他可配置的flag请参照node节点升级命令说明。
  • node节点升级命令说明 对于常规业务节点的升级,命令如下: ./ucs-ctl upgrade node [flags] -c [cluster_name] 其中必须指定集群名称,即加上`-c [cluster_name]`这个flag。 可以配置的flag如下: -a:节点的全量升级。 -y:默认同意所有请求。 -c:指定集群名称。 -r:回滚选项。 -n:指定节点IP。 -f:指定节点配置文件。
  • 删除命名空间 在UCS控制台删除命名空间将会级联删除各个集群中的同名命名空间,并删除该命名空间相关的所有数据资源,请谨慎操作。 为保证UCS的正常运行,来源为“系统”或“默认”的命名空间无法被删除。 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“命名空间”,在命名空间列表中,选择需要删除的命名空间,单击“删除”。 如需同时删除多个命名空间,可勾选多个命名空间并单击“批量删除”。 根据提示,单击“是”进行删除操作。
  • 创建命名空间 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“命名空间”,单击右上角“创建命名空间”。 参照表1设置命名空间参数。 表1 命名空间基本信息 参数 参数说明 命名空间名称 新建命名空间的名称,命名必须唯一。 标签 Key/value键值对格式,给命名空间添加自定义标签,定义不同属性,通过这些标签了解各个命名空间的特点。 注解 Key/value键值对格式,给命名空间添加自定义注解。 描述 输入对命名空间的描述信息。 配置完成后,单击“确定”。 创建完成后,可单击“查看YAML”查看YAML文件,并支持下载。
  • 使用命名空间 在创建工作负载、Service、Ingress、存储声明等场景时都会用到命名空间,以创建工作负载为例: 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“工作负载”,在“无状态负载”页签中单击右上角“镜像创建”。 设置工作负载基本信息,选择工作负载所在的命名空间。 继续完成工作负载其他配置的填写并创建。
  • 约束与限制 init容器不支持进行GPU虚拟化。 对于单张GPU卡: 最多虚拟化为20个GPU虚拟设备。 最多调度20个使用隔离能力的Pod。 仅支持调度相同隔离模式(GPU虚拟化支持显存隔离、显存与算力隔离两种隔离模式。)的工作负载。 对于同一工作负载中的不同容器: 仅支持配置单一显卡型号,不支持混合配置两种及以上GPU显卡型号。 仅支持配置一致GPU使用模式,不支持混合配置虚拟化和非虚拟化模式。 使用GPU虚拟化后,该GPU节点不再支持调度使用共享GPU资源的工作负载。
  • 验证GPU虚拟化隔离能力 工作负载创建成功后,您可以尝试验证GPU虚拟化的隔离能力。 登录容器查看容器被分配显存总量 kubectl exec -it gpu-app -- nvidia-smi 预期输出: Wed Apr 12 07:54:59 2023+-----------------------------------------------------------------------------+| NVIDIA-SMI 470.141.03 Driver Version: 470.141.03 CUDA Version: 11.4 ||-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. || | | MIG M. ||===============================+======================+======================|| 0 Tesla V100-SXM2... Off | 00000000:21:01.0 Off | 0 || N/A 27C P0 37W / 300W | 4792MiB / 5000MiB | 0% Default || | | N/A |+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=============================================================================|+-----------------------------------------------------------------------------+ 预期输出表明,该容器被分配显存总量为5000 MiB,实际使用了4792MiB。 查看所在节点的GPU显存隔离情况(在节点上执行)。 export PATH=$PATH:/usr/local/nvidia/bin;nvidia-smi 预期输出: Wed Apr 12 09:31:10 2023+-----------------------------------------------------------------------------+| NVIDIA-SMI 470.141.03 Driver Version: 470.141.03 CUDA Version: 11.4 ||-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. || | | MIG M. ||===============================+======================+======================|| 0 Tesla V100-SXM2... Off | 00000000:21:01.0 Off | 0 || N/A 27C P0 37W / 300W | 4837MiB / 16160MiB | 0% Default || | | N/A |+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+| Processes: || GPU GI CI PID Type Process name GPU Memory || ID ID Usage ||=============================================================================|| 0 N/A N/A 760445 C python 4835MiB |+-----------------------------------------------------------------------------+ 预期输出表明,GPU节点上的显存总量为16160 MiB,其中示例Pod使用了4837MiB。
  • 基础软件规划 节点的操作系统、内核版本等基础软件需要符合表1中的版本要求。 表1 基础软件规划 系统架构 系统类型 网络模型支持 操作系统版本 内核版本限制 x86 Ubuntu 20.04 Cilium 检查命令:cat /etc/lsb-release DISTRIB_DESCRIPTION="Ubuntu 20.04.4 LTS" 检查命令:uname -r 5.15.0-1017-aws Cilium是一种网络插件,支持BGP、eBPF等网络协议,更多内容请参见Cilium官方文档。 多云集群采用containerd作为容器引擎,如果节点操作系统已经安装containerd、runC组件,UCS将直接使用上述组件。 父主题: 安装多云集群的业务规划
共100000条
提示

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