云服务器内容精选

  • 自定义命名空间权限(kubectl) kubectl访问CCE集群是通过集群上生成的配置文件(kubeconfig.json)进行认证,kubeconfig.json文件内包含用户信息,CCE根据用户信息的权限判断kubectl有权限访问哪些Kubernetes资源。即哪个用户获取的kubeconfig.json文件,kubeconfig.json就拥有哪个用户的信息,这样使用kubectl访问时就拥有这个用户的权限。而用户拥有的权限就是集群权限(IAM授权)与命名空间权限(Kubernetes RBAC授权)的关系所示的权限。 除了使用cluster-admin、admin、edit、view这4个最常用的clusterrole外,您还可以通过定义Role和RoleBinding来进一步对命名空间中不同类别资源(如Pod、Deployment、Service等)的增删改查权限进行配置,从而做到更加精细化的权限控制。 Role的定义非常简单,指定namespace,然后就是rules规则。如下面示例中的规则就是允许对default命名空间下的Pod进行GET、LIST操作。 kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: default # 命名空间 name: role-example rules: - apiGroups: [""] resources: ["pods"] # 可以访问pod verbs: ["get", "list"] # 可以执行GET、LIST操作 apiGroups表示资源所在的API分组。 resources表示可以操作哪些资源:pods表示可以操作Pod,其他Kubernetes的资源如deployments、configmaps等都可以操作 verbs表示可以执行的操作:get表示查询一个Pod,list表示查询所有Pod。您还可以使用create(创建), update(更新), delete(删除)等操作词。 详细的类型和操作请参见使用 RBAC 鉴权。 有了Role之后,就可以将Role与具体的用户绑定起来,实现这个的就是RoleBinding了。如下所示。 kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: RoleBinding-example namespace: default annotations: CCE.com/IAM: 'true' roleRef: kind: Role name: role-example apiGroup: rbac.authorization.k8s.io subjects: - kind: User name: 0c97ac3cb280f4d91fa7c0096739e1f8 # user-example的用户ID apiGroup: rbac.authorization.k8s.io 这里的subjects就是将Role与IAM用户绑定起来,从而使得IAM用户获取role-example这个Role里面定义的权限,如下图所示。 图4 RoleBinding绑定Role和用户 subjects下用户的类型还可以是用户组,这样配置可以对用户组下所有用户生效。 subjects: - kind: Group name: 0c96fad22880f32a3f84c009862af6f7 # 用户组ID apiGroup: rbac.authorization.k8s.io 使用IAM用户user-example连接集群,获取Pod信息,发现可获取到Pod的信息。 # kubectl get pod NAME READY STATUS RESTARTS AGE deployment-389584-2-6f6bd4c574-2n9rk 1/1 Running 0 4d7h deployment-389584-2-6f6bd4c574-7s5qw 1/1 Running 0 4d7h deployment-3895841-746b97b455-86g77 1/1 Running 0 4d7h deployment-3895841-746b97b455-twvpn 1/1 Running 0 4d7h nginx-658dff48ff-7rkph 1/1 Running 0 4d9h nginx-658dff48ff-njdhj 1/1 Running 0 4d9h # kubectl get pod nginx-658dff48ff-7rkph NAME READY STATUS RESTARTS AGE nginx-658dff48ff-7rkph 1/1 Running 0 4d9h 然后查看Deployment和Service,发现没有权限;再查询kube-system命名空间下的Pod信息,发现也没有权限。这就说明IAM用户user-example仅拥有default这个命名空间下GET和LIST Pod的权限,与前面定义的没有偏差。 # kubectl get deploy Error from server (Forbidden): deployments.apps is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "deployments" in API group "apps" in the namespace "default" # kubectl get svc Error from server (Forbidden): services is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "services" in API group "" in the namespace "default" # kubectl get pod --namespace=kube-system Error from server (Forbidden): pods is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "pods" in API group "" in the namespace "kube-system"
  • 示例:授予命名空间只读权限(view) view权限拥有命名空间查看权限,您可以给某个或全部命名空间授权。 图8 授予default命名空间只读权限(view) 如果使用kubectl查看可以看到创建了一个RoleBinding,将view和cce-role-group这个用户组绑定了起来,且权限范围是default这个命名空间。 # kubectl get rolebinding NAME ROLE AGE clusterrole_view_group0c96fad22880f32a3f84c009862af6f7 ClusterRole/view 7s # kubectl get rolebinding clusterrole_view_group0c96fad22880f32a3f84c009862af6f7 -oyaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: annotations: CCE.com/IAM: "true" creationTimestamp: "2021-06-24T01:36:53Z" name: clusterrole_view_group0c96fad22880f32a3f84c009862af6f7 namespace: default resourceVersion: "36965800" selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/clusterrole_view_group0c96fad22880f32a3f84c009862af6f7 uid: b86e2507-e735-494c-be55-c41a0c4ef0dd roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: view subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: 0c96fad22880f32a3f84c009862af6f7 使用被授予用户连接集群,您会发现可以查询default命名空间的资源,但无法创建资源。 # kubectl get pod NAME READY STATUS RESTARTS AGE test-568d96f4f8-brdrp 1/1 Running 0 40m test-568d96f4f8-cgjqp 1/1 Running 0 40m # kubectl run -i --tty --image tutum/dnsutils dnsutils --restart=Never --rm /bin/sh Error from server (Forbidden): pods is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot create resource "pods" in API group "" in the namespace "default"
  • 示例:授予命名空间开发权限(edit) edit权限拥有命名空间大多数资源的读写权限,您可以授予用户/用户组全部命名空间edit权限。 图7 授予default命名空间开发权限(edit) 如果使用kubectl查看可以看到创建了一个RoleBinding,将edit和cce-role-group这个用户组绑定了起来,且权限范围是default这个命名空间。 # kubectl get rolebinding NAME ROLE AGE clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 ClusterRole/admin 18s # kubectl get rolebinding clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 -oyaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: annotations: CCE.com/IAM: "true" creationTimestamp: "2021-06-24T01:30:08Z" name: clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 namespace: default resourceVersion: "36963685" selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 uid: 6c6f46a6-8584-47da-83f5-9eef1f7b75d6 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: edit subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: 0c96fad22880f32a3f84c009862af6f7 使用被授予用户连接集群,您会发现可以查询和创建default命名空间的资源,但无法查询kube-system命名空间资源,也无法查询集群级别的资源。 # kubectl get pod NAME READY STATUS RESTARTS AGE test-568d96f4f8-brdrp 1/1 Running 0 33m test-568d96f4f8-cgjqp 1/1 Running 0 33m # kubectl get pod -nkube-system Error from server (Forbidden): pods is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "pods" in API group "" in the namespace "kube-system" # kubectl get pv Error from server (Forbidden): persistentvolumes is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot list resource "persistentvolumes" in API group "" at the cluster scope
  • 示例:授予集群管理员权限(cluster-admin) 集群全部权限可以使用cluster-admin权限,cluster-admin包含集群所有资源的权限。 图5 授予集群管理员权限(cluster-admin) 如果使用kubectl查看可以看到创建了一个ClusterRoleBinding,将cluster-admin和cce-role-group这个用户组绑定了起来。 # kubectl get clusterrolebinding NAME ROLE AGE clusterrole_cluster-admin_group0c96fad22880f32a3f84c009862af6f7 ClusterRole/cluster-admin 61s # kubectl get clusterrolebinding clusterrole_cluster-admin_group0c96fad22880f32a3f84c009862af6f7 -oyaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: annotations: CCE.com/IAM: "true" creationTimestamp: "2021-06-23T09:15:22Z" name: clusterrole_cluster-admin_group0c96fad22880f32a3f84c009862af6f7 resourceVersion: "36659058" selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/clusterrole_cluster-admin_group0c96fad22880f32a3f84c009862af6f7 uid: d6cd43e9-b4ca-4b56-bc52-e36346fc1320 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: 0c96fad22880f32a3f84c009862af6f7 使用被授予用户连接集群,如果能正常查询PV、StorageClass的信息,则说明权限配置正常。 # kubectl get pv No resources found # kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE csi-disk everest-csi-provisioner Delete Immediate true 75d csi-disk-topology everest-csi-provisioner Delete WaitForFirstConsumer true 75d csi-nas everest-csi-provisioner Delete Immediate true 75d csi-obs everest-csi-provisioner Delete Immediate false 75d csi-sfsturbo everest-csi-provisioner Delete Immediate true 75d
  • 示例:授予命名空间运维权限(admin) admin权限拥有命名空间大多数资源的读写权限,您可以授予用户/用户组全部命名空间admin权限。 图6 授予全部命名空间运维权限(admin) 如果使用kubectl查看可以看到创建了一个RoleBinding,将admin和cce-role-group这个用户组绑定了起来。 # kubectl get rolebinding NAME ROLE AGE clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 ClusterRole/admin 18s # kubectl get rolebinding clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 -oyaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: annotations: CCE.com/IAM: "true" creationTimestamp: "2021-06-24T01:30:08Z" name: clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 resourceVersion: "36963685" selfLink: /apis/rbac.authorization.k8s.io/v1/namespaces/default/rolebindings/clusterrole_admin_group0c96fad22880f32a3f84c009862af6f7 uid: 6c6f46a6-8584-47da-83f5-9eef1f7b75d6 roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: admin subjects: - apiGroup: rbac.authorization.k8s.io kind: Group name: 0c96fad22880f32a3f84c009862af6f7 使用被授予用户连接集群,如果能正常查询PV、StorageClass的信息,但无法创建命名空间,则说明权限配置正常。 # kubectl get pv No resources found # kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE csi-disk everest-csi-provisioner Delete Immediate true 75d csi-disk-topology everest-csi-provisioner Delete WaitForFirstConsumer true 75d csi-nas everest-csi-provisioner Delete Immediate true 75d csi-obs everest-csi-provisioner Delete Immediate false 75d csi-sfsturbo everest-csi-provisioner Delete Immediate true 75d # kubectl apply -f namespaces.yaml Error from server (Forbidden): namespaces is forbidden: User "0c97ac3cb280f4d91fa7c0096739e1f8" cannot create resource "namespaces" in API group "" at the cluster scope
  • 集群权限(IAM授权)与命名空间权限(Kubernetes RBAC授权)的关系 拥有不同集群权限(IAM授权)的用户,其拥有的命名空间权限(Kubernetes RBAC授权)不同。表1给出了不同用户拥有的命名空间权限详情。 表1 不同用户拥有的命名空间权限 用户类型 1.13及以上版本的集群 拥有Tenant Administrator权限的用户(例如账号) 全部命名空间权限 拥有CCE Administrator权限的IAM用户 全部命名空间权限 拥有CCE FullAccess或者CCE ReadOnlyAccess权限的IAM用户 按Kubernetes RBAC授权 拥有Tenant Guest权限的IAM用户 按Kubernetes RBAC授权
  • 命名空间权限(kubernetes RBAC授权) 命名空间权限是基于Kubernetes RBAC能力的授权,通过权限设置可以让不同的用户或用户组拥有操作不同Kubernetes资源的权限。Kubernetes RBAC API定义了四种类型:Role、ClusterRole、RoleBinding与ClusterRoleBinding,这四种类型之间的关系和简要说明如下: Role:角色,其实是定义一组对Kubernetes资源(命名空间级别)的访问规则。 RoleBinding:角色绑定,定义了用户和角色的关系。 ClusterRole:集群角色,其实是定义一组对Kubernetes资源(集群级别,包含全部命名空间)的访问规则。 ClusterRoleBinding:集群角色绑定,定义了用户和集群角色的关系。 Role和ClusterRole指定了可以对哪些资源做哪些动作,RoleBinding和ClusterRoleBinding将角色绑定到特定的用户、用户组或ServiceAccount上。如下图所示。 图1 角色绑定 在CCE控制台可以授予用户或用户组命名空间权限,可以对某一个命名空间或全部命名空间授权,CCE控制台默认提供如下ClusterRole。 view(只读权限):对全部或所选命名空间下大多数资源的只读权限。 edit(开发权限):对全部或所选命名空间下多数资源的读写权限。当配置在全部命名空间时能力与运维权限一致。 admin(运维权限):对全部命名空间下大多数资源的读写权限,对节点、存储卷,命名空间和配额管理的只读权限。 cluster-admin(管理员权限):对全部命名空间下所有资源的读写权限。 drainage-editor:节点排水操作权限,可执行节点排水。 drainage-viewer:节点排水只读权限,仅可查看节点排水状态,无法执行节点排水。 除了使用上述常用的ClusterRole外,您还可以通过定义Role和RoleBinding来进一步对全局资源(如Node、PersistentVolumes、CustomResourceDefinitions等)和命名空间中不同类别资源(如Pod、Deployment、Service等)的增删改查权限进行配置,从而做到更加精细化的权限控制。
  • 注意事项 任何用户创建集群后,CCE会自动为该用户添加该集群的所有命名空间的cluster-admin权限,也就是说该用户允许对集群以及所有命名空间中的全部资源进行完全控制。联邦用户由于每次登录注销都会改变用户ID,所以权限用户会显示已删除,此情况下请勿删除该权限,否则会导致鉴权失败。此种情况下建议在CCE为某个用户组创建cluster-admin权限,将联邦用户加入此用户组。 拥有Security Administrator(IAM除切换角色外所有权限)权限的用户(如账号所在的admin用户组默认拥有此权限),才能在CCE控制台命名空间权限页面进行授权操作。
  • 配置命名空间权限(控制台) CCE中的命名空间权限是基于Kubernetes RBAC能力的授权,通过权限设置可以让不同的用户或用户组拥有操作不同Kubernetes资源的权限。 登录CCE控制台,在左侧导航栏中选择“权限管理”。 在右边下拉列表中选择要添加权限的集群。 在右上角单击“添加权限”,进入添加授权页面。 在添加权限页面,确认集群名称,选择该集群下要授权使用的命名空间,例如选择“全部命名空间”,选择要授权的用户或用户组,再选择具体权限。 对于没有IAM权限的用户,给其他用户和用户组配置权限时,无法选择用户和用户组,此时支持填写用户ID或用户组ID进行配置。 图2 配置命名空间权限 其中自定义权限可以根据需要自定义,选择自定义权限后,在自定义权限一行右侧单击新建自定义权限,在弹出的窗口中填写名称并选择规则。创建完成后,在添加权限的自定义权限下拉框中可以选择。 自定义权限分为ClusterRole或Role两类,ClusterRole或Role均包含一组代表相关权限的规则,详情请参见使用RBAC鉴权。 ClusterRole:ClusterRole是一个集群级别的资源,可设置集群的访问权限。 Role:Role用于在某个命名空间内设置访问权限。当创建Role时,必须指定该Role所属的命名空间。 图3 自定义权限 单击“确定”。
  • 前提条件 Ingress为后端工作负载提供网络访问,因此集群中需提前部署可用的工作负载。若您无可用工作负载,可参考创建无状态负载(Deployment)、创建有状态负载(StatefulSet)或创建守护进程集(DaemonSet)部署示例nginx工作负载。 为上述工作负载配置Service,ELB Ingress支持的Service类型请参见Ingress支持的Service类型。 独享型ELB规格必须支持应用型(HTTP/HTTPS),且网络类型必须支持私网(有私有IP地址)。
  • networking.k8s.io/v1版本Ingress说明 CCE在v1.23版本集群开始Ingress切换到networking.k8s.io/v1版本。 v1版本参数相较v1beta1参数有如下区别。 ingress类型由annotations中kubernetes.io/ingress.class变为使用spec.ingressClassName字段。 backend的写法变化。 每个路径下必须指定路径类型pathType,支持如下类型。 ImplementationSpecific: 对于这种路径类型,匹配方法取决于具体Ingress Controller的实现。在CCE中会使用ingress.beta.kubernetes.io/url-match-mode指定的匹配方式,这与v1beta1方式相同。 Exact:精确匹配 URL 路径,且区分大小写。 Prefix:基于以 / 分隔的 URL 路径前缀匹配。匹配区分大小写,并且对路径中的元素逐个匹配。 路径元素指的是由 / 分隔符分隔的路径中的标签列表。
  • 步骤三:插件选择 单击“下一步:插件选择”,选择创建集群时需要安装的插件。 基础功能 参数 说明 CCE容器网络插件 (Yangtse CNI) 集群默认安装的基础插件,为集群内的Pod提供网络连通、公网访问、安全隔离等网络能力。 CCE 容器存储 (Everest) 默认安装CCE容器存储(Everest),可为集群提供基于 CSI 的容器存储能力,支持对接云上云硬盘等存储服务。 CoreDNS 域名解析 默认安装CoreDNS域名解析插件,可为集群提供域名解析、连接云上 DNS 服务器等能力。 节点本地域名解析加速 可选插件。勾选后自动安装节点本地域名解析加速插件,通过在集群节点上运行 DNS 缓存代理来提高集群 DNS 性能。 可观测性 参数 说明 云原生监控插件 可选插件。勾选后自动安装云原生监控插件,为集群提供普罗指标采集能力,并将指标上报至指定的AOM实例。轻量化模式暂不支持基于自定义普罗语句的HPA,若需要相关功能,可在集群创建完成后手动安装全量的插件。 AOM采集的基础指标免费,自定义指标将由AOM服务进行收费,详情请参见价格详情。关于如何采集自定义指标,请参见使用云原生监控插件监控自定义指标。 云原生日志采集插件 可选插件。勾选后自动安装云原生日志采集插件,将日志上报至 LTS 的日志采集器。集群创建完成后可在 CCE 日志中心页面对采集规则进行查询与管理。 LTS创建日志组免费,并每月赠送每个账号一定量免费日志采集额度,超过免费额度部分将产生费用(价格计算器)。关于如何采集自定义指标,请参见通过云原生日志采集插件采集容器日志。 CCE 节点故障检测 可选插件。勾选后自动安装CCE节点故障检测插件,安装后可为集群提供节点故障检测、隔离能力,帮助您及时识别节点问题。
  • 步骤四:插件配置 单击“下一步:插件配置”,配置插件。 基础功能 参数 说明 CCE容器网络插件 (Yangtse CNI) 不支持配置。 CCE 容器存储 (Everest) 不支持配置。集群创建完成后,可前往“插件中心”修改配置。 CoreDNS 域名解析 不支持配置。集群创建完成后,可前往“插件中心”修改配置。 节点本地域名解析加速 不支持配置。集群创建完成后,可前往“插件中心”修改配置。 可观测性 参数 说明 云原生监控插件 选择指标上报的AOM实例。如果没有可用实例,您可以单击“新建实例”进行创建。 AOM采集的基础指标免费,自定义指标将由AOM服务进行收费,详情请参见价格详情。关于如何采集自定义指标,请参见使用云原生监控插件监控自定义指标。 云原生日志采集插件 选择需要采集的日志。开启后将自动创建一个名称为k8s-log-{clusterId}的日志组,并为每个勾选的日志类型创建一个日志流。 容器日志:采集容器标准输出日志,对应的日志流名称为stdout-{clusterId}。 Kubernetes事件:采集Kubernetes日志,对应的日志流名称为event-{clusterId}。 Kubernetes审计日志:采集Master控制平面审计日志,对应的日志流名称为audit-{clusterId}。 控制面组件日志:采集Master控制平面(包括 kube-apiserver、 kube-controller-manage 和 kube-scheduler)日志,对应的日志流名称分别为kube-apiserver-{clusterId}、kube-controller-manage-{clusterId}、kube-scheduler-{clusterId}。 如果不开启日志采集能力。集群创建后可以前往 CCE 日志中心页面重新开启。 LTS创建日志组免费,并每月赠送每个账号一定量免费日志采集额度,超过免费额度部分将产生费用(价格计算器)。关于如何采集自定义指标,请参见通过云原生日志采集插件采集容器日志。 CCE 节点故障检测 不支持配置。集群创建完成后,可前往“插件中心”修改配置。
  • 步骤二:配置集群 在“购买集群”页面,填写集群配置参数。 基础配置 参数 说明 集群类型 根据需求选择“CCE Standard集群”或“CCE Turbo集群”。 CCE Standard集群:标准版本集群,提供高可靠、安全的商业级容器集群服务。 CCE Turbo集群:拥有更高性能的云原生网络,提供云原生混部调度能力,可实现更高的资源利用率和更广的全场景覆盖。 关于集群类型差异详情,请参见集群类型对比。 计费模式 根据需求选择集群的计费模式。 包年/包月:预付费模式,按订单的购买周期计费,适用于可预估资源使用周期的场景,价格比按需计费模式更优惠。 选择该计费模式时,需要设置“购买时长”并选择是否自动续费(按月购买时自动续费周期为1个月,按年购买时自动续费周期则为1年)。 按需计费:后付费模式,按资源的实际使用时长计费,可以随时开通/删除资源。 集群名称 请输入集群名称,同一账号下集群不可重名。 企业项目 该参数仅对开通企业项目的企业客户账号显示。 选择某企业项目(如:default)后,集群、集群下节点、集群安全组、节点安全组和自动创建的节点EIP(弹性公网IP)将创建到所选企业项目下。为方便管理资源,在集群创建成功后,建议不要修改集群下节点、集群安全组、节点安全组的企业项目。 企业项目是一种云资源管理方式,企业项目管理服务提供统一的云资源按项目管理,以及项目内的资源管理、成员管理。了解更多企业项目相关信息,请查看企业管理。 集群版本 选择集群使用的Kubernetes版本。 集群规模 集群支持管理的最大节点数量,请根据业务场景选择。创建完成后支持扩容,不支持缩容,详情请参见变更集群规格。 集群master实例数 选择集群控制平面的节点(master实例)数量。控制平面节点由系统自动托管,会部署Kubernetes集群的管控面组件,如 kube-apiserver,kube-controller-manager,kube-scheduler 等组件。 3实例(高可用):创建3个控制平面节点,确保集群高可用。 单实例:您的集群只会创建一个控制平面节点。 您还可以指定master实例的分布策略,默认为自动分配。 自动分配:即随机分配,尽可能将控制节点随机分布在不同可用区以提高容灾能力 。若某可用区资源不足,将分配至资源充足的可用区,优先保障集群创建成功,可能无法保障可用区级容灾。 自定义分配:自定义选择每台控制节点的位置。 单实例场景下,您可以选择一个可用区进行部署;多实例场景下,您可以选择多种分配场景: 可用区:通过把控制节点创建在不同的可用区中实现容灾。 主机:通过把控制节点创建在相同可用区下的不同主机中实现容灾。 自定义:用户自行决定每台控制节点所在的位置。 网络配置 集群网络涉及节点、容器和服务,强烈建议您详细了解集群的网络以及容器网络模型,具体请参见网络概述。 表1 集群网络配置 参数 说明 虚拟私有云 选择集群所在的虚拟私有云VPC,如没有可选项可以单击右侧“新建虚拟私有云”创建。创建后不可修改。 子网 选择节点所在子网,如没有可选项可以单击右侧“新建子网”创建。创建后子网不可修改。 默认安全组 您可选择使用CCE自动生成的安全组,或选择已有安全组作为节点默认安全组。 须知: 节点默认安全组必须放通指定端口来保证集群内部正常通信,否则将无法成功创建节点,安全组端口配置说明请参考集群安全组规则配置。 启用IPv6 开启后将支持通过IPv6地址段访问集群资源,包括节点,工作负载等。 v1.15及以上版本容器隧道网络的CCE Standard集群支持开启IPv4/IPv6双栈,并在v1.23版本中进入GA(Generally Available)阶段。 v1.23.8-r0、v1.25.3-r0及以上版本的CCE Turbo集群支持开启IPv4/IPv6双栈。 VPC网络模型的集群暂不支持开启IPv4/IPv6双栈。 具体请参见如何通过CCE搭建IPv4/IPv6双栈集群?。 表2 容器网络配置 参数 说明 容器网络模型 CCE Standard集群支持选择“VPC网络”和“容器隧道网络”。 CCE Turbo集群支持选择“云原生网络2.0”。 如需了解更多网络模型差异,请参见容器网络模型对比。 容器网段(CCE Standard集群设置) 设置容器使用的网段,决定了集群下容器的数量上限。VPC网络模型支持添加多个容器网段,且支持集群创建后添加容器网段,请参见扩展集群容器网段。 容器子网(CCE Turbo集群设置) 选择容器所在子网,如没有可选项可以单击右侧“新建子网”创建。容器子网决定了集群下容器的数量上限,创建后支持新增子网。 表3 服务网络配置 参数 说明 服务网段 同一集群下容器互相访问时使用的Service资源的网段。决定了Service资源的上限。 创建后不可修改。 服务转发模式 支持IPVS和iptables两种转发模式,具体请参见iptables与IPVS如何选择。 iptables:社区传统的kube-proxy模式。适用于Service数量较少或客户端会出现大量并发短链接的场景。IPv6集群不支持iptables模式。 IPVS:吞吐更高,速度更快的转发模式。适用于集群规模较大或Service数量较多的场景。 IPv6服务网段 仅CCE Turbo集群开启IPv6双栈时需要设置,创建后不可修改。 高级配置(可选) 参数 说明 证书认证 系统生成:默认开启X509认证模式,X509是一种非常通用的证书格式。 自有证书:您可以将自定义证书添加到集群中,用自定义证书进行认证。 您需要分别上传自己的CA根证书、客户端证书和客户端证书私钥。 注意: 请上传小于1MB的文件,CA根证书和客户端证书上传格式支持.crt或.cer格式,客户端证书私钥仅支持上传未加密的证书私钥。 客户端证书有效期需要5年以上。 上传的CA根证书既给认证代理使用,也用于配置kube-apiserver聚合层,如不合法,集群将无法成功创建。 从1.25版本集群开始,Kubernetes不再支持使用SHA1WithRSA、ECDSAWithSHA1算法生成的证书认证,推荐使用SHA256算法生成的证书进行认证。 开启CPU管理策略 支持为工作负载实例设置独占CPU核的功能,详情请参见CPU管理策略。 开启过载控制 过载控制开启后,将根据控制节点的资源压力,动态调整请求并发量,维护控制节点和集群的可靠性。详情请参见集群过载控制。 开启对华为分布式云(homezone/cloudpond)支持 集群可以统一管理数据中心和边缘的计算资源,用户可以根据业务诉求将容器部署到合适的区域。 该功能仅CCE Turbo集群支持,且需要提前注册智能边缘小站,详情请参见在CCE Turbo集群中使用分布式云资源。 告警中心 告警中心提供完善的集群告警能力,使您的集群在运行过程中发生故障及时预警,确保业务稳定。开启后将会创建默认告警规则,并发送告警通知到所选择的联系组。详细介绍请参见通过告警中心一键配置告警。 资源标签 通过为资源添加标签,可以对资源进行自定义标记,实现资源的分类。 说明: 如您的账号归属某个组织,且该组织已经设定云容器引擎服务的相关标签策略,则需按照标签策略规则为集群添加标签。标签如果不符合标签策略的规则,则可能会导致集群创建失败,请联系组织管理员了解标签策略详情。 您可以在TMS中创建“预定义标签”,预定义标签对所有支持标签功能的服务资源可见,通过使用预定义标签可以提升标签创建和迁移效率。具体请参见创建预定义标签。 KEY字符集规范: key不能为空,长度1~128个半角字符 _sys_开头属于系统标签,租户不能输入 可用 UTF-8 格式表示的字母(包含中文)、数字和空格,以及以下字符: _ . : / = + - @ 建议正则:^((?!_sys_)[\\p{L}\\p{Z}\\p{N}_.:\\/=+\\-@]*)$ VALUE字符集规范: VALUE长度 0~255 可用 UTF-8 格式表示的字母(包含中文)、数字和空格,以及以下字符: _ . : / = + - @ 建议正则:^([\p{L}\p{Z}\p{N}_.:\/=+\-@]*)$ 资源标签值可以为空(empty or null) 预定义标签值不可以为空 集群描述 支持200个英文字符。
  • NPU驱动卸载 请登录节点,通过 /var/log/ascend_seclog/operation.log 获取驱动操作记录,确认最后一次安装的驱动 run 包;若该日志不存在,则一般是用 npu_x86_latest.run或 npu_arm_latest.run 驱动合一包安装的;找到驱动安装包后,执行 bash {run 包名称} --uninstall 命令即可卸载,卸载成功后根据提示决定是否重启节点。 登录需要卸载NPU驱动的节点,查看 /var/log/ascend_seclog/operation.log 是否存在。 若 /var/log/ascend_seclog/operation.log 日志存在,查看驱动安装日志,可查找到驱动安装记录。 若 /var/log/ascend_seclog/operation.log 日志不存在,则可能是通过 npu_x86_latest.run或 npu_arm_latest.run 驱动合一包安装的,可通过 /usr/local/HiAI/driver/ 路径是否存在进行确认。 NPU驱动合一包一般放在 /root/d310_driver 目录下,其他驱动安装包一般放在 /root/npu-drivers 目录下。 找到驱动安装包后,执行 bash {run 包路径} --uninstall 命令即可卸载,以 Ascend310-hdk-npu-driver_6.0.rc1_linux-x86-64.run 为例: bash /root/npu-drivers/Ascend310-hdk-npu-driver_6.0.rc1_linux-x86-64.run --uninstall 根据提示信息确认是否需要重启节点(当前使用的NPU驱动安装和卸载都需要重启节点才能生效)。