云服务器内容精选

  • 通过控制台YAML创建多集群服务(M CS ) 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“服务与路由”,选择“多集群服务”页签。 在多集群服务页签,单击右上角“YAML创建”,弹出多集群服务(MCS)YAML创建界面。 当前数据选择YAML,在编辑栏进行编辑(根据实际需求调整配置参数): apiVersion: networking.karmada.io/v1alpha1 kind: MultiClusterService metadata: 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 dosen't allow 'get loadbalancer' to be performed."或"because no identity-based policy allows the xxx action.",表示当前委托权限还未生效,请等待片刻后重试即可,错误出现在事件中则无需关心。
  • 通过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实例删除异常如何排查?
  • 通过MCI访问服务 MCI对象创建成功后,您可以通过 http://IP:port/path 访问后端工作负载,其中IP:port为MCI关联ELB的IP和端口,path为MCI对象中定义的路径。 MCI对象中还可以设置外部 域名 ,这样您就可以通过域名来访问到ELB,进而访问到后端服务。 spec: rules: - host: www.example.com # 域名 http: paths: - path: / backend: serviceName: nginx # 准备一个名为nginx的联邦service servicePort: 80 # 端口号为80 域名访问依赖于域名解析,需要您将域名解析指向ELB实例的IP地址,例如您可以使用云解析服务 DNS来实现域名解析。 若访问服务失败,请参考通过MCI访问服务失败,如何排查?。
  • 通过控制台YAML创建多集群路由(MCI) 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在“容器舰队”页签下找到已开通集群联邦的舰队,单击名称进入详情页。 在左侧导航栏中选择“服务与路由”,选择“多集群路由”页签。 在多集群路由页签,单击右上角“YAML创建”,弹出多集群路由(MCI)YAML创建界面。 当前数据选择YAML,在编辑栏进行编辑(根据实际需求调整配置参数): apiVersion: networking.karmada.io/v1alpha1 kind: MultiClusterIngress metadata: name: nginx-51063 namespace: default annotations: karmada.io/elb.id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx karmada.io/elb.projectid: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx karmada.io/elb.port: "80" spec: ingressClassName: public-elb rules: - http: paths: - backend: service: name: nginx-14479 # 准备一个名为nginx-14479的联邦service port: number: 80 # 端口号为80 path: / pathType: Prefix 编辑完成后,单击右下角“确定”,完成多集群路由(MCI)创建。
  • 准备工作 如您没有可用的ELB实例,需要先创建ELB实例,具体请参考创建独享型负载均衡器。该ELB实例需要满足以下条件: ELB为独享型。 ELB必须支持应用型(HTTP/HTTPS)。 ELB网络类型必须支持私网(有私有IP地址)。 如果ELB与成员集群的网络不在同一VPC内,ELB需要支持开启跨VPC访问的开关。 MCI为跨集群后端工作负载提供统一入口和七层网络访问,因此需要在联邦中提前部署可用的工作负载(Deployment)和服务(Service)。若您无可用工作负载和服务,请参考无状态负载和集群内访问(ClusterIP)创建。 设置集群为underlay网络,支持underlay网络的集群类型请参见设置集群网络。 若创建MCI实例时,出现报错"policy dosen't allow 'get loadbalancer' to be performed."或"because no identity-based policy allows the xxx action.",表示当前委托权限还未生效,请等待片刻后重试即可,错误出现在事件中则无需关心。
  • 通过Kubectl命令创建MCI对象 使用kubectl连接集群联邦,详细操作请参见使用kubectl连接集群联邦。 创建并编辑 mci.yaml 文件,文件内容定义如下所示,参数定义请参见表1。 vi mci.yaml apiVersion: networking.karmada.io/v1alpha1 kind: MultiClusterIngress metadata: name: nginx-ingress namespace: default annotations: karmada.io/elb.conditions.nginx-svc: '[{ "type": "header", "headerConfig": { "key":"x-header", "values": [ "green" ] } }]' karmada.io/elb.id: 90f9f782-1243-41cc-a57d-6157f6cb85bf karmada.io/elb.projectid: 65382450e8f64ac0870cd180d14e684b karmada.io/elb.port: "883" # 端口设置 karmada.io/elb.health-check-flag.nginx-svc: "on" # 对应服务的健康检查配置项开关 karmada.io/elb.health-check-option.nginx-svc: '{"protocol":"TCP"}' # 对应服务的健康检查配置项 spec: ingressClassName: public-elb rules: - host: demo.localdev.me http: paths: - backend: service: name: nginx-svc # 准备一个名为nginx-svc的联邦service port: number: 8080 # 端口号为8080 path: /web pathType: Prefix MCI对象的结构体定义与networking.kubernetes.io/v1版本Ingress一致,不同之处在于后端服务需要填写为联邦Service,即在UCS控制台创建的Service,具体请参见集群内访问(ClusterIP)。 在配置MCI文件内容的过程中需要遵守的约束条件如下: apiVersion,kind,name必须指定。 spec下不允许填写TLS和DefaultBackend字段。 rules、paths不能为空。 host必须是DNS名称,不可以是IP地址。 service中所指定的后端服务必须是存在的、且输入的相关信息(如端口)是正确的,否则会导致访问服务失败。若您已经创建了参数信息错误的MCI对象,请参考4中的命令更新该MCI对象。 paths中,配置的高级转发策略(karmada.io/elb.conditions.{service name})越多的后端(backend)在paths中的位置应该越靠前。因为backend在paths中配置的位置越靠前,其转发优先级越高。 示例:如果为后端X配置两条转发策略a和b,为后端Y配置一条转发规则a,则此时paths中X的配置顺序应在Y之前,否则,同时符合a、b两条转发规则的流量将按照优先级顺序全部转发至Y中。 backend下不允许填写resource字段。 path值需要是绝对路径;不合法的path值:invalidPathSequences = []string{"//", "/./", "/../", "%2f","%2F"},invalidPathSuffixes = []string{"/..", "/."}。 pathType合法值:Exact、Prefix、ImplementationSpecific。 在默认配置下,Service名称的长度限制最长支持50个字符。 表1 关键参数说明 参数 是否必填 参数类型 描述 karmada.io/elb.id 是 String MCI关联的elb的id,不允许为空。 取值范围:1-32个字符。 karmada.io/elb.projectid 是 String MCI关联的elb所属的项目ID,获取方法请参见获取项目ID。 取值范围:1-32个字符。 karmada.io/elb.port 否 String MCI关联的elb的端口,不填时默认为80。 取值范围:1-65535。 karmada.io/elb.health-check-flag.{service name} 否 String 是否启用健康检查,可选值为: on:开启 off:不开启 不填写时默认为off。 说明: 该标签为"karmada.io/elb.health-check-flag.{serviceName}",仅对对应的service生效; 在annotation开启健康检查配置的情况下,Service名称的长度不应超过41个字符。 karmada.io/elb.health-check-option.{service name} 否 HealthCheck Object 健康检查参数,详情请参见HealthCheck。{service name}请修改为联邦Service的名称。 说明: 健康检查参数配置示例: karmada.io/elb.health-check-option.nginx-svc: '{"protocol":"TCP","delay":"5","connect_port":"80","timeout":"1","max_retries":"1","path":"/wd"}' 在annotation开启健康检查配置的情况下,Service名称的长度不应超过39个字符。 karmada.io/elb.conditions.{service name} 否 Array of Condition Object 高级转发策略,详情请参见Condition。{service name}请修改为联邦Service的名称。 karmada.io/elb.lb-algorithm.{service name} 否 String 转发算法: ROUND_ROBIN:加权轮询算法。 LEAST_CONNECTIONS:加权最少连接算法。 SOURCE_IP:源IP算法。 不填写时默认为ROUND_ROBIN。 {service name}请修改为联邦Service的名称。 karmada.io/elb.keepalive_timeout 否 string 客户端连接空闲超时时间,单位为秒。当一直未请求的时间超过配置值,负载均衡会暂时中断当前连接,直到下一次请求时再重新建立新的连接。 不填写时默认为60s。 取值范围:0-4000s karmada.io/elb.client_timeout 否 string 等待客户端请求超时时间,单位为秒。 不填写时默认值为60s。 取值范围:1-300s karmada.io/elb.member_timeout 否 string 等待后端服务器响应超时时间,单位为秒。请求转发后端服务器后,若未响应时间超过配置值,负载均衡将终止等待,并返回HTTP 504错误码。 不填写时默认为60s。 取值范围:1-300s ingressClassName 是 String ingressClass名称。取值必须为public-elb。 host 否 String 为服务访问域名配置,默认为"",表示域名全匹配。请确保所填写的域名已注册并备案,一旦配置了域名规则后,必须使用域名访问。 backend 否 Backend Object 后端,是Service和端口名称的组合。对于发往MCI的 HTTP和HTTPS请求,如果与规则中的主机和路径匹配,则会被发送到所列出的后端。 注意: 后端在paths中的配置顺序决定了策略的转发优先级。 示例:如果为后端X配置两条转发策略a和b,为后端Y配置一条转发规则a,则此时paths中X的配置顺序应在Y之前,否则,同时符合a、b两条转发规则的流量将按照优先级顺序全部转发至Y中。 path 是 String 路由路径,您可以自定义设置。所有外部访问请求需要匹配host和path。 说明: 此处添加的访问路径要求后端应用内存在相同的路径,否则转发无法生效。 例如,Nginx应用默认的Web访问路径为“/usr/share/nginx/html”,在为Ingress转发策略添加“/test”路径时,需要应用的Web访问路径下也包含相同路径,即“/usr/share/nginx/html/test”,否则将返回404。 pathType 是 String 路径类型。 ImplementationSpecific: 正则匹配,请求的URL和设定的URL正则表达式匹配。 Exact:精确匹配 URL 路径,且区分大小写。 Prefix:前缀匹配,且区分大小写。该方式是将URL路径通过“/”分隔成多个元素 ,并且对元素进行逐个匹配。 如果URL中的每个元素均和路径匹配,则说明该URL的子路径均可以正常路由。 说明: Prefix匹配时每个元素均需精确匹配,如果URL的最后一个元素是请求路径中最后一个元素的子字符串,则不会匹配 。例如:/foo/bar匹配/foo/bar/baz,但不匹配/foo/barbaz。 通过“/”分隔元素时,若URL或请求路径以“/”结尾,将会忽略结尾的“/”。例如:/foo/bar会匹配/foo/bar/。 关于Ingress路径匹配示例,请参见示例。 表2 HealthCheck参数说明 参数 是否必填 参数类型 描述 protocol 否 String 健康检查使用的协议,支持TCP/HTTP,默认值是HTTP。 connect_port 否 Int 健康检查使用的端口。取值范围[1,65535],为可选参数。 说明: 默认使用后端服务器默认业务端口进行健康检查。指定特定端口后,使用指定的端口进行健康检查。 delay 否 Int 健康检查的延迟时间,以秒为单位,1-50,默认值是5秒。 timeout 否 Int 健康检查的超时时间,以秒为单位,1-50,默认值是10秒。 path 否 String 健康检查的请求URL,当type为HTTP/HTTPS时生效。 以"/"开头,默认为"/"。支持使用字母、数字和短划线(-)、正斜线(/)、半角句号(.)、百分号(%)、半角问号(?)、井号(#)和and(&)以及扩展字符集。长度为1-80个字符。 max_retries 否 Int 最大重试次数,取值范围1-10,默认值是3次。 表3 Condition参数说明 参数 是否必填 参数类型 描述 type 是 String 高级转发策略类型,当前仅支持header。 headerConfig 是 headerConfig Object 高级转发策略对象,详情请参见headerConfig。 表4 headerConfig参数说明 参数 是否必填 参数类型 描述 key 是 String 转发Header头。 长度限制1-40字符,只允许包含字母、数字、短划线和下划线。 values 是 String数组 转发Header头对应的值。 长度限制1-128字符,不支持空格, 双引号,支持以下通配符:*(匹配0个或更多字符)和?(正好匹配1个字符)。 执行如下命令创建MCI对象。 kubectl apply -f mci.yaml 回显如下。 multiClusterIngress.networking.karmada.io/nginx-ingress created 创建完成后,可以执行如下命令操作MCI对象。其中nginx-ingress为MCI对象的名称。 获取MCI对象:kubectl get mci nginx-ingress 更新MCI对象:kubectl edit mci nginx-ingress 删除MCI对象:kubectl delete mci nginx-ingress
  • 约束限制 当前MCI仅支持版本为1.21及以上的 CCE Turbo 集群、网络模型为underlay的其他Kubernetes集群创建。 请提前做好网络规划,保证成员集群间容器网络不冲突,确保ELB实例与容器Pod IP网络可达。若MCI的ELB实例与集群处于不同VPC内,请提前打通VPC间的网络。 当为同一Service同时配置MCI与MCS时,该Service将会下发至MCS中配置的下发集群、访问集群以及对应工作负载的部署集群。
  • 配额限制 为防止资源滥用,平台限定了各服务资源的配额,对用户的资源数量和容量做了限制。UCS具有集群、舰队、权限、集群联邦,以及容器智能分析实例配额限制,如表1所示。若UCS提供的默认配额无法满足使用需要,您可以提交工单申请扩大配额。 集群配额:UCS支持接入的集群数量上限,华为云集群、本地集群、附着集群、多云集群和伙伴云集群的数量均占用该配额值。 舰队配额:用户拥有的舰队数量上限。 权限配额:用户可以在“权限管理”页面创建的权限数量上限。 集群联邦配额:用户可以开通的集群联邦数量上限。不可申请扩大配额。 容器智能分析实例配额:用户可以创建的容器智能分析实例数量上限。不可申请扩大配额。 表1 UCS配额项 配额项 默认配额值 集群 50 舰队 50 权限 50 集群联邦 1 容器智能分析实例 1 用户在使用UCS时也会使用其他云服务,例如弹性云服务器、云硬盘、虚拟私有云、弹性负载均衡、 容器镜像服务 、云解析服务等。其他云服务配额与UCS配额相互独立,由各服务自行管理,详情请参见关于配额。
  • 集群中Kubernetes资源权限 集群中Kubernetes资源权限是基于Kubernetes RBAC能力的授权,管理员可授予用户针对集群内特定Kubernetes资源对象的细化权限。这些资源包括集群级资源和命名空间级资源,细化的操作权限包括get、list、watch、create、update、patch,以及delete,权限最终作用在舰队或未加入舰队的集群的命名空间上。操作权限的说明如下: get:按名称检索特定的资源对象。 list:检索命名空间中特定类型的所有资源对象。 watch:响应资源变化。 create:创建资源。 update:更新资源。 patch:局部更新资源。 delete:删除资源。 关于集群级资源、命名空间级资源的解释,请参考Kubernetes资源对象。 例如,按照图1所示的方案配置权限后,用户A仅能对舰队的命名空间A中的Deployment、Pod、Service执行get、list、watch(只读操作)权限,而用户B可以对舰队的命名空间B中的全部资源执行全部操作。 图1 Kubernetes资源授权示意图 在UCS控制台中内置了三种常见的权限类型:管理员权限、开发权限、只读权限,您可以直接使用这些权限类型为用户授权。当然,如果现有权限类型无法满足您的需求,也可以自定义权限,只需要指定操作类型和资源对象即可。 表3 权限类型说明 权限类型 说明 管理员权限 对所有Kubernetes资源对象的读写权限 开发权限 对大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限 只读权限 对所有Kubernetes资源对象的只读权限
  • UCS服务资源权限 默认情况下,管理员创建的 IAM 用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于被授予的权限对云服务进行操作。 UCS部署时不区分物理区域,为全局级服务。授权时,在全局级服务中设置权限,访问UCS时,不需要切换区域。 权限根据授权精细程度分为角色和策略。 角色:IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。由于各云服务之间存在业务依赖关系,因此给用户授予角色时,可能需要一并授予依赖的其他角色,才能正确完成业务。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 策略:IAM最新提供的一种细粒度授权的能力,可以精确到具体服务的操作、资源以及请求条件等。基于策略的授权是一种更加灵活的授权方式,能够满足企业对权限最小化的安全管控要求。例如:针对UCS服务,管理员能够控制IAM用户仅能对某一类舰队和集群资源进行指定的管理操作。 表1包括了UCS的所有系统权限。 表1 UCS系统权限 系统角色/策略名称 描述 类别 UCS FullAccess UCS服务管理员权限,拥有该权限的用户拥有服务的所有权限(包含制定权限策略、安全策略等)。 系统策略 UCS CommonOperations UCS服务基本操作权限,拥有该权限的用户可以执行创建工作负载、流量分发等操作。 系统策略 UCS CIAOperations UCS服务容器智能分析管理员权限。 系统策略 UCS ReadOnlyAccess UCS服务只读权限(除容器智能分析只读权限)。 系统策略 华为云各服务之间存在业务交互关系,UCS也依赖其他云服务实现一些功能(如镜像仓库、域名解析),因此,上述四种系统策略经常和其他云服务的角色或策略结合使用,以达到精细化授权的目的。管理员在为IAM用户授权时,应该遵循权限最小化的安全实践原则,表2列举了UCS各功能管理员、操作、只读权限所需要的最小权限。 表2 UCS功能所需的最小权限 功能 权限类型 权限范围 最小权限 容器舰队 管理员权限 创建、删除舰队 注册华为云集群(CCE集群、CCE Turbo集群)、本地集群或附着集群 注销集群 将集群加入、移出舰队 为集群或舰队关联权限 开通集群联邦、联邦管理相关操作(如创建联邦工作负载、创建域名访问等) UCS FullAccess 只读权限 查询集群、舰队的列表或详情 UCS ReadOnlyAccess 华为云集群 管理员权限 对华为云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的读写权限。 UCS FullAccess + CCE Administrator 操作权限 对华为云集群及集群下大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 UCS CommonOperations + CCE Administrator 只读权限 对华为云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的只读权限。 UCS ReadOnlyAccess + CCE Administrator 本地/附着/多云/伙伴云集群 管理员权限 本地/附着/多云/伙伴云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的读写权限。 UCS FullAccess 操作权限 本地/附着/多云/伙伴云集群及集群下大多数Kubernetes资源对象的读写权限,对命名空间、资源配额等Kubernetes资源对象的只读权限。 UCS CommonOperations + UCS RBAC权限(需要包含namespaces资源对象的list权限) 只读权限 本地/附着/多云/伙伴云集群及集群下所有Kubernetes资源对象(包含节点、工作负载、任务、服务等)的只读权限。 UCS ReadOnlyAccess + UCS RBAC权限(需要包含namespaces资源对象的list权限) 镜像仓库 管理员权限 容器 镜像服务 的所有权限,包括创建组织、上传镜像、查看镜像列表或详情、下载镜像等操作。 SWR Administrator 权限管理 管理员权限 创建、删除权限 查看权限列表或详情 说明: 创建权限需要同时授予子用户IAM ReadOnlyAccess权限(IAM服务的只读权限),用于获取IAM用户列表。 UCS FullAccess + IAM ReadOnlyAccess 只读权限 查看权限列表或详情 UCS ReadOnlyAccess + IAM ReadOnlyAccess 策略中心 管理员权限 启用策略中心 创建、停用策略实例 查看策略列表 查看策略实施详情 UCS FullAccess 只读权限 对于已启用策略中心的舰队和集群,拥有该权限的用户可以查看策略列表和查看策略实施详情。 UCS CommonOperations 或 UCS ReadOnlyAccess 服务网格 管理员权限 应用服务网格的所有权限,包括创建网格、添加集群、sidecar注入、查看网格列表或详情、卸载网格等。 CCE Administrator 流量分发 管理员权限 创建流量策略、暂停调度策略、删除调度策略等操作。 (推荐)UCS CommonOperations + DNS Administrator 或 UCS FullAccess + DNS Administrator 只读权限 查看流量策略列表或详情 UCS ReadOnlyAccess + DNS Administrator 容器智能分析 管理员权限 接入、取消接入集群 查看基础设施、应用负载等多维度监控数据 UCS CIAOperations 云原生服务中心 管理员权限 云原生服务中心的所有权限,包括订阅服务、查看服务列表或详情、创建服务实例、查看实例列表或详情、删除服务实例、退订服务等操作。 UCS FullAccess 只读权限 云原生服务中心的只读权限,包括查看服务列表或详情、查看实例列表或详情等操作。 UCS ReadOnlyAccess
  • UCS权限类型 UCS权限管理是在IAM与Kubernetes的角色访问控制(RBAC)的能力基础上,打造的细粒度权限管理功能。支持UCS服务资源权限、集群中Kubernetes资源权限两种维度的权限控制,这两种权限针对的是不同类型的资源,在授权机制上也存在一些差异,具体如下: UCS服务资源权限:是基于IAM系统策略的授权。UCS服务资源包括容器舰队、集群、联邦实例等等,管理员可以针对用户的角色(如开发、运维)进行差异化授权,精细控制他们对UCS资源的使用范围。 集群中Kubernetes资源权限:是基于Kubernetes RBAC能力的授权,可授予针对集群内Kubernetes资源对象的细化权限,通过权限设置可以让不同的用户有操作不同Kubernetes资源对象的权限(如工作负载、任务、服务等Kubernetes原生资源)。 如果您的团队主要使用UCS服务资源,那么IAM系统策略能够满足您的诉求;如果还需要集群内各个Kubernetes资源对象的细化权限,则必须结合Kubernetes RBAC一起使用。
  • 步骤一:注册集群 登录UCS控制台。 在左侧导航栏中选择“容器舰队”,单击附着集群选项卡中的“注册集群”按钮。 参考表1填写待添加集群的基础信息,其中带“*”的参数为必填参数。 表1 注册集群基础信息配置 参数 参数说明 集群名称* 输入集群的自定义名称,需以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 集群服务商* 选择一个集群服务商。 所属区域* 选择集群所在的区域。 集群标签 非必填项,以键值对的形式为集群添加标签,可以通过标签实现集群的分类。键值对可自定义,以字母或者数字开头和结尾,由字母、数字、连接符(-)、下划线(_)、点号(.)组成,且63个字符之内。 上传KubeConfig* 上传kubectl的配置文件来完成集群认证,支持JSON或YAML格式。获取KubeConfig文件的操作步骤因厂商而异,请参见KubeConfig。 选择Context* 选择对应的Context。在完成KubeConfig文件上传后,选项列表将自动获取文件中的“contexts”字段。 默认值为KubeConfig文件中“current-context”字段指定的Context,若文件中无此字段则需要从列表中手动选择。 容器舰队 选择集群所属的舰队。 舰队用于权限精细化管理,一个集群只能加入一个舰队。若不选择舰队,集群注册成功后将显示在“未加入舰队的集群”页签下,后续还可以再添加至舰队中。 不支持在注册集群阶段选择已开通集群联邦能力的舰队,如果一定要加入这个舰队,请在集群注册成功后,再添加到该舰队中。关于集群联邦的介绍,请参见开通集群联邦章节。 如需新建舰队,请参见管理容器舰队。 单击“确定”,集群注册成功后如图1所示,请在30分钟内接入网络。您可选择集群的接入方式或单击右上角按钮查看详细的网络接入流程。 如您未在30分钟内接入网络,将会导致集群注册失败,可单击右上角按钮重新注册集群。如果已经接入但数据未采集上来,请等待2分钟后刷新集群。 图1 集群等待接入状态
  • 步骤三:购买终端节点 登录UCS控制台,单击待接入集群栏的“单击接入”进入集群接入界面,单击“私网接入”。 查看“创建终端节点”中的服务名称,单击,记录服务名称。 图3 创建终端节点 登录 VPC终端节点 控制台,单击“创建终端节点”,创建连接不同服务的终端节点。 选择终端节点的区域。 选择“按名称查找服务”,输入所记录的服务名称,并单击“验证”。 图4 购买终端节点 选择步骤一:准备网络环境中与集群网络连通的虚拟私有云以及对应的子网。 根据需求选择终端节点的“节点IP”为“自动分配”或“手动分配”。 配置完其他参数后,单击“立即购买”,并进行规格确认。 规格确认无误,单击“提交”,任务提交成功。 参数信息配置有误,需要修改,单击“上一步”,修改参数,然后单击“提交”。
  • 步骤四:接入集群 登录UCS控制台,在“等待接入”状态下的目标集群栏中单击“私网接入”。 选择项目,再选择步骤三:购买终端节点中创建的终端节点。 图5 选择终端节点 将2中的agent配置文件上传至节点。 单击“安装集群代理agent配置”,在待接入集群中执行如下命令,可单击右侧直接复制命令。 图6 安装集群代理agent配置 私网接入的集群无法通过私网下载SWR镜像仓库中的镜像,请确保工作负载运行的节点可访问公网。 拉取proxy-agent容器镜像要求集群需要具备公网访问能力,或将proxy-agent镜像上传至集群可访问的镜像仓库,否则将导致proxy-agent部署失败。 前往UCS控制台刷新集群状态,集群处于“运行中”。