云服务器内容精选

  • 可能原因 当前,U CS 集群联邦API Server版本为v1.25,因此HPA对象有autoscaling/v2和autoscaling/v1两个版本。然而,不论您创建的HPA版本为autoscaling/v2还是autoscaling/v1,联邦均会以autoscaling/v2版本进行分发。版本低于v1.23的集群不支持autoscaling/v2版本的HPA对象,因此HPA无法分发到该集群。查看HPA对应的resourceBinding,可以在其conditions中得到如下报错:cluster(s) did not have the API resource。
  • 解决方案 您可以在分发HPA前,将成员集群版本升级至v1.23及以上的版本,该版本默认支持autoscaling/v2的HPA。 若您仍想分发autoscaling/v1版本的HPA到成员集群,您的PropagationPolicy对象中的resourceSelectors[i].apiVersion字段应配置为autoscaling/v2,如示例YAML所示。分发成功后,您可以在成员集群中查询到autoscaling/v1版本的HPA。 apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: test-hpa spec: maxReplicas: 5 minReplicas: 1 scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: nginx targetCPUUtilizationPercentage: 10 --- apiVersion: policy.karmada.io/v1alpha1 kind: PropagationPolicy metadata: name: test-hpa-pp spec: placement: clusterAffinity: clusterNames: - member1 resourceSelectors: - apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler name: test-hpa namespace: default
  • 关联权限 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在目标舰队栏中,单击右上角的按钮。 图4 为舰队关联权限 在弹出的页面单击“修改容器舰队权限”或“关联权限”,打开修改权限页面,将已创建好的权限和舰队的命名空间关联起来。 图5 修改权限 命名空间:支持“全部命名空间”和“指定命名空间”。全部命名空间包括当前舰队已有的命名空间和舰队后续新增的命名空间;“指定命名空间”即表示您自己选择命名空间的范围,UCS服务提供了几个常见的命名空间供您选择(如default、kube-system、kube-public),您也可以新增命名空间,但要自行确保新增的命名空间在集群中存在。 请注意,选择的命名空间仅对权限中命名空间级资源生效,不影响权限中的集群资源。关于命名空间级和集群级资源的介绍,请参见Kubernetes资源对象章节。 关联权限:从下拉列表中选择权限,支持一次性选择多个权限,以达到批量授权的目的。 如果针对不同命名空间,关联的权限不同(例如:为default命名空间关联readonly权限,为development命名空间关联develop权限),可以单击按钮添加多组授权关系。 单击“确定”,完成权限的关联。 如果后续需要修改舰队的权限,采用同样的方法,重新选择命名空间和权限即可。
  • 创建舰队 登录UCS控制台,在左侧导航栏中选择“容器舰队”,在“容器舰队”页签下单击“创建容器舰队”。 填写舰队信息。 图1 创建容器舰队 舰队名称:自定义舰队的名称,需以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 添加集群:列表中显示当前未加入舰队的集群,可以在创建舰队时添加集群,也可以在舰队创建完成后添加。如不选择任何集群,则会创建一个空的舰队,完成创建后请参考添加集群。 描述:添加舰队的描述信息。 集群加入容器舰队后,将获得所选容器舰队的权限,失去原有权限。 单击“确定”,创建舰队。
  • 添加集群 登录UCS控制台,在左侧导航栏中选择“容器舰队”。 在目标舰队栏中单击“添加集群”,或单击右上角的按钮。 您也可以单击舰队名称进入舰队详情页,在“容器集群”页面单击右上角“添加集群”。 图2 为舰队添加集群 勾选一个或多个已有集群。一个集群只能加入一个舰队,因此列表中显示的集群均为未加入舰队的集群。 图3 添加集群 集群加入容器舰队,将拥有所选容器舰队的权限,但会失去原有赋予的权限。 如果该舰队开通了集群联邦,集群会自动接入集群联邦。关于集群联邦的介绍,请参见开通集群联邦章节。 单击“确定”,完成集群添加。
  • 注销舰队中的集群 登录UCS控制台,在左侧导航栏中单击“容器舰队”。 在“容器舰队”页签下单击舰队名称,进入舰队详情页。 在左侧导航栏中选择“容器集群”,在目标集群栏中,单击右上角的按钮。 弹出“注销集群”对话框,仔细阅读注意事项,确认风险后单击“确定”。 (可选)对于附着集群来说,注销集群成功后,还需前往目标集群卸载代理组件。 kubectl -n kube-system delete deployments/proxy-agent secret/proxy-agent-cert (可选)对于本地集群来说,注销集群成功后,您可以手动执行卸载命令,在本地主机环境中删除集群,清理资源: ./ucs-ctl delete cluster [集群名称] 如果命令执行失败,请参考如何手动清理本地集群节点?处理。
  • 现象一:提示clusterrole、clusterrolebinding已存在 问题原因:一个集群不能同时加入两个或两个以上的联邦。有这个报错提示,说明当前集群已经添加到联邦中,或者曾经加入过联邦但是存在资源残留。 解决方案:手工清理残留资源。 操作步骤: 获取报错集群的kubeconfig配置文件,并准备kubectl及运行节点,将kubeconfig文件放在运行节点/tmp目录。 执行如下命令,清理残留资源。 alias kubectl='kubectl --kubeconfig=/tmp/kubeconfig' kubectl delete clusterrolebinding `kubectl get clusterrolebinding |grep karmada-controller-manager | awk '{print $1}'` kubectl delete clusterrole `kubectl get clusterrole |grep karmada-controller-manager | awk '{print $1}'` kubectl delete namespace `kubectl get namespace |egrep 'karmada-[0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}' |awk '{print $1}'`
  • 现象三:CCE集群已绑定EIP,集群加入联邦仍失败,报错:network in cluster is stable, please retry it later 问题原因:联邦需要访问CCE集群的5443端口,但是CCE集群的控制面安全组入方向规则不允许124.70.21.61(源地址)访问CCE集群的5443端口。 解决方案:修改CCE控制面入方向安全组,允许124.70.21.61(源地址)访问CCE集群的5443端口。
  • 现象四:显示已接入集群联邦,状态异常,报错:cluster is not reachable 请在对应的成员集群中执行以下命令,查询ServiceAccount是否存在。其中{cluster_name}请替换为集群名称。 kubectl get sa -A|grep karmada-{cluster_name}.clusterspace.{cluster_name} 若回显显示ServiceAccount不存在,请先将该成员集群移出舰队,再重新添加该集群至对应舰队。
  • URI GET /v1/clustergroups 表1 Query参数 参数 是否必选 参数类型 描述 limit 否 Integer 分页获取列表时,页的大小,默认为-1 offset 否 Integer 分页获取列表时,起始偏移量,默认为0 order_by 否 String 分页获取列表时,排序参数,支持 create_at 和 update_at order 否 String 分页获取列表时,排序方向,支持 desc 和 asc
  • 响应示例 状态码: 200 返回容器舰队列表信息 { "items" : [ { "kind" : "ClusterGroup", "apiVersion" : "v1", "metadata" : { "name" : "cluster-test", "uid" : "bffbb35b-7949-11ee-886c-0255ac100037", "creationTimestamp" : "2023-11-02 06:33:35.558128 +0000 UTC", "updateTimestamp" : "2023-11-14 06:20:20.446476 +0000 UTC" }, "spec" : { "federationId" : "e2f27cc6-82b5-11ee-84e3-0255ac100032", "federationVersion" : "v1.7.0-t1109", "dnsSuffix" : [ "www.oidc.com" ] }, "status" : { "conditions" : [ { "type" : "Federation", "status" : "Unavailable", "reason" : "FederationUnavailable", "message" : "component volcano-scheduler is unhealthy", "lastTransitionTime" : "0001-01-01T00:00:00Z" } ] } }, { "kind" : "ClusterGroup", "apiVersion" : "v1", "metadata" : { "name" : "cluster-dev", "uid" : "4557ad49-22bf-11ee-b0c9-0255ac10004b", "creationTimestamp" : "2023-07-15 03:25:39.253589 +0000 UTC", "updateTimestamp" : "2023-10-19 11:52:14.509405 +0000 UTC" }, "spec" : { }, "status" : { } }, { "kind" : "ClusterGroup", "apiVersion" : "v1", "metadata" : { "name" : "test0131", "uid" : "108f5981-a105-11ed-a23e-0255ac100032", "creationTimestamp" : "2023-01-31 01:17:44.309185 +0000 UTC", "updateTimestamp" : "2023-06-29 01:02:28.78095 +0000 UTC" }, "spec" : { }, "status" : { } } ], "total" : 3 }
  • 请求示例 创建舰队,同时(可选)将集群加入该舰队 https://ucs.myhuaweicloud.com/v1/clustergroups { "metadata" : { "name" : "group02281605" }, "spec" : { "clusterIds" : [ "514c1a3c-8ec7-11ec-b384-0255ac100189", "d4804da3-8f03-11ec-b384-0255ac100189" ], "description" : "aaaaaaaaa" } }
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 身份认证信息 最小长度:1 最大长度:16384 表2 请求Body参数 参数 是否必选 参数类型 描述 metadata 是 RegisterClusterGroupObjectMeta object 容器舰队元数据信息。 spec 否 RegisterClusterGroupSpec object 属性 表3 RegisterClusterGroupObjectMeta 参数 是否必选 参数类型 描述 name 是 String 容器舰队名称 表4 RegisterClusterGroupSpec 参数 是否必选 参数类型 描述 clusterIds 否 Array of strings 关联的集群id description 否 String 容器舰队描述信息
  • 请求示例 curl -v -k -XPOST -H "content-type: application/json" -H "X-Auth-Token:$token" https://xxx.com:443/v1/clusters/{clusterid}/join -d "{"clustergroupID":"49077339-f1cd-11ec-a2be-0255ac1001c2"}" https://ucs.myhuaweicloud.com/v1/clusters/1e18b9c4-5a8c-11ed-aa7f-0255ac1001c2/join集群加入容器舰队
  • 步骤二:UCS管理员授权 使用UCS管理员登录UCS控制台,在左侧导航栏选择“权限管理”。 单击右上角的“创建权限”按钮。 在弹出页面中填写权限的参数项,如图7所示。 图7 创建权限 权限名称:自定义权限的名称,需以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 用户:选择权限关联的用户,即上一步创建的 IAM 用户。实际应用中,一个用户组会有多个用户,创建权限时,可以将这个用户组下的所有用户全部选中,以达到批量授权的目的。 权限类型:选择“管理员权限”。管理员权限表示对所有集群资源对象的读写权限。 单击“确定”,创建权限。 权限创建完成后,可前往“容器舰队”页面,单击目标舰队右上角按钮。 图8 为舰队关联权限 在弹出的页面单击“关联权限”,打开“修改权限”页面,将3中创建的权限和舰队的全部命名空间关联起来。 图9 关联权限 单击“确定”。完成后,使用该IAM用户登录UCS控制台可使用权限范围内的功能。 重复以上步骤,完成表2中其他权限的创建,以及权限和舰队的关联。