华为云用户手册

  • 登录方式概述 登录节点(弹性云服务器 E CS )的方式有如下两种: 管理控制台远程登录(VNC方式) 未绑定弹性公网IP的弹性云服务器可通过管理控制台提供的远程登录方式直接登录。 详细操作请参考:Linux 云服务器远程登录 (VNC方式)。 SSH方式登录 仅适用于Linux弹性云服务器。您可以使用远程登录工具(例如PuTTY、Xshell、SecureCRT等)登录弹性云服务器。如果普通远程连接软件无法使用,您可以使用 云服务器ECS 管理控制台的管理终端连接实例,查看云服务器操作界面当时的状态。 SSH方式登录包括SSH密钥和SSH密码两种方式。详细操作请参考SSH密钥方式登录、SSH密码方式登录。 本地使用Windows操作系统登录Linux节点时,输入的镜像用户名(Auto-login username)为:root。 CCE控制台不提供针对节点的操作系统升级,也不建议您通过yum方式进行升级,如果您在节点上通过yum update升级了操作系统,会导致容器网络的组件不可用。手动恢复方式请参见如何解决yum update升级操作系统导致容器网络不可用问题?。
  • 前提条件 表1 迁移前Checklist 类别 描述 集群相关 Nodeip强相关:确认之前集群的节点IP(包括EIP),是否有作为其他的配置或者白名单之类的设置。 工作负载 记录工作负载数目,便于迁移后检查。 存储 确认应用中存储,是否使用云,或者自己搭建存储。 自动创建的存储需要在新集群中变成使用已有存储。 网络 注意使用的负载均衡服务,以及Ingress。 老版本的集群只支持经典型负载均衡服务,迁移到新集群中需要改成共享型负载均衡服务,对应负载均衡服务将会重新建立。 运维 私有配置:确认在之前集群中,是否在节点上配置内核参数或者系统配置。
  • 操作步骤 创建新集群 创建与老版本集群同规格同配置的集群,创建方法请参见购买集群。 添加节点 添加同规格节点,并且在节点上配置之前的手动配置项,创建方法请参见创建节点。 创建存储 在新集群中使用已有存储创建PVC,PVC名称不变,方法请参见通过静态PV使用已有对象存储或通过静态PV使用已有极速文件存储。 切流方案仅支持OBS、SFS Turbo等共享存储。非共享存储切流需要将老集群内的工作负载暂停,将会导致服务不可用。 创建工作负载 在新集群中创建工作负载,名称和规格参数保持不变,创建方法请参见创建无状态负载(Deployment)或创建有状态负载(StatefulSet)。 重新挂载存储 在工作负载中重新挂载已有的存储,方法请参见通过静态PV使用已有对象存储或通过静态PV使用已有极速文件存储。 创建服务 在新集群中创建Service,名称和规格参数保持不变,创建方法请参见服务(Service)。 调测功能 全部创建完成后,请自行调测业务,调测无问题后切换流量。 老集群退订或删除 新集群全部功能ready,退订或者删除老集群,删除集群方法请参见删除集群。
  • 插件简介 Prometheus是一套开源的系统监控报警框架。它启发于Google的borgmon监控系统,由工作在SoundCloud的Google前员工在2012年创建,作为社区开源项目进行开发,并于2015年正式发布。2016年,Prometheus正式加入Cloud Native Computing Foundation,成为受欢迎度仅次于Kubernetes的项目。 在云容器引擎CCE中,支持以插件的方式快捷安装Prometheus。 插件官网:https://prometheus.io/ 开源社区地址:https://github.com/prometheus/prometheus
  • 提供资源指标 容器和节点的资源指标,如CPU、内存使用量,可通过Kubernetes的Metrics API获得。这些指标可以直接被用户访问,比如用kubectl top命令,也可以被HPA或者CustomedHPA使用,根据资源使用率使负载弹性伸缩。 插件可为Kubernetes提供Metrics API,但默认未开启,若要将其开启,需要创建以下APIService对象: apiVersion: apiregistration.k8s.io/v1kind: APIServicemetadata: labels: app: custom-metrics-apiserver release: cceaddon-prometheus name: v1beta1.metrics.k8s.iospec: group: metrics.k8s.io groupPriorityMinimum: 100 insecureSkipTLSVerify: true service: name: custom-metrics-apiserver namespace: monitoring port: 443 version: v1beta1 versionPriority: 100 可以将该对象保存为文件,命名为metrics-apiservice.yaml,然后执行以下命令: kubectl create -f metrics-apiservice.yaml 执行kubectl top命令,若显示如下,则表示Metrics API能正常访问: # kubectl top pod -n monitoringNAME CPU(cores) MEMORY(bytes)......custom-metrics-apiserver-d4f556ff9-l2j2m 38m 44Mi...... 卸载插件时,需要执行以下kubectl命令,同时删除APIService对象,否则残留的APIService资源将导致metrics-server插件安装失败。 kubectl delete APIService v1beta1.metrics.k8s.io
  • 插件特点 作为新一代的监控框架,Prometheus具有以下特点: 强大的多维度数据模型: 时间序列数据通过metric名和键值对来区分。 所有的metrics都可以设置任意的多维标签。 数据模型更随意,不需要刻意设置为以点分隔的字符串。 可以对数据模型进行聚合,切割和切片操作。 支持双精度浮点类型,标签可以设为全unicode。 灵活而强大的查询语句(PromQL):在同一个查询语句,可以对多个metrics进行乘法、加法、连接、取分数位等操作。 易于管理:Prometheus server是一个单独的二进制文件,可直接在本地工作,不依赖于分布式存储。 高效:平均每个采样点仅占 3.5 bytes,且一个Prometheus server可以处理数百万的metrics。 使用pull模式采集时间序列数据,这样不仅有利于本机测试而且可以避免有问题的服务器推送坏的metrics。 可以采用push gateway的方式把时间序列数据推送至Prometheus server端。 可以通过服务发现或者静态配置去获取监控的targets。 有多种可视化图形界面。 易于伸缩。 需要指出的是,由于数据采集可能会有丢失,所以Prometheus不适用对采集数据要100%准确的情形。但如果用于记录时间序列数据,Prometheus具有很大的查询优势,此外,Prometheus适用于微服务的体系架构。
  • 安装插件 登录CCE控制台,单击集群名称进入集群,单击左侧导航栏的“插件管理”,在右侧找到Prometheus,单击“安装”。 在“规格配置”步骤中,配置以下参数: 表1 Prometheus配置参数说明 参数 参数说明 插件规格 根据业务需求,选择插件的规格,包含如下选项: 演示规格(100容器以内):适用于体验和功能演示环境,该规模下prometheus占用资源较少,但处理能力有限。建议在集群内容器数目不超过100时使用。 小规格(2000容器以内):建议在集群中的容器数目不超过2000时使用。 中规格(5000容器以内):建议在集群中的容器数目不超过5000时使用。 大规格(超过5000容器):建议集群中容器数目超过5000时使用此规格。 实例数 选择上方插件规格后,显示插件中的实例数,此处仅作显示。 容器 选择插件规格后,显示插件容器的CPU和内存配额,此处仅作显示。 数据保留期 自定义监控数据需要保留的天数,默认为15天。 存储 支持云硬盘作为存储,按照界面提示配置如下参数: 可用区:请根据业务需要进行选择。可用区是在同一区域下,电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。 子类型:支持普通IO、高IO和超高IO三种类型。 容量:请根据业务需要输入存储容量,默认10G。 说明: 若命名空间monitoring下已存在pvc,将使用此存储作为存储源。 单击“安装”。安装完成后,插件会在集群中部署以下实例。 prometheus-operator:根据自定义资源(Custom Resource Definition / CRDs)来部署和管理Prometheus Server,同时监控这些自定义资源事件的变化来做相应的处理,是整个系统的控制中心。 prometheus(Server):Operator根据自定义资源Prometheus类型中定义的内容而部署的Prometheus Server集群,这些自定义资源可以看作是用来管理Prometheus Server集群的 StatefulSets 资源。 prometheus-kube-state-metrics:将Prometheus的metrics数据格式转换成K8s API接口能识别的格式。 custom-metrics-apiserver:将自定义指标聚合到原生的kubernetes apiserver。 prometheus-node-exporter:每个节点上均有部署,收集Node级别的监控数据。 grafana:可视化浏览普罗监控数据。
  • 版本记录 表2 CCE插件版本记录 插件版本 支持的集群版本 更新特性 社区版本 2.23.32 /v1.(17|19|21).*/ - 2.10.0 2.23.31 /v1.15.*/ 适配CCE 1.15集群 2.10.0 2.23.30 /v1.(17|19|21).*/ 适配CCE 1.21集群 2.10.0 2.21.14 /v1.(17|19|21).*/ 适配CCE 1.21集群 2.10.0 2.21.12 /v1.15.*/ 适配CCE 1.15集群 2.10.0 2.21.11 /v1.(17|19).*/ 适配CCE 1.19集群 2.10.0 1.15.1 /v1.(15|17).*/ Prometheus是一个监控系统和时间序列库 2.10.0
  • Pod安全策略开放非安全系统配置示例 节点池管理中可以为相应的节点池配置allowed-unsafe-sysctls,CCE从1.17.17集群版本开始,需要在Pod安全策略的allowedUnsafeSysctls字段中增加相应的配置才能生效,配置详情请参考表1。 除修改全局Pod安全策略外,也可增加新的Pod安全策略,如开放net.core.somaxconn非安全系统配置,新增Pod安全策略示例参考如下: apiVersion: policy/v1beta1kind: PodSecurityPolicymetadata: annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*' name: sysctl-pspspec: allowedUnsafeSysctls: - net.core.somaxconn allowPrivilegeEscalation: true allowedCapabilities: - '*' fsGroup: rule: RunAsAny hostIPC: true hostNetwork: true hostPID: true hostPorts: - max: 65535 min: 0 privileged: true runAsGroup: rule: RunAsAny runAsUser: rule: RunAsAny seLinux: rule: RunAsAny supplementalGroups: rule: RunAsAny volumes: - '*'---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: sysctl-psprules: - apiGroups: - "*" resources: - podsecuritypolicies resourceNames: - sysctl-psp verbs: - use---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: sysctl-psproleRef: kind: ClusterRole name: sysctl-psp apiGroup: rbac.authorization.k8s.iosubjects:- kind: Group name: system:authenticated apiGroup: rbac.authorization.k8s.io
  • 恢复原始Pod安全策略 如果您已经修改默认Pod安全策略后,想恢复原始Pod安全策略,请执行以下操作。 创建一个名为policy.yaml的描述文件。其中,policy.yaml为自定义名称,您可以随意命名。 vi policy.yaml 描述文件内容如下。 apiVersion: policy/v1beta1kind: PodSecurityPolicymetadata: name: psp-global annotations: seccomp.security.alpha.kubernetes.io/allowedProfileNames: '*'spec: privileged: true allowPrivilegeEscalation: true allowedCapabilities: - '*' volumes: - '*' hostNetwork: true hostPorts: - min: 0 max: 65535 hostIPC: true hostPID: true runAsUser: rule: 'RunAsAny' seLinux: rule: 'RunAsAny' supplementalGroups: rule: 'RunAsAny' fsGroup: rule: 'RunAsAny' ---kind: ClusterRoleapiVersion: rbac.authorization.k8s.io/v1metadata: name: psp-globalrules: - apiGroups: - "*" resources: - podsecuritypolicies resourceNames: - psp-global verbs: - use ---apiVersion: rbac.authorization.k8s.io/v1kind: ClusterRoleBindingmetadata: name: psp-globalroleRef: kind: ClusterRole name: psp-global apiGroup: rbac.authorization.k8s.iosubjects:- kind: Group name: system:authenticated apiGroup: rbac.authorization.k8s.io 执行如下命令: kubectl apply -f policy.yaml
  • 修改全局默认Pod安全策略 修改全局默认Pod安全策略前,请确保已创建CCE集群,并且通过kubectl连接集群成功。 执行如下命令: kubectl edit psp psp-global 修改所需的参数,如表1。 表1 Pod安全策略配置 配置项 描述 privileged 启动特权容器。 hostPID hostIPC 使用主机命名空间。 hostNetwork hostPorts 使用主机网络和端口。 volumes 允许使用的挂载卷类型。 allowedHostPaths 允许hostPath类型挂载卷在主机上挂载的路径,通过pathPrefix字段声明允许挂载的主机路径前缀组。 allowedFlexVolumes 允许使用的指定FlexVolume驱动。 fsGroup 配置Pod中挂载卷使用的辅组ID。 readOnlyRootFilesystem 约束启动Pod使用只读的root文件系统。 runAsUser runAsGroup supplementalGroups 指定Pod中容器启动的用户ID以及主组和辅组ID。 allowPrivilegeEscalation defaultAllowPrivilegeEscalation 约束Pod中是否允许配置allowPrivilegeEscalation=true,该配置会控制Setuid的使用,同时控制程序是否可以使用额外的特权系统调用。 defaultAddCapabilities requiredDropCapabilities allowedCapabilities 控制Pod中使用的Linux Capabilities。 seLinux 控制Pod使用seLinux配置。 allowedProcMountTypes 控制Pod允许使用的ProcMountTypes。 annotations 配置Pod中容器使用的AppArmor或Seccomp。 forbiddenSysctls allowedUnsafeSysctls 控制Pod中容器使用的Sysctl配置。
  • 操作步骤 登录CCE控制台,单击集群名称进入集群。 在左侧导航栏中选择“命名空间”。 单击对应命名空间后的“管理配额”。 系统级别的命名空间kube-system、kube-public默认不支持设置资源配额。 设置资源配额,然后单击“确定”。 命名空间设置了CPU或内存资源配额后,创建工作负载时,必须指定CPU或内存的请求值(request)和约束值(limit),否则CCE将拒绝创建实例。若设置资源配额值为0,则不限制该资源的使用。 配额累计使用量包含CCE系统默认创建的资源,如default命名空间下系统默认创建的kubernetes服务(该服务可通过后端kubectl工具查看)等,故建议命名空间下的资源配额略大于实际期望值以去除系统默认创建资源的影响。
  • 约束与限制 在Kubernetes中,外部用户及内部组件频繁的数据更新操作采用乐观并行的控制方法。通过定义资源版本(resourceVersion)实现乐观锁,资源版本字段包含在对象的元数据(metadata)中。这个字段标识了对象的内部版本号,且对象被修改时,该字段将随之修改。kube-apiserver可以通过该字段判断对象是否已经被修改。当包含resourceVersion的更新请求到达apiserver,服务器端将对比请求数据与服务器中数据的资源版本号,如果不一致,则表明在本次更新提交时,服务端对象已被修改,此时apiserver将返回冲突错误(409)。客户端需重新获取服务端数据,重新修改后再次提交到服务器端;而资源配额对每个命名空间的资源消耗总量提供限制,并且会记录集群中的资源信息,因此开启资源配额后,在大规模并发场景下创建资源冲突概率会变高,会影响批创资源性能。
  • 背景信息 默认情况下,运行中的Pod可以无限制的使用Node节点上的CPU和内存,这意味着任意一个Pod都可以无节制地使用集群的计算资源,某个命名空间的Pod可能会耗尽集群的所有资源。 kubernetes在一个物理集群上提供了多个虚拟集群,这些虚拟集群被称为命名空间。命名空间可用于多种工作用途,满足多用户的使用需求,通过为每个命名空间配置资源额度可以有效限制资源滥用,从而保证集群的可靠性。 您可为命名空间配置包括CPU、内存、Pod数量等资源的额度,更多信息请参见Resource Quotas。 其中,不同的集群规模对应的Pod数量推荐值如下: 集群规模 Pod数量推荐值 50节点 2500 Pod实例 200节点 1W Pod实例 1000节点 3W Pod实例 2000节点 5W Pod实例 从1.21版本集群开始,如果在集群配置管理中开启了enable-resource-quota参数,则创建命名空间将会同时创建默认的资源配额Resource Quotas,根据集群规格不同,各个资源的配额如表1所示。您可以根据实际需求修改。 表1 默认资源配额 集群规模 Pod Deployment Secret ConfigMap Service 50节点 2000 1000 1000 1000 1000 200节点 2000 1000 1000 1000 1000 1000节点 5000 2000 2000 2000 2000 2000节点 5000 2000 2000 2000 2000
  • 通过kubectl命令行设置 本节以nginx为例,说明kubectl命令创建工作负载的方法。 前提条件 请参见通过kubectl连接集群配置kubectl命令,使弹性云服务器连接集群。 操作步骤 参见通过kubectl命令行创建无状态工作负载或通过kubectl命令行创建有状态工作负载,工作负载间亲和性的yaml示例如下: apiVersion: apps/v1kind: Deploymentmetadata: name: nginxspec: replicas: 1 selector: matchLabels: app: nginx strategy: type: RollingUpdate template: metadata: labels: app: nginx spec: containers: - image: nginx imagePullPolicy: Always name: nginx imagePullSecrets: - name: default-secret affinity: podAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: app #工作负载中lable的key operator: In values: - test #工作负载中对应lable的value
  • 操作步骤 在CCE控制台,单击左侧导航栏的“弹性伸缩”,在“节点伸缩”页签下,单击“创建节点伸缩策略”按钮。 进入创建节点伸缩策略页面,在“插件检测”步骤中: 若插件名称后方显示,请单击插件后方的“现在安装”按钮,根据业务需求配置插件参数后单击“立即安装”,等待插件安装完成。 若插件名称后方显示,则说明插件已安装成功。 确认插件已安装成功后,单击“下一步:策略配置”。 如果插件已提前安装成功,单击“创建节点伸缩策略”按钮后,在“插件检测”步骤中经过短暂检测后将直接进入“策略配置”步骤。 在打开的“创建节点伸缩策略”页面中,参照如下参数设置策略。 策略名称:新建策略的名称,请自定义。 关联节点池:请单击“添加节点池”后选择要操作的节点池。您可以关联多个节点池,以使用相同的伸缩策略。 节点池新增了优先级功能,弹性扩容时CCE将按照如下策略来选择节点池进行扩容: 通过预判算法判断节点池是否能满足让Pending的Pod正常调度的条件,包括节点资源大于Pod的request值、nodeSelect、nodeAffinity和taints等是否满足Pod正常调度的条件;另外还会过滤掉扩容失败(因为资源不足等原因)还处于15min冷却时间的节点池。 有多个节点池满足条件时,判断节点池设置的优先级(优先级默认值为0,取值范围为0-100,其中100为最高,0为最低),选择优先级最高的节点池扩容。 如果有多个节点池处于相同的优先级,或者都没有配置优先级时,通过最小浪费原则,根据节点池里设置的虚拟机规格,计算刚好能满足Pending的Pod正常调度,且浪费资源最少的节点池。 如果还是有多个节点池的虚拟机规格都一样,只是AZ不同,那么会随机选择其中一个节点池触发扩容。 如果出现优先选择的节点池资源不足,会按照优先级顺序自动选择下一个节点池。 节点池优先级功能详情请参见弹性扩缩容。 执行规则:单击“添加规则”,在弹出的添加规则窗口中设置如下参数: 规则名称:请输入规则名称,可自定义。 规则类型:可选择“指标触发”或“周期触发”,两种类型区别如下: 指标触发: 触发条件:请选择“CPU分配率”或“内存分配率”,输入百分比的值。该百分比应大于autoscaler插件中配置的缩容百分比。 分配率 = 节点池容器组(Pod)资源申请量 / 节点池Pod可用资源量 (Node Allocatable) 。 如果多条规则同时满足条件,会有如下两种执行的情况: 如果同时配置了“CPU分配率”和“内存分配率”的规则,两种或多种规则同时满足扩容条件时,执行扩容节点数更多的规则。 如果同时配置了“CPU分配率”和“周期触发”的规则,当达到“周期触发”的时间值时CPU也满足扩容条件时,较早执行的A规则会将节点池状态置为伸缩中状态,导致B规则无法正常执行。待A规则执行完毕,节点池状态恢复正常后,B规则也不会执行。 配置了“CPU分配率”和“内存分配率”的规则后,策略的检测周期会因autoscaler每次循环的处理逻辑而变动。只要一次检测出满足条件就会触发扩容(还需要满足冷却时间、节点池状态等约束条件)。 执行动作:与上述“触发条件”相对应,达到触发条件值后所要执行的动作。如图1中所示,当内存分配率超过40%时将增加5个节点。 图1 指标触发-执行动作 周期触发: 触发时间:可选择每天、每周、每月或每年的具体时间点,如图2所示,则为每天15:00触发。 图2 周期触发时间 执行动作:与上述“触发时间”相对应,达到触发时间值后所要执行的动作。如图3中所示,即每天15:00时将执行增加5个节点的动作。 图3 定时触发-执行动作 您可以单击“添加规则”,设置多条节点伸缩策略。您最多可以添加1条CPU使用率指标规则、1条内存使用率指标规则,且规则总数小于等于10条。 设置完成后,单击“创建”,在“完成”步骤中若显示“创建节点伸缩策略***任务提交成功”,可单击“返回节点策略”。 在“节点伸缩”页签下,可以看到刚创建的节点伸缩策略。 图4 节点伸缩策略
  • CCE集群权限与 IAM RBAC CCE兼容IAM传统的系统角色进行权限管理,建议您切换使用IAM的细粒度策略,避免设置过于复杂或不必要的权限管理场景。 CCE当前支持的角色如下: IAM的基础角色: te_admin(Tenant Administrator):可以调用除IAM外所有服务的所有API。 readonly(Tenant Guest):可以调用除IAM外所有服务的只读权限的API。 CCE的自定义管理员角色:CCE Administrator。 由于历史原因,CCE的API中保留了对应用管理与运维平台(ServiceStage)的三个系统角色(SvcStg Administrator、SvcStg Developer、SvcStg Operator)的兼容,当前CCE和ServiceStage已经全面适配了IAM的细粒度策略进行权限管理,不建议您继续使用该系统角色进行权限管理。其在CCE侧的具体权限如下: SvcStg Administrator:拥有CCE Administrator相同权限,例外:拥有此角色的用户不默认具有命名空间的权限(Kubernetes RBAC)。 SvcStg Developer:拥有CCE Administrator相同权限,例外:拥有此角色的用户不默认具有命名空间的权限(Kubernetes RBAC)。 SvcStg Operator:拥有CCE的只读权限,但不默认具有命名空间的权限。 了解更多ServiceStage和CCE的权限管理详情请参见:ServiceStage权限管理介绍、 CCE权限管理 介绍。 Tenant Administrator、Tenant Guest是特殊的IAM系统角色,当配置任意系统或自定义策略后,Tenant Administrator、Tenant Guest将以系统策略形式生效,用于兼容IAM RBAC和ABAC场景。 如果用户有Tenant Administrator或者CCE Administrator的系统角色,则此用户拥有Kubernetes RBAC的cluster-admin权限,在集群创建后不可移除。 如果用户为集群创建者,则默认被授权Kubernetes RBAC的cluster-admin权限,此项权限可以在集群创建后被手动移除: 方式1:权限管理 - 命名空间权限 - 移除cluster-creator。 方式2:通过API或者kubectl删除资源,ClusterRoleBinding:cluster-creator。 RBAC与IAM策略共存时,CCE开放API或Console操作的后端鉴权逻辑如下: CCE部分接口由于涉及命名空间权限或关键操作,需要特殊权限: clusterCert获取集群k8s kubeconfig: cceadm/teadmin
  • CCE集群权限与企业项目 CCE支持以集群为粒度,基于企业项目维度进行资源管理以及权限分配。 如下事项需特别注意: IAM项目是基于资源的物理隔离进行管理,而企业项目则是提供资源的全局逻辑分组,更符合企业实际场景,并且支持基于企业项目维度的IAM策略管理,因此推荐您使用企业项目。详细信息请参见如何创建企业项目。 IAM项目与企业项目共存时,IAM将优先匹配IAM项目策略、未决则匹配企业项目策略。 CCE集群基于已有基础资源(VPC)创建集群、节点时,请确保IAM用户在已有资源的企业项目下有相关权限,否则可能导致集群或者节点创建失败。
  • 自定义策略 如果系统预置的CCE策略,不满足您的授权要求,可以创建自定义策略。自定义策略中可以添加的授权项(Action)请参考权限策略和授权项。 目前华为云支持以下两种方式创建自定义策略: 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服务、操作、资源、条件等策略内容,可自动生成策略。 JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内容;也可以直接在编辑框内编写JSON格式的策略内容。 具体创建步骤请参见:创建自定义策略。本章为您介绍常用的CCE自定义策略样例。
  • 系统策略 IAM中预置的CCE系统策略当前包含CCE FullAccess和CCE ReadOnlyAccess两种策略: CCE FullAccess:系统策略,CCE服务集群相关资源的普通操作权限,不包括集群(启用Kubernetes RBAC鉴权)的命名空间权限,不包括委托授权、生成集群证书等管理员角色的特权操作。 CCE ReadOnlyAccess:系统策略,CCE服务集群相关资源的只读权限,不包括集群(启用Kubernetes RBAC鉴权)的命名空间权限。 表1 CCEFullAccess策略主要权限 操作(Action) Action详情 说明 cce:*:* cce:cluster:create 创建集群 cce:cluster:delete 删除集群 cce:cluster:update 更新集群,如后续允许集群支持RBAC,调度参数更新等 cce:cluster:upgrade 升级集群 cce:cluster:start 唤醒集群 cce:cluster:stop 休眠集群 cce:cluster:list 查询集群列表 cce:cluster:get 查询集群详情 cce:node:create 添加节点 cce:node:delete 删除节点/批量删除节点 cce:node:update 更新节点,如更新节点名称 cce:node:get 查询节点详情 cce:node:list 查询节点列表 cce:nodepool:create 创建节点池 cce:nodepool:delete 删除节点池 cce:nodepool:update 更新节点池信息 cce:nodepool:get 获取节点池 cce:nodepool:list 列出集群的所有节点池 cce:release:create 创建模板实例 cce:release:delete 删除模板实例 cce:release:update 更新升级模板实例 cce:job:list 查询任务列表(集群层面的job) cce:job:delete 删除任务/批量删除任务(集群层面的job) cce:job:get 查询任务详情(集群层面的job) cce:storage:create 创建存储 cce:storage:delete 删除存储 cce:storage:list 列出所有磁盘 cce:addonInstance:create 创建插件实例 cce:addonInstance:delete 删除插件实例 cce:addonInstance:update 更新升级插件实例 cce:addonInstance:get 获取插件实例 cce:addonTemplate:get 获取插件模板 cce:addonInstance:list 列出所有插件实例 cce:addonTemplate:list 列出所有插件模板 cce:chart:list 列出所有模板 cce:chart:delete 删除摸板 cce:chart:update 更新模板 cce:chart:upload 上传模板 cce:chart:get 获取模板信息 cce:release:get 获取模板实例信息 cce:release:list 列出所有模板实例 cce:userAuthorization:get 获取CCE用户授权 cce:userAuthorization:create 创建CCE用户授权 ecs:*:* - ECS(弹性云服务器)服务的所有权限。 evs:*:* 具体action详见:云硬盘v2接口的授权信息。 EVS(云硬盘)的所有权限。 可以将云硬盘挂载到云服务器,并可以随时扩容云硬盘容量 vpc:*:* - VPC(虚拟私有云,包含二代ELB)的所有权限。 创建的集群需要运行在虚拟私有云中,创建命名空间时,需要创建或关联VPC,创建在命名空间的容器都运行在VPC之内。 sfs:*:get* - SFS(弹性文件存储服务)资源详情的查看权限。 sfs:shares:ShareAction - SFS(弹性文件存储服务)资源的扩容共享。 aom:*:get - AOM 应用运维管理 )资源详情的查看权限。 aom:*:list - AOM(应用运维管理)资源列表的查看权限。 aom:autoScalingRule:* - AOM(应用运维管理)自动扩缩容规则的所有操作权限。 apm:icmgr:* - APM 应用性能管理 服务)操作ICAgent权限。 lts:*:* - LTS( 云日志 服务)的所有权限。 表2 CCEReadOnlyAccess策略主要权限 操作(Action) 操作(Action) 说明 cce:*:get cce:cluster:get 查询集群详情 cce:node:get 查询节点详情 cce:job:get 查询任务详情(集群层面的job) cce:addonInstance:get 获取插件实例 cce:addonTemplate:get 获取插件模板 cce:chart:get 获取模板信息 cce:nodepool:get 获取节点池 cce:release:get 获取模板实例信息 cce:userAuthorization:get 获取CCE用户授权 cce:*:list cce:cluster:list 查询集群列表 cce:node:list 查询节点列表 cce:job:list 查询任务列表(集群层面的job) cce:addonInstance:list 列出所有插件实例 cce:addonTemplate:list 列出所有插件模板 cce:chart:list 列出所有模板 cce:nodepool:list 列出集群的所有节点池 cce:release:list 列出所有模板实例 cce:storage:list 列出所有磁盘 cce:kubernetes:* - 操作所有kubernetes资源,具体权限请在命名空间权限中配置。 ecs:*:get - ECS(弹性云服务器)所有资源详情的查看权限。 CCE中的一个节点就是具有多个云硬盘的一台弹性云服务器 ecs:*:list - ECS(弹性云服务器)所有资源列表的查看权限。 bms:*:get* - BMS(裸金属服务器)所有资源详情的查看权限。 bms:*:list - BMS(裸金属服务器)所有资源列表的查看权限。 evs:*:get - EVS(云硬盘)所有资源详情的查看权限。可以将云硬盘挂载到云服务器,并可以随时扩容云硬盘容量 evs:*:list - EVS(云硬盘)所有资源列表的查看权限。 evs:*:count - - vpc:*:get - VPC(虚拟私有云,包含二代ELB)所有资源详情的查看权限。 创建的集群需要运行在虚拟私有云中,创建命名空间时,需要创建或关联VPC,创建在命名空间的容器都运行在VPC之内 vpc:*:list - VPC(虚拟私有云,包含二代ELB)所有资源列表的查看权限。 sfs:*:get* - SFS(弹性文件服务)服务所有资源详情的查看权限。 sfs:shares:ShareAction - SFS(弹性文件服务)资源的扩容共享。 aom:*:get - AOM(应用运维管理)服务所有资源详情的查看权限。 aom:*:list - AOM(应用运维管理)服务所有资源列表的查看权限。 aom:autoScalingRule:* - AOM(应用运维管理)服务自动扩缩容规则的所有操作权限。 lts:*:get - LTS(云日志服务)的所有资源详情的查看权限。 lts:*:list - LTS(云日志服务)的所有资源列表的查看权限。
  • 系统角色 角色是IAM最初提供的一种根据用户的工作职能定义权限的粗粒度授权机制。该机制以服务为粒度,提供有限的服务相关角色用于授权。角色并不能满足用户对精细化授权的要求,无法完全达到企业对权限最小化的安全管控要求。 IAM中预置的CCE系统角色为CCE Administrator,给用户组授予该系统角色权限时,必须同时授予该角色依赖的其他策略才会生效,例如Tenant Guest、Server Administrator、ELB Administrator等。了解更多角色依赖关系,请参考:系统权限。
  • 前提条件 给用户组授权之前,请您了解用户组可以添加的CCE系统策略,并结合实际需求进行选择,CCE支持的系统策略及策略间的对比,请参见CCE系统权限。若您需要对除CCE之外的其它服务授权,IAM支持服务的所有策略请参见系统权限。 拥有Security Administrator(IAM除切换角色外所有权限)权限的用户(如华为云帐号默认拥有此权限),才能看见CCE控制台权限管理页面当前用户组及用户组所拥有的权限。
  • 示例流程 图1 给用户授予CCE权限流程 创建用户组并授权。 在IAM控制台创建用户组,并授予CCE权限,例如CCE ReadOnlyAccess。 CCE服务按区域部署,在IAM控制台授予CCE权限时请选择“区域级项目”。 创建用户并加入用户组。 在IAM控制台创建用户,并将其加入1中创建的用户组。 用户登录并验证权限。 新创建的用户登录控制台,切换至授权区域,验证权限: 在“服务列表”中选择云容器引擎,进入CCE主界面,单击右上角“购买Kubernetes集群”,如果无法无法成功操作(假设当前权限仅包含CCE ReadOnlyAccess),表示“CCE ReadOnlyAccess”已生效。 在“服务列表”中选择除云容器引擎外(假设当前策略仅包含CCEReadOnlyAccess)的任一服务,若提示权限不足,表示“CCE ReadOnlyAccess”已生效。
  • 注意事项 删除集群不会删除集群下包周期的资源,相关资源在集群删除后将会继续计费,请妥善处理。 删除集群会删除集群下的节点(纳管节点不会被删除)、节点挂载的数据盘、工作负载与服务,相关业务将无法恢复。在执行操作前,请确保相关数据已完成备份或者迁移,删除完成后数据无法找回,请谨慎操作。 部分不是在CCE中创建的资源不会删除: 纳管的节点(仅删除在CCE中创建的节点) Service和Ingress关联的ELB实例(仅删除自动创建的ELB实例) 手动创建PV关联的 云存储 /导入的云存储(仅删除PVC自动创建的云存储) 处于休眠状态的集群无法直接删除,请将集群唤醒后重试。 集群不可用时删除集群,存储会残留。 集群版本为v1.13.10及之前版本时,请勿在ELB服务手动修改监听器名称和后端服务器名称,否则删除集群会有资源残留。
  • 使用场景 快照功能可以帮助您实现以下需求: 日常备份数据 通过对云硬盘定期创建快照,实现数据的日常备份,可以应对由于误操作、病毒以及黑客攻击等导致数据丢失或不一致的情况。 快速恢复数据 更换操作系统、应用软件升级或业务数据迁移等重大操作前,您可以创建一份或多份快照,一旦升级或迁移过程中出现问题,可以通过快照及时将业务恢复到快照创建点的数据状态。 例如,当由于云服务器 A的系统盘 A发生故障而无法正常开机时,由于系统盘 A已经故障,因此也无法将快照数据回滚至系统盘A。此时您可以使用系统盘 A已有的快照新创建一块云硬盘 B并挂载至正常运行的云服务器 B上,从而云服务器 B能够通过云硬盘 B读取原系统盘 A的数据。 当前CCE提供的快照能力与K8S社区CSI快照功能一致:只支持基于快照创建新云硬盘,不支持将快照回滚到源云硬盘。 快速部署多个业务 通过同一个快照可以快速创建出多个具有相同数据的云硬盘,从而可以同时为多种业务提供数据资源。例如数据挖掘、报表查询和开发测试等业务。这种方式既保护了原始数据,又能通过快照创建的新云硬盘快速部署其他业务,满足企业对业务数据的多元化需求。
  • 创建快照 使用控制台创建 登录CCE控制台。 进入集群,在左侧选择“容器存储”,在右侧选择“快照与备份”页签。 单击右上角“创建快照”,在弹出的窗口中设置相关参数。 快照名称:填写快照的名称。 选择存储:选择要创建快照的PVC。 单击“创建”。 使用YAML创建 kind: VolumeSnapshotapiVersion: snapshot.storage.k8s.io/v1beta1metadata: finalizers: - snapshot.storage.kubernetes.io/volumesnapshot-as-source-protection - snapshot.storage.kubernetes.io/volumesnapshot-bound-protection name: cce-disksnap-test namespace: defaultspec: source: persistentVolumeClaimName: pvc-evs-test # PVC的名称,仅能创建云硬盘类型PVC volumeSnapshotClassName: csi-disk-snapclass
  • 使用快照创建PVC 通过快照创建云硬盘PVC时,磁盘类型、磁盘模式、加密属性需和快照源云硬盘保持一致。 使用控制台创建 登录CCE控制台。 进入集群,在左侧选择“容器存储”,在右侧选择“存储卷声明”页签。 单击右上角“创建存储卷声明”,在弹出的窗口中填写存储卷“声明”参数。 创建方式:选择“使用快照”。 PVC名称:指定PVC的名称。 已有快照:选择要使用的快照。 单击“创建”。 使用YAML创建 apiVersion: v1kind: PersistentVolumeClaimmetadata: name: pvc-test namespace: default annotations: everest.io/disk-volume-type: SSD # 云硬盘类型,需要与快照源云硬盘保持一致 labels: failure-domain.beta.kubernetes.io/region: cn-north-4 failure-domain.beta.kubernetes.io/zone: cn-north-4bspec: accessModes: - ReadWriteOnce resources: requests: storage: '10' storageClassName: csi-disk dataSource: name: cce-disksnap-test # 快照的名称 kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io
  • 使用须知 快照功能仅支持v1.15及以上版本的集群,且需要安装基于CSI的Everest插件才可以使用。 基于快照创建的云硬盘,其子类型(普通IO/高IO/超高IO)、是否加密、磁盘模式(VBD/SCSI)、共享性(非共享/共享)、容量等都要与快照关联母盘保持一致,这些属性查询和设置出来后不能够修改。 只有可用或正在使用状态的磁盘能创建快照。快照免费试用期间,单个磁盘最大支持创建7个快照。 创建快照功能仅支持使用everest插件提供的存储类(StorageClass名称以csi开头)创建的PVC。使用Flexvolume存储类(StorageClass名为ssd、sas、sata)创建的PVC,无法创建快照。 加密磁盘的快照数据以加密方式存放,非加密磁盘的快照数据以非加密方式存放。
  • 约束与限制 HPA策略:仅支持1.13及以上版本的集群创建。 每个工作负载只能创建一个策略,即如果您创建了一个HPA策略,则不能再对其创建CustomedHPA策略或其他HPA策略,您可以删除该HPA策略后再创建。 1.19.10以下版本的集群中,如果使用HPA策略对挂载了EVS卷的负载进行扩容,当新Pod被调度到另一个节点时,会导致之前Pod不能正常读写。 1.19.10及以上版本集群中,如果使用HPA策略对挂载了EVS卷的负载进行扩容,新Pod会因为无法挂载云硬盘导致无法成功启动。
  • 操作步骤 在CCE控制台,单击左侧导航栏的“弹性伸缩”,在“工作负载伸缩”页签下,单击“创建HPA策略”。 进入创建工作负载HPA策略页面,在“插件检测”步骤中: 若插件名称后方显示,请单击插件后方的“现在安装”,根据业务需求配置插件参数后单击“立即安装”,等待插件安装完成。 若插件名称后方显示,则说明插件已安装成功。 确认插件已安装成功后,单击“下一步:策略配置”。 如果插件已提前安装成功,单击“创建HPA策略”后,在“插件检测”步骤中经过短暂检测后将直接进入“策略配置”步骤。 在“策略配置”步骤中,参照表1设置策略参数。 表1 HPA策略参数配置 参数 参数说明 策略名称 新建策略的名称,请自定义。 集群名称 请选择工作负载所在的集群。 命名空间 请选择工作负载所在的命名空间。 关联工作负载 请选择要设置HPA策略的工作负载。 实例范围 请输入最小实例数和最大实例数。 策略触发时,工作负载实例将在此范围内伸缩。 冷却时间 请输入缩容和扩容的冷却时间,单位为分钟,缩容扩容冷却时间不能小于1分钟。 该设置仅在1.15及以上版本的集群中显示,1.13版本的集群不支持该设置。 策略成功触发后,在此缩容/扩容冷却时间内,不会再次触发缩容/扩容,目的是等待伸缩动作完成后在系统稳定且集群正常的情况下进行下一次策略匹配。 策略规则 策略规则可基于系统指标。 系统指标 指标:可选择“CPU利用率”或“内存利用率”。 说明: 利用率 = 工作负载Pod的实际使用量 / 申请量。 期望值:请输入期望资源平均利用率。 期望值表示所选指标的期望值,通过向上取整(当前指标值 / 期望值 × 当前实例数)来计算需要伸缩的实例数。 阈值:请输入缩容和扩容阈值。 当指标值大于缩容阈值且小于扩容阈值时,不会触发扩容或缩容。阈值仅在1.15及以上版本的集群中支持。 您可以单击“添加策略规则”,设置多条伸缩策略。 说明: HPA在计算扩容、缩容实例数时,会选择最近5分钟内的最大值。 设置完成后,单击“创建”,在“完成”步骤中若显示“创建工作负载策略***提交成功”,可单击“返回工作负载伸缩策略”。 在“工作负载伸缩”页签下,可以看到刚刚创建的HPA策略。 图1 创建HPA策略
共100000条