华为云用户手册

  • 策略实例示例 以下策略实例展示了策略定义生效的资源类型,parameters中allowedProfiles定义了允许的注解。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sPSPSeccomp metadata: name: psp-seccomp spec: match: kinds: - apiGroups: [""] kinds: ["Pod"] parameters: allowedProfiles: - runtime/default - docker/default
  • 不符合策略实例的资源定义 示例中的container.seccomp.security.alpha.kubernetes.io/nginx注解的value没在设定的值列表中,不符合策略定义。 apiVersion: v1 kind: Pod metadata: name: nginx-seccomp-disallowed annotations: container.seccomp.security.alpha.kubernetes.io/nginx: unconfined labels: app: nginx-seccomp spec: containers: - name: nginx image: nginx
  • 符合策略实例的资源定义 示例中的container.seccomp.security.alpha.kubernetes.io/nginx注解的value在设定的值列表中,符合策略定义。 apiVersion: v1 kind: Pod metadata: name: nginx-seccomp-allowed annotations: container.seccomp.security.alpha.kubernetes.io/nginx: runtime/default labels: app: nginx-seccomp spec: containers: - name: nginx image: nginx
  • 节点访问(NodePort) 登录集群控制台。 在左侧导航栏中选择“服务发现”,选择“服务”页签,并选择服务所在命名空间。如需新建命名空间,请参见创建命名空间。 单击右上角“创建服务”,设置集群内访问参数。 Service名称:自定义服务名称,可与工作负载名称保持一致。 访问类型:选择“节点访问 NodePort”。 服务亲和: 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 命名空间:工作负载所在命名空间。 选择器:添加标签,Service根据标签选择Pod,填写后单击“添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”。 端口配置: 协议:请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 节点端口:容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。 自动生成:系统会自动分配端口号。 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。 单击“确定”,创建Service。
  • 负载均衡(LoadBalancer) 登录集群控制台。 在左侧导航栏中选择“服务发现”,选择“服务”页签,并选择服务所在命名空间。如需新建命名空间,请参见创建命名空间。 单击右上角“创建服务”,设置集群内访问参数。 Service名称:自定义服务名称,可与工作负载名称保持一致。 访问类型:选择“负载均衡 LoadBalancer”。 服务亲和: 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。 命名空间:工作负载所在命名空间。 选择器:添加标签,Service根据标签选择Pod,填写后单击“添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”。 端口配置: 协议:请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问应用时使用,端口范围为1-65535,可任意指定。 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。例如:nginx程序实际监听的端口为80。 注解:支持key/value对格式,请您根据自身业务以及厂家要求进行注解配置,填写完成后单击“添加”。 单击“确定”,创建Service。
  • 集群内访问(ClusterIP) 登录集群控制台。 在左侧导航栏中选择“服务发现”,选择“服务”页签,并选择服务所在命名空间。如需新建命名空间,请参见创建命名空间。 单击右上角“创建服务”,设置集群内访问参数。 Service名称:自定义服务名称,可与工作负载名称保持一致。 访问类型:选择“集群内访问 ClusterIP”。 命名空间:工作负载所在命名空间。 选择器:添加标签,Service根据标签选择Pod,填写后单击“添加”。也可以引用已有工作负载的标签,单击“引用负载标签”,在弹出的窗口中选择负载,然后单击“确定”。 端口配置: 协议:请根据业务的协议类型选择。 服务端口:容器端口映射到集群虚拟IP上的端口,用虚拟IP访问工作负载时使用,端口范围为1-65535,可任意指定。 容器端口:工作负载程序实际监听的端口,需用户确定。例如nginx程序实际监听的端口为80。 单击“确定”,创建Service。
  • 为什么需要Cilium Cilium是一种高性能、高可靠性的容器网络解决方案,它通过eBPF技术在Linux内核层面实现网络和安全通信。它支持多种传输层协议,例如TCP、UDP和HTTP,并提供了多种安全特性,例如应用层访问控制和服务网格支持。Cilium还支持Kubernetes网络策略,并提供了全局网络和服务发现功能,能够帮助管理员更好地管理和部署云原生应用和服务。 Cilium的eBPF 技术通过在Linux内核层面实时监控网络流量,实现了高效的安全数据包交换。该技术在网络功能虚拟化、容器网络和边缘计算等场景中都有广泛应用,能够帮助企业提升网络性能和安全性,为云原生应用提供更好的基础设施支持。 基本功能 为容器提供网络互通:Cilium通过为每个容器分配一个独特的IP地址来实现容器间的网络互通,同时支持多种网络协议。 具备网络安全检测能力:Cilium支持通过集成第三方的网络安全检测服务,如Snort等,来进行网络流量分析和检测。 自动进行容器安全策略管理:Cilium通过基于Kubernetes 的自定义资源定义(CRD)机制,为每个容器自动创建安全策略,保障容器的安全。 实现容器级别的负载均衡:Cilium支持实现容器级别的负载均衡,允许通过多种负载均衡算法来分配网络请求流量。 提供服务发现功能:Cilium支持借助基于Kubernetes的服务探测机制,自动发现容器内的服务,并将其注册到Kubernetes API中,以便于其他容器访问。
  • Cilium对接主机BGP 在页面提供的本地集群配置文件“cluster-[集群名称].yaml”中添加以下配置: CILIUM_BGP_ENABLE: true CILIUM_BGP_PEER_ADDRESS: 需要对接的交换机地址。 CILIUM_BGP_PEER_ASN: 需要对接的交换机BGP AS number(64512-65535)。 LOAD_BALANCER_CIDR:需要广播出去的负载均衡网段,可提供给metalLB等开源插件使用。 例图: 将需要对外暴露容器网络的节点IP,作为neighbor address(交换机邻居地址)配置在主机所在的BGP网络中,容器的ASN默认为65010。 Cilium的BGP能力是以节点粒度对外宣告节点容器路由,实现集群外节点服务直接访问集群内Pod。
  • Cilium underlay能力 在页面提供的本地集群配置文件“cluster-[集群名称].yaml”中添加以下配置: CILIUM_NETWORK_MODE: underlay 例图: 模式优势: 此模式下,Cilium会将所有未发送到其他容器的数据包委托给Linux内核的路由子系统。这意味着数据包将被路由直接转发,就好像本地进程发出数据包一样,减少了数据包的封装和转换。因此,在大流量场景下,该模式存在一定性能优势。 该模式下自动配置ipv4-native-routing-cidr,Cilium会在Linux内核中自动启用IP转发。 模式依赖: 在underlay模式下,运行Cilium的主机的网络必须能够使用分配给Pod或其他工作负载的地址转发IP流量,需要关闭节点的源目的地址检查,并且节点安全组按需放通容器网段的端口及协议。
  • 符合策略实例的资源定义 externalIPs中的IP为允许列表中的IP,符合策略实例。 apiVersion: v1 kind: Service metadata: name: allowed-external-ip spec: selector: app: MyApp ports: - name: http protocol: TCP port: 80 targetPort: 8080 externalIPs: - 203.0.113.0
  • 不符合策略实例的资源定义 externalIPs中的IP不为允许列表中的IP,不符合策略实例。 apiVersion: v1 kind: Service metadata: name: disallowed-external-ip spec: selector: app: MyApp ports: - name: http protocol: TCP port: 80 targetPort: 8080 externalIPs: - 1.1.1.1
  • 策略实例示例 服务的externalIP仅允许allowedIPs中定义的IP。 apiVersion: constraints.gatekeeper.sh/v1beta1 kind: K8sExternalIPs metadata: name: external-ips spec: match: kinds: - apiGroups: [""] kinds: ["Service"] parameters: allowedIPs: - "203.0.113.0"
  • k8clone备份使用方法 k8clone工具支持在Linux(x86、arm)和Windows环境中运行,使用方法相似。本文将以Linux(x86)环境为例进行介绍。 若使用Linux(arm)或Windows环境,请将下述命令中的k8clone-linux-amd64分别替换为k8clone-linux-arm64或k8clone-windows-amd64.exe。 在k8clone工具所在目录下执行./k8clone-linux-amd64 backup -h,可以查看k8clone工具备份的使用方法。 -k, --kubeconfig:指定kubectl的KubeConfig位置,默认是$HOME/.kube/config。kubeConfig文件:用于配置对Kubernetes集群的访问,KubeConfig文件中包含访问注册kubernetes集群所需要的认证凭据以及Endpoint(访问地址),详细介绍可参见Kubernetes文档。 -s, --api-server:Kubernetes API Server URL,默认是""。 -q, --context:Kubernetes Configuration Context,默认是""。 -n, --namespace:备份指定命名空间的云原生应用,多个命名空间用逗号分隔(如:ns1,ns2,ns3),默认是"",表示备份整个集群。 -e, --exclude-namespaces:排除指定命名空间对象的备份,不能和--namespace一起使用。 -x, --exclude-kind:排除指定资源类型的备份。 -y, --exclude-object:排除指定资源对象的备份。 -w, --exclude-having-owner-ref:排除拥有ownerReferences资源对象的备份,默认是false。 -d, --local-dir:备份数据放置的路径,默认是当前目录下k8clone-dump文件夹。 $ ./k8clone-linux-amd64 backup -h Backup Workload Data as yaml files Usage: k8clone backup [flags] Flags: -s, --api-server string Kubernetes api-server url -q, --context string Kubernetes configuration context -w, --exclude-having-owner-ref Exclude all objects having an Owner Reference -x, --exclude-kind strings Ressource kind to exclude. Eg. 'deployment' -e, --exclude-namespaces strings Namespaces to exclude. Eg. 'temp.*' as regexes. This collects all namespaces and then filters them. Don't use it with the namespace flag. -y, --exclude-object strings Object to exclude. Eg. 'configmap:kube-system/kube-dns' -h, --help help for backup -k, --kubeconfig string The kubeconfig of k8s cluster's. Default is the $HOME/.kube/config. -d, --local-dir string Where to dump yaml files (default "./k8clone-dump") -n, --namespace string Only dump objects from this namespace 示例如下: 整个集群对象的备份,默认路径为当前目录下“k8clone-dump”文件夹 ./k8clone-linux-amd64 backup 整个集群对象的备份,并指定备份数据路径 ./k8clone-linux-amd64 backup -d ./xxxx 指定命名空间对象的备份 ./k8clone-linux-amd64 backup -n default 排除命名空间对象的备份 ./k8clone-linux-amd64 backup -e kube-system,kube-public,kube-node-lease 排除指定资源类型的备份 ./k8clone-linux-amd64 backup -x endpoints,endpointslice 排除指定资源对象的备份 ./k8clone-linux-amd64 backup -y configmap:kube-system/kube-dns 排除拥有ownerReferences资源对象的备份 ./k8clone-linux-amd64 backup -w true
  • Oozie原理 Oozie是一个工作流引擎服务器,用于运行MapReduce任务工作流。同时Oozie还是一个Java Web程序,运行在Tomcat容器中。 Oozie工作流通过HPDL(一种通过XML自定义处理的语言,类似JBOSS JBPM的JPDL)来构造。包含“Control Node”(可控制的工作流节点)、“Action Node”。 “Control Node”用于控制工作流的编排,如“start”(开始)、“end”(关闭)、“error”(异常场景)、“decision”(选择)、“fork”(并行)、“join”(合并)等。 Oozie工作流中拥有多个“Action Node”,如MapReduce、Java等。 所有的“Action Node”以有向无环图DAG(Direct Acyclic Graph)的模式部署运行。所以在“Action Node”的运行步骤上是有方向的,当上一个“Action Node”运行完成后才能运行下一个“Action Node”。一旦当前“Action Node”完成,远程服务器将回调Oozie的接口,这时Oozie又会以同样的方式执行工作流中的下一个“Action Node”,直到工作流中所有“Action Node”都完成(完成包括失败)。 Oozie工作流提供各种类型的“Action Node”用于支持不同的业务需要,如MapReduce,HDFS,SSH,Java以及Oozie子流程。
  • Oozie结构 Oozie引擎是一个Web App应用,默认集成到Tomcat中,采用pg数据库。 基于Ext提供WEB Console,该Console仅提供对Oozie工作流的查看和监控功能。通过Oozie对外提REST方式的WS接口,Oozie client通过该接口控制(启动、停止等操作)Workflow流程,从而编排、运行Hadoop MapReduce任务,如图1所示。 图1 Oozie框架 图1中各部分的功能说明如表1所示。 表1 结构图说明 名称 描述 Console 提供对Oozie流程的查看和监控功能。 Client 通过接口控制Workflow流程:可以执行提交流程,启动流程,运行流程,终止流程,恢复流程等操作。 SDK 软件开发工具包SDK(SoftwareDevelopmentKit)是被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。 Database pg数据库。 WebApp(Oozie) WebApp(Oozie)即Oozie server,可以用内置的Tomcat容器,也可以用外部的,记录的信息比如日志等放在pg数据库中。 Tomcat Tomcat服务器是免费的开放源代码的Web应用服务器。 Hadoop组件 底层执行Oozie编排流程的各个组件,包括MapReduce、Hive等。
  • 购买集群 通过在MRS服务管理面,客户可以按需或者包年包月购买MRS集群,通过选择集群所建的区域及使用的云资源规格,一键式购买适合企业业务的MRS集群。MRS服务会根据用户选择的集群类型、版本和节点规格,帮助客户自动完成华为云企业级大数据平台的安装部署和参数调优。 MRS服务为客户提供完全可控的大数据集群,客户在创建时可设置虚拟机的登录方式(密码或者密钥对),所创建的MRS集群资源完全归客户所用。同时MRS支持在两节点4U8G的ECS上部署大数据集群,为客户测试开发提供更多的灵活选择。 MRS集群类型包括分析集群、流式集群和混合集群。 分析集群:用来做离线数据分析,提供Hadoop体系的组件。 流式集群:用来做流处理任务,提供流式处理组件。 混合集群:既可以用来做离线数据分析,又可以用来做流处理任务,提供Hadoop体系的组件和流式处理组件。 自定义:根据业务需求,可以灵活搭配所需组件(MRS 3.x及后续版本)。 MRS集群节点类型包括Master节点、Core节点和Task节点。 Master节点:集群中的管理节点。分布式系统的Master进程和Manager以及数据库均部署在该节点;该类型节点不可扩容。该类型节点的处理能力决定了整个集群的管理上限,MRS服务支持将Master节点规格提高,以支持更大集群的管理。 Core节点:支持存储和计算两种目标的节点,可扩容、缩容。因承载数据存储功能,因此在缩容时,为保证数据不丢失,有较多限制,无法进行弹性伸缩。 Task节点:仅用于计算的节点,可扩容、缩容。因只承载计算任务,因此可以进行弹性伸缩。 MRS购买集群方式支持自定义购买集群和快速购买集群两种。 自定义购买集群:自定义购买可以灵活地选择计费模式、配置项,针对不同的应用场景,可以选择不同规格的弹性云服务器,全方位贴合您的业务诉求。 快速购买集群:用户可以根据应用场景,快速购买对应配置的集群,提高了配置效率,更加方便快捷。当前支持快速购买Hadoop分析集群、HBase集群、Kafka集群、ClickHouse集群、实时分析集群。 Hadoop分析集群:Hadoop分析集群完全使用开源Hadoop生态,采用YARN管理集群资源,提供Hive、Spark离线大规模分布式数据存储和计算,SparkStreaming、Flink流式数据计算,Presto交互式查询,Tez有向无环图的分布式计算框等Hadoop生态圈的组件,进行海量数据分析与查询。 HBase集群:HBase集群使用Hadoop和HBase组件提供一个稳定可靠,性能优异、可伸缩、面向列的分布式云存储系统,适用于海量数据存储以及分布式计算的场景,用户可以利用HBase搭建起TB至PB级数据规模的存储系统,对数据轻松进行过滤分析,毫秒级得到响应,快速发现数据价值。 Kafka集群:Kafka集群使用Kafka和Storm组件提供一个开源高吞吐量,可扩展性的消息系统。广泛用于日志收集、监控数据聚合等场景,实现高效的流式数据采集,实时数据处理存储等。 ClickHouse集群:ClickHouse集群是一个用于联机分析的列式数据库管理系统,具有压缩率和极速查询性能。广泛用于互联网广告、App和Web流量、电信、金融、物联网等众多领域。 实时分析集群:实时分析集群使用Hadoop、Kafka、Flink和ClickHouse组件提供一个海量的数据采集、数据的实时分析和查询的系统。
  • 变更配置 在开通MRS前有多种实例供您选择,您可根据业务需要选择合适的Master和Core节点实例。当集群启动后,MRS提供如下几种变更配置的方式。 配置Task节点:新增Task节点,请参见扩容集群中的“相关任务”。 扩容:手动扩容Core或Task节点,请参见扩容集群。 升级规格:升级Master节点的实例规格,请参见升级Master节点规格。 配置弹性伸缩:根据业务数据量的变化动态调整集群Task节点数量以增减资源,请参见配置弹性伸缩规则。 若MRS提供的变更配置方式不满足您的要求,您也可以通过重建集群,然后做数据迁移的方式实现集群配置的变更。
  • 欠费 包年/包月集群,没有欠费的概念。 按需购买的集群是按每小时扣费,当余额不足,无法对上一个小时的费用进行扣费,就会导致集群欠费,集群欠费后有保留期。您续费后即可解冻集群,可继续正常使用,请注意在保留期进行的续费,是以原到期时间作为生效时间,您应当支付从进入保留期开始到续费时的服务费用。 您购买的集群欠费后,会导致部分操作受限,建议您尽快续费。具体受限操作如下所示: 创建集群 扩容集群 缩容集群 新增Task节点 升级Master节点规格
  • 客户价值 MRS的自动弹性伸缩可以帮助用户实现以下价值。 降低使用成本 部分企业并不是时刻都在进行批量分析,例如一般情况下数据持续接入,而到了特定时间段(例如凌晨3点)进行批量分析,可能仅需要消耗2小时。 MRS提供的弹性伸缩能力,可以帮助用户在进行批量分析操作时,将分析节点扩容到指定规模,而计算完毕后,则自动释放计算节点,尽可能的降低使用成本。 平衡突发查询 大数据集群上,由于有大量的数据,企业会经常面临临时的分析任务,例如支撑企业决策的临时数据报表等,都会导致对于资源的消耗在极短时间内剧增。MRS提供的弹性伸缩能力,可以在突发大数据分析时,及时补充计算节点,避免因为计算能力不足,导致业务宕机。用户无需手动购买额外资源,当突发事件结束后,MRS会自动判断缩容时机,自动完成缩容。 聚焦核心业务 大数据作为二次开发平台,开发人员时常难以判断具体的资源消耗,由于查询分析的条件复杂性(例如全局排序,过滤,合并等)以及数据的复杂性(例如增量数据的不确定性等),都会导致预估计算量难以进行,而使用弹性伸缩能力,可以让业务人员专注于业务开发,无需分心再做各种资源评估。
  • 特性简介 随着企业的数据越来越多,越来越多的企业选择使用Spark/Hive等技术来进行分析,由于数据量大,任务处理繁重,资源消耗较高,因此使用成本也越来越高。当前并不是每个企业在每时每刻在进行分析,而一般是在一天的一个时间段内进行分析汇总,因此MRS提供了弹性伸缩能力,可以自动在业务在繁忙时申请额外资源,业务不繁忙时释放闲置资源,让用户按需使用,尽可能的帮助客户降低使用成本,聚焦核心业务。 在大数据应用,尤其是周期性的数据分析处理场景中,需要根据业务数据的周期变化,动态调整集群计算资源以满足业务需要。MRS的弹性伸缩规则功能支持根据集群负载对集群进行弹性伸缩。此外,如果数据量为周期有规律的变化,并且希望在数据量变化前提前完成集群的扩缩容,可以使用MRS的资源计划特性。 MRS服务支持规则和时间计划两种弹性伸缩的策略: 弹性伸缩规则:根据集群实时负载对Task节点数量进行调整,数据量变化后触发扩缩容,有一定的延后性。 资源计划:若数据量变化存在周期性规律,则可通过资源计划在数据量变化前提前完成集群的扩缩容,避免出现增加或减少资源的延后。 弹性伸缩规则与资源计划均可触发弹性伸缩,两者既可同时配置也可单独配置。资源计划与基于负载的弹性伸缩规则叠加使用可以使得集群节点的弹性更好,足以应对偶尔超出预期的数据峰值出现。 当某些业务场景要求在集群扩缩容之后,根据节点数量的变化对资源分配或业务逻辑进行更改时,手动扩缩容的场景需要用户登录集群节点进行操作。对于弹性伸缩场景,MRS支持通过自定义弹性伸缩自动化脚本来解决。自动化脚本可以在弹性伸缩前后执行相应操作,自动适应业务负载的变化,免去了人工操作。同时,自动化脚本给用户实现个性需求提供了途径,完全自定义的脚本与多个可选的执行时机基本可以满足用户的各项需求,使弹性伸缩更具灵活性。
  • HBase开源增强特性:HBase热点自愈 该功能适用于MRS 3.3.0及之后版本。 HBase是一个分布式的KV数据库,Region是HBase数据管理的最小单元。如果用户在规划表和设计rowkey不合理,请求过于集中在少量固定Region时,会导致业务压力集中在单节点,造成业务侧可感知的性能下降甚至请求失败。 HBase服务增加了MetricController实例,开启热点检测能力,能够监控每个RegionServer节点的请求流量,通过聚合分析,识别出请求偏高的节点和Region,有助于快速发现热点问题;并提供一定的热点问题自愈能力,比如热点Region自动转移或Split。对于无法提供自愈的热点场景(单rowkey热点、顺序写热点等),提供了热点限流的能力,避免单点问题影响同节点的其他正常业务。
  • MRS Administrator策略内容 { "Depends": [ { "catalog": "BASE", "display_name": "Server Administrator" }, { "catalog": "BASE", "display_name": "Tenant Guest" } ], "Version": "1.0", "Statement": [ { "Action": [ "MRS:MRS:*" ], "Effect": "Allow" } ] }
  • MRS CommonOperations策略内容 { "Version": "1.1", "Statement": [ { "Action": [ "mrs:*:get*", "mrs:*:list*", "ecs:*:get*", "ecs:*:list*", "bms:*:get*", "bms:*:list*", "evs:*:get*", "evs:*:list*", "vpc:*:get*", "vpc:*:list*", "mrs:job:submit", "mrs:job:stop", "mrs:job:delete", "mrs:job:checkSql", "mrs:job:batchDelete", "mrs:file:create", "mrs:file:delete", "mrs:tag:batchOperate", "mrs:tag:create", "mrs:tag:delete", "mrs:manager:access", "mrs:patch:install", "mrs:patch:uninstall", "mrs:ops:grant", "mrs:ops:shareLog", "mrs:alarm:subscribe", "mrs:alarm:delete", "kms:*:get*", "kms:*:list*", "rds:*:get*", "rds:*:list*", "mrs:bootstrap:*", "bss:*:view*" ], "Effect": "Allow" }, { "Action": [ "mrs:cluster:create", "mrs:cluster:resize", "mrs:cluster:scaleUp", "mrs:cluster:delete", "mrs:cluster:policy" ], "Effect": "Deny" } ] }
  • MRS FullAccess策略内容 { "Version": "1.1", "Statement": [ { "Action": [ "mrs:*:*", "ecs:*:*", "bms:*:*", "evs:*:*", "vpc:*:*", "kms:*:*", "rds:*:*", "bss:*:*" ], "Effect": "Allow" } ] }
  • MRS ReadOnlyAccess策略内容 { "Version": "1.1", "Statement": [ { "Action": [ "mrs:*:get*", "mrs:*:list*", "mrs:tag:count", "ecs:*:get*", "ecs:*:list*", "bms:*:get*", "bms:*:list*", "evs:*:get*", "evs:*:list*", "vpc:*:get*", "vpc:*:list*", "kms:*:get*", "kms:*:list*", "rds:*:get*", "rds:*:list*", "bss:*:view*" ], "Effect": "Allow" }, { "Action": [ "mrs:cluster:create", "mrs:cluster:resize", "mrs:cluster:scaleUp", "mrs:cluster:delete", "mrs:cluster:policy", "mrs:job:submit", "mrs:job:stop", "mrs:job:delete", "mrs:job:batchDelete", "mrs:file:create", "mrs:file:delete", "mrs:tag:batchOperate", "mrs:tag:create", "mrs:tag:delete", "mrs:manager:access", "mrs:patch:install", "mrs:patch:uninstall", "mrs:ops:grant", "mrs:ops:shareLog", "mrs:alarm:subscribe" ], "Effect": "Deny" } ] }
  • MRS权限说明 默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 MRS部署时通过物理区域划分,为项目级服务。授权时,“作用范围”需要选择“区域级项目”,然后在指定区域(如华北-北京1)对应的项目(cn-north-1)中设置相关权限,并且该权限仅对此项目生效;如果在“所有项目”中设置权限,则该权限在所有区域项目中都生效。访问MRS时,需要先切换至授权区域。 权限模型根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于各服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对MRS服务,管理员能够控制IAM用户仅能对集群进行指定的管理操作。如不允许某用户组删除集群,仅允许操作MRS集群基本操作,如创建集群、查询集群列表等。多数细粒度策略以API接口为粒度进行权限拆分,MRS支持的API授权项请参见权限策略和授权项。 如表1所示,包括了MRS的所有默认系统策略。 表1 MRS系统策略 策略名称 描述 策略类别 MRS FullAccess MRS管理员权限,拥有该权限的用户可以拥有MRS所有权限。 细粒度策略 MRS CommonOperations MRS服务普通用户权限,拥有该权限的用户可以拥有MRS服务使用权限,无新增、删除资源权限。 细粒度策略 MRS ReadOnlyAccess MRS服务只读权限,拥有该权限的用户仅能查看MRS的资源。 细粒度策略 MRS Administrator 操作权限: 对MRS服务的所有执行权限。 拥有该权限的用户必须同时拥有Tenant Guest和Server Administrator权限。 RBAC策略 表2列出了MRS常用操作与系统权限的授权关系,您可以参照该表选择合适的系统权限。 表2 常用操作与系统策略的授权关系 操作 MRS FullAccess MRS CommonOperations MRS ReadOnlyAccess MRS Administrator 创建集群 √ x x √ 调整集群 √ x x √ 升级节点规格 √ x x √ 删除集群 √ x x √ 查询集群详情 √ √ √ √ 查询集群列表 √ √ √ √ 设置弹性伸缩策略 √ x x √ 查询主机列表 √ √ √ √ 查询操作日志 √ √ √ √ 创建并执行作业 √ √ x √ 停止作业 √ √ x √ 删除单个作业 √ √ x √ 批量删除作业 √ √ x √ 查询作业详情 √ √ √ √ 查询作业列表 √ √ √ √ 新建文件夹 √ √ x √ 删除文件 √ √ x √ 查询文件列表 √ √ √ √ 批量操作集群标签 √ √ x √ 创建单个集群标签 √ √ x √ 删除单个集群标签 √ √ x √ 按照标签查询资源列表 √ √ √ √ 查询集群标签 √ √ √ √ 访问Manager页面 √ √ x √ 查询补丁列表 √ √ √ √ 安装补丁 √ √ x √ 卸载补丁 √ √ x √ 运维通道授权 √ √ x √ 运维通道日志共享 √ √ x √ 查询告警列表 √ √ √ √ 订阅告警消息提醒 √ √ x √ 提交SQL语句 √ √ x √ 查询SQL结果 √ √ x √ 取消SQL执行任务 √ √ x √
  • 实现方案 多租户模式的HA方案原理如图1所示。 图1 Spark JDBCServer多租户 ProxyServer在启动时,向ZooKeeper注册自身消息,在指定目录中写入节点信息,节点信息包含了该实例对应的IP,端口,版本号和序列号等信息(多节点信息之间以逗号隔开)。 多租户模式下,MRS页面上的JDBCServer实例是指ProxyServer(JDBCServer代理)。 示例如下: serverUri=192.168.169.84:22550 ;version=8.1.0.1;sequence=0000001244,serverUri=192.168.195.232:22550 ;version=8.1.0.1;sequence=0000001242,serverUri=192.168.81.37:22550 ;version=8.1.0.1;sequence=0000001243, 客户端连接ProxyServer时,需要指定Namespace,即访问ZooKeeper哪个目录下的ProxyServer实例。在连接的时候,会根据当前租户名的Hash值与Zookeeper下的Namespace实例个数取模获取连接的实例,详细URL参见URL连接介绍。 客户端成功连接ProxyServer服务,ProxyServer服务首先确认是否有该租户的JDBCServer存在,如果有,直接将Beeline连上真正的JDBCServer;如果没有,则以YARN-Cluster模式启动一个新的JDBCServer。JDBCServer启动成功后,ProxyServer会获取JDBCServer的地址,并将Beeline连上JDBCServer。 客户端发送SQL语句给ProxyServer,ProxyServer将语句转交给真正连上的JDBCServer处理。最后JDBCServer服务将结果返回给ProxyServer,ProxyServer再将结果返回给客户端。 在HA方案中,每个ProxyServer服务(即实例)都是独立且等同的,当其中一个实例在升级或者业务中断时,其他的实例也能接受客户端的连接请求。
  • 背景介绍 JDBCServer多主实例方案中,JDBCServer的实现使用YARN-Client模式,但YARN资源队列只有一个,为了解决这种资源局限的问题,引入了多租户模式。 多租户模式是将JDBCServer和租户绑定,每一个租户对应一个或多个JDBCServer,而一个JDBCServer只给一个租户提供服务。不同的租户可以配置不同的YARN队列,从而达到资源隔离,且JDBCServer根据需求动态启动,可避免浪费资源。
  • 单独使用CronFederatedHPA 当不使用FederatedHPA策略,仅使用CronFederalHPA策略时,CronFederalHPA策略直接作用于工作负载,定时扩缩Pod数量。您可以通过设置CronFederalHPA策略的生效时间与目标Pod数,实现在固定时间段将工作负载自动扩缩至期望数量。 图2 单独使用CronFederatedHPA策略工作原理 具体流程为: 创建CronFederalHPA策略,设置CronFederatedHPA的生效时间与目标Pod数。 生效时间:CronFederalHPA策略会在该生效时间自动触发工作负载扩缩。 目标Pod数:在到达生效时间时,所期望的Pod数。 到达生效时间时,比较工作负载中的现有Pod数与1中设置的目标Pod数:目标Pod数大于现有Pod数时扩容工作负载,目标Pod数小于现有Pod数时缩容工作负载。 现有Pod数:CronFederatedHPA策略生效之前,工作负载中的Pod数量。
  • 为什么需要CronFederatedHPA策略 FederatedHPA是基于指标阈值进行伸缩的,因此存在一定的时延,这个时延主要包含:采集时延(分钟级) + 判断时延(分钟级) + 伸缩时延(分钟级)。这个分钟级的时延,可能会导致应用CPU飚高,响应时间变慢。因此,在一些复杂的业务场景下,可能有固定时间段高峰业务,又有日常突发高峰业务,若只使用标准的FederatedHPA功能,需要足够的时间来扩展工作负载,在预期的负载峰值可能会导致服务不可用。此种情况下,用户既期望能定时弹性伸缩应对固定时间段高峰业务,又期望能基于指标弹性伸缩应对日常突发高峰业务。 CronFederatedHPA策略基于预定的时间表,而非实时的资源使用情况,实现在固定时间段对工作负载进行扩缩容。您可以对一些有周期性变化的工作负载应用CronFederatedHPA策略,预期的业务高峰提前扩容资源,预期的业务低谷时定时回收资源。并且,CronFederatedHPA策略可以定时调整FederatedHPA伸缩范围以实现策略联动,实现复杂场景下的工作负载扩缩能力。
共100000条