华为云用户手册

  • 非兼容变更 Kubernetes v1.29中更改kube-proxy启动的行为,允许kube-proxy设置低于节点sysctl设置的参数值。如节点nf_conntrack_max内核参数值设置为100W,而kube-proxy计算的值为131072,那么此内核参数会使用kube-proxy计算的值131072。 社区PR链接为:https://github.com/kubernetes/kubernetes/pull/120448
  • 相关链接 英伟达安全公告:https://nvidia.custhelp.com/app/answers/detail/a_id/5142 CVE收录信息:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-1056 NVD收录信息:https://nvd.nist.gov/vuln/detail/CVE-2021-1056 CVE PoC:https://github.com/pokerfaceSad/CVE-2021-1056 GPUMounter:https://github.com/pokerfaceSad/GPUMounter
  • 漏洞影响 按照NVIDIA官方给出的漏洞公告信息,目前受影响的NVIDIA GPU驱动版本如下图所示: 更多信息,请参见NVIDIA官网。 影响说明: 云容器引擎CCE集群和gpu-beta插件推荐安装的NVIDIA GPU驱动,尚未出现在NVIDIA官方信息中。如果将来有新的官方信息变化,我们将及时跟进帮助您升级修复。 如果您是自行选择安装的NVIDIA GPU驱动或更新过节点上的GPU驱动,请参考上图确认您安装的GPU驱动是否受该漏洞影响。
  • 如何确认GPU节点的NVIDIA驱动版本 登录到您的GPU节点,执行如下命令,即可查看驱动版本。 [root@XXX36 bin]# ./nvidia-smi Fri Apr 16 10:28:28 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.32.03 Driver Version: 460.32.03 CUDA Version: 11.2 | |-------------------------------+----------------------+----------------------+ | 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 T4 Off | 00000000:21:01.0 Off | 0 | | N/A 68C P0 31W / 70W | 0MiB / 15109MiB | 0% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
  • 漏洞详情 NVIDIA公布了关于NVIDIA GPU驱动的一个漏洞CVE-2021-1056,该漏洞是存在于NVIDIA GPU驱动程序中与设备隔离相关的安全漏洞。当容器以非特权模式启动,攻击者利用这个漏洞,通过在容器中创建特殊的字符设备文件后,能够获取宿主机上所有GPU设备的访问权限。 关于漏洞的详细信息,请参见CVE-2021-1056。 如果您的CCE集群中存在GPU(E CS )节点,并使用了CCE推荐的NVIDIA GPU驱动版本(Tesla 396.37),按照目前NVIDIA官方公告判断暂不受影响;如果您自行安装或更新过节点上的NVIDIA GPU驱动,则可能存在该漏洞。 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 权限提升 CVE-2021-1056 中 2021-01-07
  • 漏洞修复方案 请您根据漏洞影响范围,将节点升级到对应驱动版本进行漏洞修复: 若您升级了NVIDIA GPU驱动,需重启GPU节点,重启节点将会短暂影响您的业务。 如果节点驱动版本为418系列,请升级驱动至418.181.07版本。 如果节点驱动版本为450系列,请升级驱动至450.102.04版本。 如果节点驱动版本为460系列,请升级驱动至460.32.03版本。 如果您升级CCE集群节点的GPU驱动,可以升级gpu-beta插件或重装插件,并在安装插件时填写修复后的NVIDIA GPU驱动的下载地址即可。
  • 资源变更与弃用 社区1.23 ReleaseNotes FlexVolume废弃,建议使用CSI。 HorizontalPodAutoscaler v2版本GA,HorizontalPodAutoscaler API v2在1.23版本中逐渐稳定。不建议使用HorizontalPodAutoscaler v2beta2 API,建议使用新的v2版本API。 PodSecurity支持beta,PodSecurity替代废弃的PodSecurityPolicy,PodSecurity是一个准入控制器,它根据设置实施级别的特定命名空间标签在命名空间中的Pod上实施Pod安全标准。在1.23中PodSecurity默认启用。 社区1.22 ReleaseNotes Ingress资源不再支持networking.k8s.io/v1beta1和extensions/v1beta1 API。如果使用旧版本API管理Ingress,会影响应用对外暴露服务,请尽快使用networking.k8s.io/v1替代。 CustomResourceDefinition资源不再支持apiextensions.k8s.io/v1beta1 API。如果使用旧版本API创建自定义资源定义,会导致定义创建失败,进而影响调和(reconcile)该自定资源的控制器,请尽快使用apiextensions.k8s.io/v1替代 ClusterRole、ClusterRoleBinding、Role和RoleBinding资源不再支持rbac.authorization.k8s.io/v1beta1 API。如果使用旧版本API管理RBAC资源,会影响应用的权限服务,甚至无法在集群内正常使用,请尽快使用rbac.authorization.k8s.io/v1替代。 Kubernetes版本发布周期由一年4个版本变为一年3个版本。 StatefulSets 支持minReadySeconds。 缩容时默认根据Pod uid排序随机选择删除Pod(LogarithmicScaleDown)。基于该特性,可以增强Pod被缩容的随机性,缓解由于Pod拓扑分布约束带来的问题。更多信息,请参见KEP-2185和issues 96748。 BoundServiceAccountTokenVolume特性已稳定,该特性能够提升服务账号(ServiceAccount)Token的安全性,改变了Pod挂载Token的方式,Kubernetes 1.21及以上版本的集群中会默认开启。
  • 非兼容变更 Kubernetes v1.23中更改kube-proxy启动的行为:当节点的内核参数值设置得比kube-proxy默认值更高时,kube-proxy不再尝试设置特定的内核参数值。如节点nf_conntrack_max内核参数值设置为100W,而kube-proxy计算的值为131072,那么此内核参数会使用节点默认值100W。 社区PR链接为:https://github.com/kubernetes/kubernetes/pull/103174
  • 弃用和移除 Kubernetes 1.25版本 清理iptables链的所有权 Kubernetes通常创建iptables链来确保这些网络数据包到达, 这些iptables链及其名称属于Kubernetes内部实现的细节,仅供内部使用场景,目前有些组件依赖于这些内部实现细节,Kubernetes总体上不希望支持某些工具依赖这些内部实现细节。详细信息,请参见Kubernetes的iptables链不是API。 在Kubernetes 1.25版本后,Kubelet通过IPTablesCleanup特性门控分阶段完成迁移,是为了不在NAT表中创建iptables链,例如KUBE-MARK-DROP、KUBE-MARK-MASQ、KUBE-POSTROUTING。关于清理iptables链所有权的信息,请参见清理IPTables链的所有权。 存储驱动的弃用和移除,移除云服务厂商的in-tree卷驱动。 Kubernetes 1.24版本 在Kubernetes 1.24版本后,Service.Spec.LoadBalancerIP被弃用,因为它无法用于双栈协议。请使用自定义annotation。 在Kubernetes 1.24版本后,kube-apiserver移除参数--address、--insecure-bind-address、--port、--insecure-port=0。 在Kubernetes 1.24版本后,kube-controller-manager和kube-scheduler移除启动参数--port=0和--address。 在Kubernetes 1.24版本后,kube-apiserver --audit-log-version和--audit-webhook-version仅支持audit.k8s.io/v1,Kubernetes 1.24移除audit.k8s.io/v1[alpha|beta]1,只能使用audit.k8s.io/v1。 在Kubernetes 1.24版本后,kubelet移除启动参数--network-plugin,仅当容器运行环境设置为Docker时,此特定于Docker的参数才有效,并会随着Dockershim一起删除。 在Kubernetes 1.24版本后,动态日志清理功能已经被废弃,并在Kubernetes 1.24版本移除。该功能引入了一个日志过滤器,可以应用于所有Kubernetes系统组件的日志,以防止各种类型的敏感信息通过日志泄漏。此功能可能导致日志阻塞,所以废弃,更多信息请参见Dynamic log sanitization和 KEP-1753。 VolumeSnapshot v1beta1 CRD在Kubernetes 1.20版本中被废弃,在Kubernetes 1.24版本中移除,需改用v1版本。 在Kubernetes 1.24版本后,移除自1.11版本就废弃的service annotation tolerate-unready-endpoints,使用Service.spec.publishNotReadyAddresses代替。 在Kubernetes 1.24版本后,废弃metadata.clusterName字段,并将在下一个版本中删除。 Kubernetes 1.24及以后的版本,去除了kube-proxy监听NodePort的逻辑,在NodePort与内核net.ipv4.ip_local_port_range范围有冲突的情况下,可能会导致偶发的TCP无法连接的情况,导致健康检查失败、业务异常等问题。升级前,请确保集群没有NodePort端口与任意节点net.ipv4.ip_local_port_range范围存在冲突。更多信息,请参见Kubernetes社区PR。
  • 主要特性 Kubernetes 1.25版本 Pod Security Admission进入稳定阶段,并移除PodSecurityPolicy PodSecurityPolicy被废弃,并提供Pod Security Admission取代,具体的迁移方法可参见从PodSecurityPolicy迁移到内置的PodSecurity准入控制器。 Ephemeral Containers进入稳定阶段 临时容器是在现有的Pod中存在有限时间的容器。它对故障排除特别有用,特别是当需要检查另一个容器,但因为该容器已经崩溃或其镜像缺乏调试工具不能使用kubectl exec时。 对cgroups v2的支持进入稳定阶段 Kubernetes支持cgroups v2,与cgroups v1相比提供了一些改进,详情请参见cgroups v2。 SeccompDefault提升到Beta状态 如果要开启该特性,需要给kubelet增加启动参数为--seccomp-default=true,这样会默认开启seccomp为RuntimeDefault,提升整个系统的安全。1.25集群将不再支持使用注解“seccomp.security.alpha.kubernetes.io/pod”和“container.seccomp.security.alpha.kubernetes.io/annotation”来使用seccomp,请使用pod或container中“securityContext.seccompProfile”字段替代,详情请参见为Pod或容器配置安全上下文。 特性开启后可能应用所需的系统调用会被runtime限制,所以开启后应确保在测试环境调试,不会对应用造成影响。 网络策略中的EndPort进入稳定阶段 Network Policy中的EndPort已进入稳定状态,该特性于1.21版本合入。主要是在NetworkPolicy新增EndPort,可以指定一个Port范围,避免声明每一个Port。 本地临时容器存储容量隔离进入稳定阶段 本地临时存储容量隔离功能提供了对Pod之间本地临时存储容量隔离的支持,如EmptyDir。因此,如果一个Pod对本地临时存储容量的消耗超过该限制,就可以通过驱逐Pod来硬性限制其对共享资源的消耗。 CRD验证表达式语言升级为Beta阶段 CRD验证表达式语言已升级为 beta 版本, 这使得声明如何使用通用表达式语言(CEL)验证自定义资源成为可能。 请参考验证规则指导。 引入KMS v2 API 在Kubernetes 1.25版本,引入KMS v2 alpha1 API以提升性能,实现轮替与可观察性改进。 此API使用AES-GCM替代了AES-CBC,通过DEK实现静态 数据加密 (Kubernetes Secrets),此过程中无需您额外操作,且支持通过AES-GCM和AES-CBC进行读取。 更多信息,请参考使用 KMS provider进行数据加密指南。 Pod新增网络就绪状况 Kubernetes 1.25引入了对kubelet所管理的新的Pod状况PodHasNetwork的Alpha支持, 该状况位于Pod的status字段中 。详情请参见Pod网络就绪。 应用滚动上线所用的两个特性进入稳定阶段 在Kubernetes 1.25版本,StatefulSet的minReadySeconds进入稳定阶段,允许每个Pod等待一段预期时间来减缓StatefulSet的滚动上线。更多信息,请参见最短就绪秒数。 在Kubernetes 1.25版本,DaemonSet的maxSurge进入稳定阶段,允许DaemonSet工作负载在滚动上线期间在一个节点上运行同一 Pod的多个实例,有助于将DaemonSet的停机时间降到最低。DaemonSet不允许maxSurge和hostPort同时使用,因为两个活跃的Pod无法共享同一节点的相同端口。更多信息,请参见DaemonSet工作负载滚动上线。 对使用用户命名空间运行Pod提供Alpha支持 对使用user namespace运行Pod提供alpha支持,将Pod内的root用户映射到容器外的非零ID,使得从容器角度看是root身份运行,而从主机角度看是常规的非特权用户。目前尚处于内测阶段,需要开启特性门控UserNamespacesStatelessPodsSupport, 且要求容器运行时必须能够支持此功能。更多信息,请参见对使用user namespace运行Pod提供alpha支持。 Kubernetes 1.24版本 从kubelet中删除 Dockershim Dockershim自1.20版本被标废弃以来,在1.24版本正式从Kubelet代码中移除。如果还想使用Docker作为容器运行时的话,需要切换到cri-dockerd,或者使用其他支持CRI的运行时比如Containerd/CRI-O等。 从Docker Engine 切换到Containerd的流程请参见将节点容器引擎从Docker迁移到Containerd。 您需要注意排查是否有agent或者应用强依赖Docker Engine的,比如在代码中使用docker ps,docker run, docker inspect等,需要注意兼容多种runtime,以及切换到标准cri接口。 Beta APIs默认关闭 在社区移除一些长期Beta API的过程中发现,90%的集群管理员并没有关心Beta API默认开始,其实Beta特性是不推荐在生产环境中使用,但是因为默认的打开策略,导致这些API在生产环境中都被默认开启,这样会因为Beta特性的bug带来一些风险,以及升级的迁移的风险。所以在1.24版本开始,Beta API默认关闭,之前已经默认开启的Beta API会保持默认开启。 支持OpenAPI v3 在Kubernetes 1.24版本后,OpenAPI V3默认开启。 存储容量跟踪特性进入稳定阶段 在Kubernetes 1.24版本后,CSIStorageCapacity API支持显示当前可用的存储大小,确保Pod调度到足够存储容量的节点上,减少Volumes创建和挂载失败导致的Pod调度延迟,详细信息请参见存储容量。 gRPC 探针升级到Beta阶段 在Kubernetes 1.24版本后,gRPC探针进入Beta,默认可用特性门控参数GRPCContainerProbe,使用方式请参见配置探针。 特性门控LegacyServiceAccountTokenNoAutoGeneration默认启用 LegacyServiceAccountTokenNoAutoGeneration特性门控进入beta状态,默认为开启状态,开启后将不再为Service Account自动生成Secret Token。如果需要使用永不过期的Token,需要自己新建Secrets并挂载,详情请参见服务账号令牌Secret。 避免 IP 分配给服务的冲突 Kubernetes 1.24引入了一项新功能,允许为服务的静态IP地址分配软保留范围。 通过手动启用此功能,集群将从服务IP地址池中自动分配IP,从而降低冲突风险。 基于Go 1.18编译 在Kubernetes 1.24版本后,Kubernetes基于Go 1.18编译,默认不再支持SHA-1哈希算法验证证书签名,例如SHA1WithRSA、ECDSAWithSHA1算法,推荐使用SHA256算法生成的证书进行认证。 StatefulSet支持设置最大不可用副本数 在Kubernetes 1.24版本后,StatefulSets支持可配置maxUnavailable参数,使得滚动更新时可以更快地停止Pods。 节点非体面关闭进入Alpha阶段 在Kubernetes 1.24中,节点非体面关闭特性是Alpha版。当kubelet的节点关闭管理器可以检测到即将到来的节点关闭操作时,节点关闭才被认为是体面的。详情请参见处理节点非体面关闭。
  • 漏洞处理方案 目前RedHat、Ubuntu、Debian、SUSE等各大Linux厂商均已发布补丁版本修复了该漏洞,请受影响的用户升级到安全版本,若无法及时升级,可参考厂商官方提供的建议进行缓解。 RedHat、Ubuntu、Debian、SUSE EulerOS已发布补丁,升级polkit rpm包即可。 升级方法如下 yum clean all yum makecache yum update polkit rpm -qa | grep polkit 检查是否已经修复为对应版本 EulerOS 2.10 修复版本为polkit-0.116-6.h4 EulerOS 2.9 修复版本为polkit-0.116-5.h7 EulerOS 2.8 修复版本为polkit-0.115-2.h14 EulerOS 2.5 修复版本为polkit-0.112-14.h15 若系统没有可用的补丁,可通过将pkexec中的SUID-bit删除进行临时规避,命令如:# chmod 0755 /usr/bin/pkexec 注:修复漏洞前请将资料备份,并进行充分测试。
  • 漏洞详情 国外安全研究团队披露在polkit的pkexec程序中存在一处权限提升漏洞(CVE-2021-4034,亦称PwnKit),攻击者通过在其默认配置中利用此漏洞实现用任何非特权用户获取易受攻击主机的完全root权限,目前漏洞POC/EXP已公开,风险较高。 Polkit(PolicyKit)是一个用于在类Unix操作系统中控制系统范围权限的组件。pkexec是Plokit框架中的一部分,执行具有提升权限的命令,是sudo的替代方案。请使用Polkit的用户及时安排自检并做好安全加固。 参考链接:https://www.qualys.com/2022/01/25/cve-2021-4034/pwnkit.txt 表1 漏洞信息 漏洞类型 CVE-ID 漏洞级别 披露/发现时间 权限提升 CVE-2021-4034 高 2022-01-28
  • 集群版本与操作系统对应关系 如下为当前已经发布的集群版本与操作系统版本的对应关系,请参考: 表1 弹性云服务器-虚拟机节点操作系统 操作系统 集群版本 CCE Standard集群 CCE Turbo 集群 最新内核信息 VPC网络模型 容器隧道网络模型 云原生网络2.0 Huawei Cloud EulerOS 2.0 v1.31 √ √ √ 5.10.0-182.0.0.95.r2220_156.hce2.x86_64 v1.30 √ √ √ 5.10.0-182.0.0.95.r2220_156.hce2.x86_64 v1.29 √ √ √ 5.10.0-182.0.0.95.r2220_156.hce2.x86_64 v1.28 √ √ √ 5.10.0-182.0.0.95.r2220_156.hce2.x86_64 v1.27 √ v1.27.3-r0及以上版本支持 √ 5.10.0-182.0.0.95.r2220_156.hce2.x86_64 v1.25(停止维护) √ v1.25.6-r0及以上版本支持 √ v1.25.3-r0及以上集群版本: 5.10.0-182.0.0.95.r2220_156.hce2.x86_64 v1.25.3-r0以下集群版本: 5.10.0-60.18.0.50.r865_35.hce2.x86_64 v1.23(停止维护) √ v1.23.11-r0及以上版本支持 √ v1.23.8-r0及以上集群版本: 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 v1.23.8-r0以下集群版本: 5.10.0-60.18.0.50.r865_35.hce2.x86_64 Huawei Cloud EulerOS 2.0 (ARM) v1.31 √ √ √ 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 v1.30 √ √ √ 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 v1.29 √ √ √ 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 v1.28 √ √ √ 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 v1.27 √ v1.27.3-r0及以上版本支持 √ 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 v1.25(停止维护) v1.25.3-r0及以上版本支持 v1.25.6-r0及以上版本支持 v1.25.3-r0及以上版本支持 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 v1.23(停止维护) v1.23.6-r0及以上版本支持 v1.23.11-r0及以上版本支持 v1.23.6-r0及以上版本支持 v1.23.8-r0及以上集群版本: 5.10.0-182.0.0.95.r2220_156.hce2.aarch64 v1.23.6-r0至v1.23.7-r0集群版本: 5.10.0-60.18.0.50.r865_35.hce2.aarch64 Ubuntu 22.04 v1.31 √ × √ 5.15.0-126-generic v1.30 √ × √ 5.15.0-126-generic v1.29 √ × √ 5.15.0-126-generic v1.28 √ × √ 5.15.0-126-generic v1.27 √ × √ v1.27.3-r0及以上集群版本: 5.15.0-126-generic v1.27.3-r0以下集群版本: 5.15.0-86-generic v1.25(停止维护) v1.25.3-r0及以上版本支持 × v1.25.3-r0及以上版本支持 v1.25.6-r0及以上集群版本: 5.15.0-126-generic v1.25.6-r0以下集群版本: 5.15.0-86-generic v1.23(停止维护) v1.23.8-r0及以上版本支持 × v1.23.8-r0及以上版本支持 v1.23.11-r0及以上集群版本: 5.15.0-126-generic v1.23.11-r0以下集群版本: 5.15.0-86-generic Huawei Cloud EulerOS 1.1 v1.31 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.30 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.29 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.28 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.27 √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.25(停止维护) √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.23(停止维护) √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 v1.21(停止维护) √ √ √ 3.10.0-1160.76.2.hce1c.x86_64 EulerOS release 2.9 v1.31 √ √ √ 4.18.0-147.5.1.6.h1447.eulerosv2r9.x86_64 v1.30 √ √ √ 4.18.0-147.5.1.6.h1447.eulerosv2r9.x86_64 v1.29 √ √ √ 4.18.0-147.5.1.6.h1447.eulerosv2r9.x86_64 v1.28 √ √ √ 4.18.0-147.5.1.6.h1447.eulerosv2r9.x86_64 v1.27 √ √ √ 4.18.0-147.5.1.6.h1447.eulerosv2r9.x86_64 v1.25(停止维护) √ √ √ 4.18.0-147.5.1.6.h1447.eulerosv2r9.x86_64 v1.23(停止维护) √ √ √ v1.23.5-r0及以上集群版本: 4.18.0-147.5.1.6.h1447.eulerosv2r9.x86_64 v1.23.5-r0以下集群版本: 4.18.0-147.5.1.6.h1017.eulerosv2r9.x86_64 v1.21(停止维护) √ √ √ v1.21.7-r0及以上集群版本: 4.18.0-147.5.1.6.h1447.eulerosv2r9.x86_64 v1.21.7-r0以下集群版本: 4.18.0-147.5.1.6.h1017.eulerosv2r9.x86_64 v1.19(停止维护) √ √ √ 4.18.0-147.5.1.6.h1152.eulerosv2r9.x86_64 EulerOS release 2.9 (ARM) v1.31 √ √ √ 4.19.90-vhulk2103.1.0.h1380.eulerosv2r9.aarch64 v1.30 √ √ √ 4.19.90-vhulk2103.1.0.h1380.eulerosv2r9.aarch64 v1.29 √ √ √ 4.19.90-vhulk2103.1.0.h1380.eulerosv2r9.aarch64 v1.28 √ √ √ 4.19.90-vhulk2103.1.0.h1380.eulerosv2r9.aarch64 v1.27 √ √ √ 4.19.90-vhulk2103.1.0.h1380.eulerosv2r9.aarch64 v1.25(停止维护) √ √ √ 4.19.90-vhulk2103.1.0.h1380.eulerosv2r9.aarch64 v1.23(停止维护) √ √ √ v1.23.5-r0及以上集群版本: 4.19.90-vhulk2103.1.0.h1380.eulerosv2r9.aarch64 v1.23.5-r0以下集群版本: 4.19.90-vhulk2103.1.0.h990.eulerosv2r9.aarch64 v1.21(停止维护) √ √ √ v1.21.7-r0及以上集群版本: 4.19.90-vhulk2103.1.0.h1380.eulerosv2r9.aarch64 v1.21.7-r0以下集群版本: 4.19.90-vhulk2103.1.0.h990.eulerosv2r9.aarch64 v1.19(停止维护) √ √ √ 4.19.90-vhulk2103.1.0.h1144.eulerosv2r9.aarch64 EulerOS release 2.8(ARM)(停止维护) v1.27及以上 × × × - v1.25(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h1350.eulerosv2r8.aarch64 v1.23(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h1350.eulerosv2r8.aarch64 v1.21(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h1350.eulerosv2r8.aarch64 v1.19.16(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h1350.eulerosv2r8.aarch64 v1.19.10(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h962.eulerosv2r8.aarch64 v1.17.17(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h962.eulerosv2r8.aarch64 v1.15.11(停止维护) √ √ √ 4.19.36-vhulk1907.1.0.h702.eulerosv2r8.aarch64 EulerOS release 2.5(停止维护) v1.27及以上 × × × - v1.25(停止维护) √ √ √ 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 v1.23(停止维护) √ √ √ 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 v1.21(停止维护) √ √ √ 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 v1.19.16(停止维护) √ √ √ 3.10.0-862.14.1.5.h687.eulerosv2r7.x86_64 v1.19.10(停止维护) √ √ √ 3.10.0-862.14.1.5.h520.eulerosv2r7.x86_64 v1.19.8(停止维护) √ √ √ 3.10.0-862.14.1.5.h520.eulerosv2r7.x86_64 v1.17.17(停止维护) √ √ √ 3.10.0-862.14.1.5.h470.eulerosv2r7.x86_64 v1.17.9(停止维护) √ √ √ 3.10.0-862.14.1.5.h428.eulerosv2r7.x86_64 v1.15.11(停止维护) √ √ √ 3.10.0-862.14.1.5.h428.eulerosv2r7.x86_64 v1.15.6-r1(停止维护) √ √ √ 3.10.0-862.14.1.5.h328.eulerosv2r7.x86_64 v1.13.10-r1(停止维护) √ √ √ 3.10.0-862.14.1.2.h249.eulerosv2r7.x86_64 v1.13.7-r0(停止维护) √ √ √ 3.10.0-862.14.1.0.h197.eulerosv2r7.x86_64 CentOS Linux release 7.6(停止维护) v1.31 √ √ √ 3.10.0-1160.119.1.el7.x86 64 v1.30 √ √ √ 3.10.0-1160.119.1.el7.x86 64 v1.29 √ √ √ 3.10.0-1160.119.1.el7.x86 64 v1.28 √ √ √ 3.10.0-1160.119.1.el7.x86 64 v1.27 √ √ √ 3.10.0-1160.119.1.el7.x86 64 v1.25(停止维护) √ √ √ 3.10.0-1160.119.1.el7.x86 64 v1.23(停止维护) √ √ √ v1.23.3-r0及以上集群版本: 3.10.0-1160.119.1.el7.x86 64 v1.23.3-r0以下集群版本: 3.10.0-1160.66.1.el7.x86_64 v1.21(停止维护) √ √ √ v1.21.5-r0及以上集群版本: 3.10.0-1160.119.1.el7.x86_64 v1.21.4-r0集群版本: 3.10.0-1160.66.1.el7.x86_64 v1.21.4-r0以下集群版本: 3.10.0-1160.25.1.el7.x86_64 v1.19(停止维护) √ √ √ 3.10.0-1160.108.1.el7.x86_64 v1.17.17(停止维护) √ √ √ 3.10.0-1160.15.2.el7.x86_64 v1.17.9(停止维护) √ √ √ 3.10.0-1062.12.1.el7.x86_64 v1.15.11(停止维护) √ √ √ 3.10.0-1062.12.1.el7.x86_64 v1.15.6-r1(停止维护) √ √ √ 3.10.0-1062.1.1.el7.x86_64 v1.13.10-r1(停止维护) √ √ √ 3.10.0-957.21.3.el7.x86_64 v1.13.7-r0(停止维护) √ √ √ 3.10.0-957.21.3.el7.x86_64 Ubuntu 18.04 server 64bit(停止维护) v1.27及以上 × × × - v1.25(停止维护) √ × √ 4.15.0-171-generic v1.23(停止维护) √ × √ 4.15.0-171-generic v1.21(停止维护) √ × √ 4.15.0-171-generic v1.19.16(停止维护) √ × √ 4.15.0-171-generic v1.19.8(停止维护) √ × √ 4.15.0-136-generic v1.17.17(停止维护) √ × √ 4.15.0-136-generic 表2 弹性云服务器-物理机节点操作系统 操作系统 集群版本 CCE Standard集群 CCE Turbo集群 最新内核信息 VPC网络模型 容器隧道网络模型 云原生网络2.0 EulerOS release 2.10 v1.31 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.30 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.29 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.28 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.27 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.25 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.23 √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.21(停止维护) √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 v1.19.16(停止维护) √ √ √ 4.18.0-147.5.2.15.h1109.eulerosv2r10.x86_64 表3 裸金属服务器节点操作系统 操作系统 集群版本 CCE Standard集群 CCE Turbo集群 最新内核信息 VPC网络模型 容器隧道网络模型 云原生网络2.0 Huawei Cloud EulerOS 2.0(部分局点及机型支持,请以控制台呈现为准) v1.31 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.30 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.29 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.28 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.27 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.25 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 v1.23 √ √ × 5.10.0-60.18.0.50.r1083_58.hce2.x86_64 EulerOS release 2.9(受限使用,请提交工单确认) v1.31 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.30 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.29 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.28 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.27 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.25 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.23 √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.21(停止维护) √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 v1.19(停止维护) √ √ × 4.18.0-147.5.1.6.h841.eulerosv2r9.x86_64 EulerOS release 2.3(停止维护) v1.27及以上 × × × - v1.25(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.23(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.21(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.19(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.17(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64 v1.15.11(停止维护) √ √ × 3.10.0-514.41.4.28.h62.x86_64
  • 使用案例 案例场景 因数据规整要求,需要周期性地将多组 DLI 源数据表数据导入到对应的DLI目的表,如表1所示。 表1 需要导入的列表情况 源数据表名 目的表名 a_new a b_2 b c_3 c d_1 d c_5 e b_1 f 如果通过SQL节点分别执行导入脚本,需要开发大量脚本和节点,导致重复性工作。在这种情况下,我们可以使用For Each节点进行循环作业,节省开发工作量。 配置方法 准备源表和目的表。为了便于后续作业运行验证,需要先创建DLI源数据表和目的表,并给源数据表插入数据。 创建DLI表。您可以在 DataArts Studio 数据开发中,新建DLI SQL脚本执行以下SQL命令,也可以在 数据湖探索 (DLI)服务控制台中的SQL编辑器中执行以下SQL命令: /* 创建数据表 */ CREATE TABLE a_new (name STRING, score INT) STORED AS PARQUET; CREATE TABLE b_2 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE c_3 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE d_1 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE c_5 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE b_1 (name STRING, score INT) STORED AS PARQUET; CREATE TABLE a (name STRING, score INT) STORED AS PARQUET; CREATE TABLE b (name STRING, score INT) STORED AS PARQUET; CREATE TABLE c (name STRING, score INT) STORED AS PARQUET; CREATE TABLE d (name STRING, score INT) STORED AS PARQUET; CREATE TABLE e (name STRING, score INT) STORED AS PARQUET; CREATE TABLE f (name STRING, score INT) STORED AS PARQUET; 给源数据表插入数据。您可以在DataArts Studio数据开发模块中,新建DLI SQL脚本执行以下SQL命令,也可以在 数据湖 探索(DLI)服务控制台中的SQL编辑器中执行以下SQL命令: /* 源数据表插入数据 */ INSERT INTO a_new VALUES ('ZHAO','90'),('QIAN','88'),('SUN','93'); INSERT INTO b_2 VALUES ('LI','94'),('ZHOU','85'); INSERT INTO c_3 VALUES ('WU','79'); INSERT INTO d_1 VALUES ('ZHENG','87'),('WANG','97'); INSERT INTO c_5 VALUES ('FENG','83'); INSERT INTO b_1 VALUES ('CEHN','99'); 准备数据集数据。您可以通过以下方式之一获取数据集: 您可以将表1数据导入到DLI表中,然后将SQL脚本读取的结果作为数据集。 您可以将表1数据保存在OBS的CSV文件中,然后通过DLI SQL或DWS SQL创建OBS外表关联这个CSV文件,然后将OBS外表查询的结果作为数据集。DLI创建外表请参见OBS输入流,DWS创建外表请参见创建外表。 您可以将表1数据保存在HDFS的CSV文件中,然后通过HIVE SQL创建Hive外表关联这个CSV文件,然后将HIVE外表查询的结果作为数据集。 MRS 创建外表请参见创建表。 本例以方式1进行说明,将表1中的数据导入到DLI表(Table_List)中。您可以在DataArts Studio数据开发模块中,新建DLI SQL脚本执行以下SQL命令导入数据,也可以在数据湖探索(DLI)服务控制台中的SQL编辑器中执行以下SQL命令: /* 创建数据表TABLE_LIST,然后插入表1数据,最后查看生成的表数据 */ CREATE TABLE Table_List (Source STRING, Destination STRING) STORED AS PARQUET; INSERT INTO Table_List VALUES ('a_new','a'),('b_2','b'),('c_3','c'),('d_1','d'),('c_5','e'),('b_1','f'); SELECT * FROM Table_List; 生成的Table_List表数据如下: 图2 Table_List表数据 创建要循环运行的子作业ForeachDemo。在本次操作中,定义循环执行的是一个包含了DLI SQL节点的任务。 进入DataArts Studio数据开发模块选择“作业开发”页面,新建作业ForeachDemo,然后选择DLI SQL节点,编排图3所示的作业。 DLI SQL的语句中把要替换的变量配成${}这种参数的形式。在下面的SQL语句中,所做的操作是把${Source}表中的数据全部导入${Destination}中,${fromTable}、${toTable} 就是要替换的变量参数。SQL语句为: INSERT INTO ${Destination} select * from ${Source}; 此处不能使用EL表达式#{Job.getParam("job_param_name")} ,因为此表达式只能直接获取当前作业里配置的参数的value,并不能获取到父作业传递过来的参数值,也不能获取到工作空间里面配置的全局变量,作用域仅为本作业。 而表达式${job_param_name},既可以获取到父作业传递过来的参数值,也可以获取到全局配置的变量。 图3 循环执行子作业 配置完成SQL语句后,在子作业中配置作业参数。此处仅需要配置参数名,用于主作业ForeachDemo_master中的For Each节点识别子作业参数;参数值无需填写。 图4 配置子作业参数 配置完成后保存作业。 创建For Each节点所在的主作业ForeachDemo_master。 进入DataArts Studio数据开发模块选择“作业开发”页面,新建数据开发主作业ForeachDemo_master。选择DLI SQL节点和For Each节点,选中连线图标并拖动,编排图5所示的作业。 图5 编排作业 配置DLI SQL节点属性,此处配置为SQL语句,语句内容如下所示。DLI SQL节点负责读取DLI表Table_List中的内容作为数据集。 SELECT * FROM Table_List; 图6 DLI SQL节点配置 配置For Each节点属性。 子作业:子作业选择步骤2已经开发完成的子作业“ForeachDemo”。 数据集:数据集就是DLI SQL节点的Select语句的执行结果。使用EL表达式#{Job.getNodeOutput('preDLI')},其中preDLI为前一个节点的名称。 子作业参数:用于将数据集中的数据传递到子作业以供使用。Source对应的是数据集Table_List表的第一列,Destination是第二列,所以配置的EL表达式分别为#{Loop.current[0]}、#{Loop.current[1]}。 图7 配置For Each节点 配置完成后保存作业。 测试运行主作业。 单击主作业画布上方的“测试运行”按钮,测试作业运行情况。主作业运行后,会通过For Each节点自动调用运行子作业。 单击左侧导航栏中的“实例监控”,进入实例监控中查看作业运行情况。等待作业运行成功后,就能查看For Each节点生成的子作业实例,由于数据集中有6行数据,所以这里就对应产生了6个子作业实例。 图8 查看作业实例 查看对应的6个DLI目的表中是否已被插入预期的数据。您可以在DataArts Studio数据开发模块中,新建DLI SQL脚本执行以下SQL命令导入数据,也可以在数据湖探索(DLI)服务控制台中的SQL编辑器中执行以下SQL命令: /* 查看表a数据,其他表数据请修改命令后运行 */ SELECT * FROM a; 将查询到的表数据与给源数据表插入数据步骤中的数据进行对比,可以发现数据插入符合预期。 图9 目的表数据
  • 适用场景 当您进行作业开发时,如果某些任务的参数有差异、但处理逻辑全部一致,在这种情况下您可以通过For Each节点避免重复开发作业。 For Each节点可指定一个子作业循环执行,并通过数据集对子作业中的参数进行循环替换。关键参数如下: 子作业:选择需要循环执行的作业。 数据集:即不同子任务的参数值的集合。可以是给定的数据集,如“[['1'],['3'],['2']]”;也可以是EL表达式如“#{Job.getNodeOutput('preNodeName')}”,即前一个节点的输出值。 子作业参数:参数名即子作业中定义的变量;参数值一般配置为数据集中的某组数据,每次运行中会将参数值传递到子作业以供使用。例如参数值填写为:#{Loop.current[0]},即将数据集中每行数据的第一个数值遍历传递给子作业。 For Each节点举例如图1所示 。从图中可以看出,子作业“foreach”中的参数名为“result”,参数值为一维数组数据集“[['1'],['3'],['2']] ”的遍历(即第一次循环为1,第二次循环为3,第三次循环为2)。 图1 for each节点
  • For Each节点与EL表达式 要想使用好For Each节点,您必须对EL表达式有所了解。EL表达式用法请参考EL表达式。 下面为您展示For Each节点常用的一些EL表达式。 #{Loop.dataArray} :For循环节点输入的数据集,是一个二维数组。 #{Loop.current}:由于For循环节点在处理数据集的时候,是一行一行进行处理的,那Loop.current就表示当前处理到的某行数据,Loop.current是一个一维数组,一般定义格式为#{Loop.current[0]}、#{Loop.current[1]}或其他,0表示遍历到当前行的第一个值。 #{Loop.offset}:For循环节点在处理数据集时当前的偏移量,从0开始。 #{Job.getNodeOutput('preNodeName')}:获取前面节点的输出。
  • 方式三:通过YAML使用profile控制pod调度到CCI 登录集群节点,配置profile资源。 vi profile.yaml 限制CCE集群最大负载数,配置local maxNum和scaleDownPriority的profile模板示例如下: apiVersion: scheduling.cci.io/v1 kind: ScheduleProfile metadata: name: test-cci-profile namespace: default spec: objectLabels: matchLabels: app: nginx strategy: localPrefer location: local: maxNum: 20 # 当前暂不支持local/cci同时配置maxNum scaleDownPriority: 10 cci: {} 限制CCI集群最大负载数,配置cci maxNum和scaleDownPriority的profile的模板示例如下: apiVersion: scheduling.cci.io/v1 kind: ScheduleProfile metadata: name: test-cci-profile namespace: default spec: objectLabels: matchLabels: app: nginx strategy: localPrefer location: local: {} cci: maxNum: 20 # 当前暂不支持local/cci同时配置maxNum scaleDownPriority: 10 表3 关键参数说明 参数 类型 描述 strategy String 表示CCE集群工作负载弹性调度到CCI策略,取值如下: enforce,CCE工作负载强制弹性到CCI。 auto,根据用户集群调度器实际打分决定是否弹性到CCI。 localPrefer,工作负载优先调度到CCE集群,集群资源不足时工作负载弹性到CCI。 maxNum int 表示pod最大数量配置。 取值范围[0~int32]。 scaleDownPriority int 表示缩容优先级配置,数值越大越先缩容。 取值范围[-100, 100]。 location配置local字段(CCE侧)和cci字段(CCI侧)控制pod数量和缩容优先级。 local字段和cci字段不可以同时设置maxNum。 缩容优先级为非必填项参数,如果不配置缩容优先级,默认值将为空。 在CCE集群中创建profile资源。 kubectl apply -f profile.yaml 创建无状态负载,使用selector方式选择含有“app:nginx”的pod,关联上文创建的profile。 kind: Deployment apiVersion: apps/v1 metadata: name: nginx spec: replicas: 10 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: container-1 image: nginx:latest imagePullPolicy: IfNotPresent resources: requests: cpu: 250m memory: 512Mi limits: cpu: 250m memory: 512Mi imagePullSecrets: - name: default-secret 表4 特殊场景使用说明 特殊使用场景 使用说明 pod同时使用label和profile控制调度CCI 使用label控制调度CCI的方式优先级高于使用profile控制调度CCI的方式。 例如label中策略为off,profile的策略为enforce,最终pod不会调度到CCI。 pod同时被多个profile关联 pod有且仅有一个关联profile。当pod被多个profile关联,根据profile匹配pod的label的数量,选出最大关联profile,存在多个时,选择字典序小的profile关联。 pod最终被profileA关联
  • 简介 对于使用CCE集群和CCI的使用场景,用户可以按需将工作负载调度到CCE集群节点或者对接CCI的虚拟节点,本文详细介绍如何将CCE集群的工作负载调度到CCI上。 bursting插件当前提供了以下方式管理CCE集群的pod,使其能够调度到CCI: 方式一:通过配置labels控制pod调度到CCI 方式二:通过控制台使用profile控制pod调度到CCI 方式三:通过YAML使用profile控制pod调度到CCI
  • 方式一:通过配置labels控制pod调度到CCI 通过CCE集群控制台(console)创建pod调度到CCI。通过CCE集群创建工作负载时,选择CCI弹性承载策略配置,选择“不开启”以外的任意策略。 在CCE集群控制台(console)创建工作负载时,CCI弹性承载支持勾选“bursting-node”或者“virtual-kubelet”,如果使用CCI 1.0请勾选“virtual-kubelet”,如果使用CCI 2.0请勾选“bursting-node”。目前CCI 2.0仅对白名单用户开放,如需使用CCI 2.0服务,请提交工单申请开启CCI 2.0服务。 通过yaml文件在CCE集群节点创建pod调度CCI。成功安装bursting插件后,登录CCE集群节点,在工作负载的yaml文件中添加virtual-kubelet.io/burst-to-cci标签。 apiVersion: apps/v1 kind: Deployment metadata: name: test namespace: default labels: virtual-kubelet.io/burst-to-cci: 'auto' # 弹性到CCI spec: replicas: 2 selector: matchLabels: app: test template: metadata: labels: app: test spec: containers: - image: 'nginx:perl' name: container-0 resources: requests: cpu: 250m memory: 512Mi limits: cpu: 250m memory: 512Mi volumeMounts: [] imagePullSecrets: - name: default-secret 表1 关键参数说明 参数 类型 描述 virtual-kubelet.io/burst-to-cci String 表示CCE集群工作负载弹性调度到CCI策略,取值如下: enforce,CCE工作负载强制弹性到CCI。 auto,根据用户集群调度器实际打分决定是否弹性到CCI。 localPrefer,工作负载优先调度到CCE集群,集群资源不足时工作负载弹性到CCI。 off,工作负载不会弹性到CCI。
  • EG最佳实践汇总 本文汇总了基于事件网格服务(EG,EventGrid)常见应用场景的操作实践,为每个实践提供详细的方案描述和操作指导,帮助用户轻松构建基于EG的业务。 表1 EG最佳实践一览表 最佳实践 说明 基于事件订阅将OBS应用事件源消息路由至分布式消息服务Kafka版 本章节介绍如何通过事件网格服务的事件订阅功能将OBS应用事件源产生的事件路由至分布式消息服务Kafka版。 基于Serverless版事件流实现Kafka实例之间的数据同步 本章节介绍如何通过事件网格服务的事件流功能实现分布式消息服务Kafka版实例间的数据同步。 基于EventGrid事件订阅和FunctionGraph实现OBS桶数据同步 本章节介绍如何通过事件网格服务的事件订阅和 函数工作流 服务实现OBS桶的数据同步。 基于Serverless版事件流实现RocketMQ推送事件至函数工作流服务 本章节介绍如何通过事件网格服务的事件流功能将RocketMQ产生的事件推送至函数工作流服务。
  • 功能简介 引导式同步 使用EG专业版事件流秒变同步专家。 场景化选择 预设使用场景,让数据同步更少配置、更简单。 网络与安全 支持SSL等加密和认证机制,让数据同步更安全。 多种同步模式 支持对象选择、全量+增量同步和多种压缩模式,满足不同同步诉求。 预检查 预检查支持提前识别同步是否满足成功条件,提供失败原因、失败详情和处理建议信息。用户可以根据失败信息和处理建议的指导,调整环境,以确保同步成功。 同步监控 全面可观测/可维护性,支持流控,同步情况,尽在掌握之中。
  • 支持的高级特性 分布式消息服务RocketMQ版支持4种高级特性。 消息过滤:消费者根据分布式消息服务RocketMQ版设置的标签对已订阅Topic中的消息进行过滤,达到只消费需要的消息的目的。 消息重试:消费者消费某条消息失败后,分布式消息服务RocketMQ版根据重试机制将消息重新发送给消费者进行消费。如果重试次数到达设定的最大值时,消息尚未被成功消费,此消息将被发送到死信队列。 分布式消息服务RocketMQ版的重试机制如表1所示。 表1 消息重试机制 消费类型 重试时间间隔 最大重试次数 顺序消费 通过suspendTimeMillis设置重试时间间隔。 默认值为1000ms,即1s。 通过消费者的setMaxReconsumeTimes函数配置最大重试次数。若未设置参数值,默认为无限重试。 普通消费 重试时间间隔根据重试次数阶梯变化,如表2所示。 创建消费组时设置。 取值范围:1-16。 表2 普通消费重试时间间隔 重试次数 与上次的间隔时间 重试次数 与上次的间隔时间 1 10s 9 7min 2 30s 10 8min 3 1min 11 9min 4 2min 12 10min 5 3min 13 20min 6 4min 14 30min 7 5min 15 1h 8 6min 16 2h 延时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟固定时间后才会发送给消费者进行消费。生产者可以指定18个延时等级,每个延时等级对应的时间如表3所示。 表3 延时等级 延时等级 延时时间 延时等级 延时时间 1 1s 10 6min 2 5s 11 7min 3 10s 12 8min 4 30s 13 9min 5 1min 14 10min 6 2min 15 20min 7 3min 16 30min 8 4min 17 1h 9 5min 18 2h 定时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟到设定的时间点后才会发送给消费者进行消费。分布式消息服务RocketMQ版支持任意时间的定时消息,最大推迟时间可达到1年。同时也支持定时消息的取消。 2022年3月30日及以后购买的实例支持定时消息功能,在此之前购买的实例不支持此功能。
  • 支持的消息类型 分布式消息服务RocketMQ版支持4种消息类型。 普通消息:没有特殊功能的消息,区别于延迟消息、顺序消息和事务消息。 延迟消息/定时消息:生产者生产消息到分布式消息服务RocketMQ版后,消息不会立即被消费,而是延迟到特定时间后才会发送给消费者进行消费。 顺序消息:消费者按照消息发送的顺序来消费消息。 事务消息:提供类似X/Open XA的分布事务功能,通过事务消息能达到分布式事务的最终一致。
  • 产品架构 图1 产品架构示意图(以4.8.0版本为例) 示意图说明: Broker:负责接收和存储Producer发送的消息,或者转发消息到Consumer。一个Broker由一个主节点和两个备节点组成。 NameServer:负责接收和存储Broker中的元数据。 Producer:从NameServer获取元数据,然后将消息发送到Broker。 Consumer:从NameServer获取元数据,然后从Broker拉取消息。
  • 细粒度授权 使用自定义细粒度策略,请使用管理员用户登录 IAM 控制台,按需选择DMS的细粒度权限进行授权操作。DMS for RocketMQ细粒度权限依赖说明请参见表3。 表3 DMS for RocketMQ细粒度权限依赖说明 权限名称 权限描述 权限依赖 dms:instance:list 查看实例列表 无 dms:instance:get 查看实例详情信息 无 dms:instance:create 创建实例 vpc:vpcs:get vpc:ports:create vpc:securityGroups:get vpc:ports:get vpc:subnets:get vpc:vpcs:list vpc:publicIps:get vpc:publicIps:list vpc:ports:update vpc:publicIps:update vpc:ports:delete dms:instance:getBackgroundTask 查看实例后台任务详情 无 dms:instance:deleteBackgroundTask 删除实例后台任务 无 dms:instance:modify 修改实例 vpc:vpcs:get vpc:ports:create vpc:securityGroups:get vpc:ports:get vpc:subnets:get vpc:vpcs:list vpc:publicIps:get vpc:publicIps:list vpc:ports:update vpc:publicIps:update vpc:ports:delete dms:instance:delete 删除实例 无
  • DMS for RocketMQ权限 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 DMS for RocketMQ部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问DMS for RocketMQ时,需要先切换至授权区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于华为云各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对DMS for RocketMQ服务,管理员能够控制IAM用户仅能对实例进行指定的管理操作。多数细粒度策略以API接口为粒度进行权限拆分,DMS for RocketMQ支持的API授权项请参见细粒度策略支持的授权项。 如表1所示,包括了DMS for RocketMQ的所有系统权限。 表1 DMS for RocketMQ系统权限 系统角色/策略名称 描述 类别 依赖关系 DMS FullAccess 分布式消息服务管理员权限,拥有该权限的用户可以操作所有分布式消息服务的功能。 系统策略 无 DMS UserAccess 分布式消息服务普通用户权限(没有实例创建、修改、删除、扩容)。 系统策略 无 DMS ReadOnlyAccess 分布式消息服务的只读权限,拥有该权限的用户仅能查看分布式消息服务数据。 系统策略 无 DMS VPCAccess 分布式消息服务租户委托时需要授权的VPC操作权限。 系统策略 无 DMS KMSAccess 分布式消息服务租户委托时需要授权的KMS操作权限。 系统策略 无 DMS Administrator 分布式消息服务的管理员权限。 系统角色 依赖Tenant Guest和VPC Administrator。 DMS ELBAccess 分布式消息服务租户委托时需要授权的ELB操作权限。 系统策略 无 DMS VPCEndpointAccess 分布式消息服务租户委托时需要授权的VPCEndpoint操作权限。 系统策略 无 DMSAgencyCheckAccessPolicy 分布式消息服务检查租户委托权限需要授权的IAM操作权限。 系统策略 无 表2列出了DMS for RocketMQ常用操作与系统策略的授权关系,您可以参照该表选择合适的系统策略。 表2 常用操作与系统策略的关系 操作 DMS FullAccess DMS UserAccess DMS ReadOnlyAccess DMS VPCAccess DMS KMSAccess DMS ELBAccess DMS VPCEndpointAccess DMSAgencyCheckAccessPolicy 创建实例 √ × × × × × × × 修改实例 √ × × × × × × × 删除实例 √ × × × × × × × 变更实例规格 √ × × × × × × × 查询实例信息 √ √ √ × × × × ×
  • URI URI格式 PUT https://{Endpoint}/v3/{project_id}/instances/{instance_id}/replica-set/name URI样例 https://dds.cn-north-1.myhuaweicloud.com/v3/0d248ca90800d3902f79c014f11df3b8/instances/593416e7c9da4a4c97c6ad5b086b8ddfin02/replica-set/name 表1 请求参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 参数解释: 从IAM服务获取的用户Token。请参考认证鉴权。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 project_id 是 String 参数解释: 租户在某一Region下的项目ID。请参考获取项目ID章节获取项目编号。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 instance_id 是 String 参数解释: 实例ID,可以调用“查询实例列表和详情”接口获取。如果未申请实例,可以调用“创建实例”接口创建。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • 响应消息 参数说明 状态码:202 表3 响应Body参数 参数 参数类型 说明 job_id String 参数解释: 工作流 id。 取值范围: 不涉及。 状态码:406 表4 响应Body参数 参数 参数类型 说明 ErrorResponse Array of 表5 objects 参数解释: 实例不是副本集或实例状态非“normal”,当前实例不允许此操作。 取值范围: 不涉及。 表5 ErrorResponse 参数 参数类型 说明 error_code String 参数解释: 提交任务异常时返回的错误编码。 取值范围: 不涉及。 error_msg String 参数解释: 提交任务异常时返回的错误描述信息。 取值范围: 不涉及。 响应示例 状态码:202 { "job_id" : "6ad4eb1f-73bd-4876-aa31-aa9a1e41c4bc" }
  • URI URI格式 POST https://{Endpoint}/v3/{project_id}/instances/logs/lts-configs URI样例 https://dds.ap-southeast-1.myhuaweicloud.com/v3/619d3e78f61b4be68bc5aa0b59edcf7b/instances/logs/lts-configs 表1 请求参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 参数解释: 从IAM服务获取的用户Token。请参考认证鉴权。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 project_id 是 String 参数解释: 租户在某一Region下的项目ID。请参考获取项目ID章节获取项目编号。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。
  • 请求消息 参数说明 表2 请求Body参数 名称 参数类型 是否必选 描述 lts_configs Array of 表3 objects 是 参数解释: 每个Item是实例需要设置的LTS策略。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 表3 lts_configs 名称 参数类型 是否必选 描述 instance_id String 是 参数解释: 实例ID,可以调用“查询实例列表和详情”接口获取。如果未申请实例,可以调用“创建实例”接口创建。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 log_type String 是 参数解释: LTS日志类型。 约束限制: 不能为空,具有以下日志类型。 audit_log 取值范围: audit_log 默认取值: 不涉及。 lts_group_id String 是 参数解释: LTS日志组ID。可通过 云日志 服务-“查询账号下所有日志组”API接口获取。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 lts_stream_id String 是 参数解释: LTS日志流ID。可通过云日志服务-“查询指定日志组下的所有日志流”API接口获取。 约束限制: 不涉及。 取值范围: 不涉及。 默认取值: 不涉及。 请求示例 为实例审计日志配置LTS服务。 POST https://{endpoint}/v3/619d3e78f61b4be68bc5aa0b59edcf7b/instances/logs/lts-configs { "lts_configs" : [ { "instance_id" : "520c58ba00a3497e97ce0b9604874dd6in02", "log_type" : "audit_log", "lts_group_id" : "ec6dc499-1a63-4229-a0c2-a2afa8bcfc95", "lts_stream_id" : "cae69d2e-378b-41dd-b3c9-3ca1cd5335bc" } ] }
共100000条
提示

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