云服务器内容精选

  • 解决措施 请参考如下步骤手动卸载插件。 登录云服务器。 在/tmp目录下新建plugin.yaml文件,并将如下脚本内容拷贝至plugin.yaml文件中。 apiVersion: v1 kind: Namespace metadata: labels: admission.gatekeeper.sh/ignore: no-self-managing control-plane: controller-manager gatekeeper.sh/system: "yes" pod-security.kubernetes.io/audit: restricted pod-security.kubernetes.io/audit-version: latest pod-security.kubernetes.io/enforce: restricted pod-security.kubernetes.io/enforce-version: v1.24 pod-security.kubernetes.io/warn: restricted pod-security.kubernetes.io/warn-version: latest name: gatekeeper-system --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: assign.mutations.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: assignimage.mutations.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: assignmetadata.mutations.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: configs.config.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: constraintpodstatuses.status.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: constrainttemplatepodstatuses.status.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.11.3 labels: gatekeeper.sh/system: "yes" name: constrainttemplates.templates.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: expansiontemplate.expansion.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: expansiontemplatepodstatuses.status.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: modifyset.mutations.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.10.0 labels: gatekeeper.sh/system: "yes" name: mutatorpodstatuses.status.gatekeeper.sh --- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.11.3 labels: gatekeeper.sh/system: "yes" name: providers.externaldata.gatekeeper.sh --- apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: creationTimestamp: null labels: gatekeeper.sh/system: "yes" name: gatekeeper-manager-role namespace: gatekeeper-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: creationTimestamp: null labels: gatekeeper.sh/system: "yes" name: gatekeeper-manager-role --- apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: labels: gatekeeper.sh/system: "yes" name: gatekeeper-manager-rolebinding namespace: gatekeeper-system roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: gatekeeper-manager-role subjects: - kind: ServiceAccount name: gatekeeper-admin namespace: gatekeeper-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: labels: gatekeeper.sh/system: "yes" name: gatekeeper-manager-rolebinding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: gatekeeper-manager-role subjects: - kind: ServiceAccount name: gatekeeper-admin namespace: gatekeeper-system --- apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: labels: gatekeeper.sh/system: "yes" name: gatekeeper-mutating-webhook-configuration --- apiVersion: admissionregistration.k8s.io/v1 kind: ValidatingWebhookConfiguration metadata: labels: gatekeeper.sh/system: "yes" name: gatekeeper-validating-webhook-configuration 在/tmp目录下新建uninstall.sh文件,并将如下脚本内容拷贝至uninstall.sh文件中。 #!/bin/bash kubectl delete -f /tmp/plugin.yaml kubectl delete ns cgs-provider 执行如下命令卸载容器集群防护插件。 bash /tmp/uninstall.sh 回显如下图类似信息,表示插件卸载完成。
  • 计费构成分析 可以将云容器实例的使用阶段按照规格分为两段: 在2023/03/18 15:30:00 ~ 2023/03/20 9:00:00期间按照Pod规格:CPU 2核,内存 4GB计费,计费时长为41.5小时,费用计算如下: 在2023/03/20 9:00:00 ~ 2023/03/31 23:59:59期间按照Pod规格:CPU 4核,内存 8GB计费,计费时长为279小时,费用计算如下: 由此可见,在3月份,该云容器实例总共产生的费用为: 第一段时间产生费用:0.0001225*41.5*60*60=18.301元 第二段时间产生费用:0.000245*279*60*60=246.078元 总共产生费用:18.301+246.078=264.379元
  • 操作场景 容器镜像服务企业版支持与其他仓库之间同步容器镜像,可实现单点推送及全球自动同步分发,方便企业在全球多个地域快速部署更新容器业务。当前支持与如下类型仓库之间同步: 容器镜像服务:即SWR共享仓库中的镜像。 容器镜像服务企业版:支持华为云不同地域的企业仓库以及客户基于开源harbor搭建的私有仓库。 镜像同步功能允许用户自定义创建同步规则,可指定某个仓库内的部分资源同步至另一个仓库内的命名空间。例如,用户可选择同步资源类型(容器镜像、Helm Chart、或是全部同步),通过正则表达式过滤镜像及版本,可选择是否覆盖已有的同名镜像,避免历史数据覆盖丢失。
  • 设置访问控制与域名解析 公网访问 设置公网访问控制和域名解析,您可以使用公网并通过自定义域名的方式访问SWR仓库。配置公网的访问控制,详情请参考配置公网访问。 进入云解析服务控制台。 在左侧树状导航栏,选择“公网域名”, 进入域名列表页面。 【可选】如果没有自定义域名后缀的公网域名, 单击右上角的“创建公网域名”,输入域名,单击“确定”。 单击您的域名名称进入详情页。 单击“添加记录集”,进入“添加记录集”页面设置参数,然后单击“确定”。 表1 添加记录集参数设置 参数 配置 主机记录 输入自定义域名的前缀。 类型 CNAME。 线路类型 指域名访问者所在的地区和使用的运营商网络,本例中为全网默认。 TTL 为缓存时间,数值越小,修改记录各地生效时间越快,默认为5分钟。 值 设置为仓库的默认域名。 内网访问 设置内网访问控制和内网域名,您可以在指定VPC内的云服务器通过内网拉取SWR仓库中的镜像。配置内网访问控制,详情请参考配置内网访问。 进入云解析服务控制台。 在左侧树状导航栏,选择“内网域名”, 进入域名列表页面。 【可选】如果没有自定义域名后缀的内网域名, 单击右上角的“创建内网域名”,输入域名,选择区域,以及与仓库打通网络的VPC,单击“确定”。 单击您的域名名称进入详情页。 单击“添加记录集”,进入“添加记录集”页面设置参数,然后单击“确定”。 表2 添加记录集参数设置 参数 配置 主机记录 输入自定义域名的前缀 类型 CNAME 线路类型 指域名访问者所在的地区和使用的运营商网络,本例中为全网默认。 TTL 为缓存时间,数值越小,修改记录各地生效时间越快,默认为5分钟。 值 设置为仓库的默认域名。
  • 前提条件 需要开通云服务:云解析服务 DNS、云证书管理服务(Cloud Certificate Manager,CCM)。 欲使用域名管理功能,您的账户需要具备查询证书列表权限(scm:cert:list)以及证书导出的权限(scm:cert:export)。 已拥有域名。您可以通过域名注册服务注册域名,详细介绍请参见什么是域名注册服务?。 如果您的SWR仓库在中国境内,那么如果您要在公网环境中使用自定义域名,则域名需要备案。如果您的SWR仓库在境外,则域名无需备案。 已为域名签发证书。您可通过云证书管理CCM服务购买证书,并确认已绑定仓库需要使用的自定义域名。
  • 操作步骤 登录云容器引擎CCE控制台。 在左侧导航栏上单击“插件市场”。 在插件市场页面上方搜索框输入“cosign”并搜索。 在下方的搜索结果中找到“容器镜像签名验证”插件,单击“安装”。 填写“安装插件”页面的相关参数。 选择集群:选择镜像所在集群。该插件只能在K8S V1.23及以上版本集群上安装。 对集群某个命名空间进行镜像验签时,需要先为该命名空间添加 policy.sigstore.dev/include:true 标签。 选择版本:选择插件版本 规格配置 单仓库:当前插件只支持在1个仓库上使用。 高可用:当前插件支持在2个仓库上使用。 自定义:自定义仓库数、CPU配额、容器配额。 表1 swr-cosign插件规格配置 参数 参数说明 插件规格 该插件可配置“单实例”、“高可用”或“自定义”规格。 实例数 选择上方插件规格后,显示跟插件规格匹配的实例数。 选择“自定义”规格时,您可根据需求调整插件实例数。 容器 选择“自定义”规格时,您可根据需求调整插件实例的容器规格。 参数配置 KMS密钥:选择一个创建非对称密钥中创建好的密钥。 验签镜像:单击,选择需要验签的镜像。 表2 swr-cosign插件参数配置 参数 参数说明 KMS密钥 选择一个密钥,仅支持 EC_P256、EC_P384、SM2 类型的密钥。 您可以前往密钥管理服务新增密钥。 验签镜像 验签镜像地址通过正则表达式进行匹配,例如填写docker.io/**表示对docker.io镜像仓库的镜像进行验签。如需对所有镜像验签,请填写**。 填写完成后,单击“安装”。 待插件安装完成后,选择对应的集群,然后单击左侧导航栏的“插件中心”,可筛选“已安装插件”查看相应的插件。
  • 添加命名空间标签 登录容器镜像服务控制台,单击左侧菜单栏“企业版”。 选中要添加命名空间标签的仓库,单击仓库名称,进入仓库详情页。 单击仓库详情页左侧导航栏“命名空间”,进入命名空间列表页。单击页面右上角的图标,以列表形式展示命名空间列表。 选择要添加标签的命名空间,单击右侧“标签管理”,进入标签管理页面。 图1 命名空间管理列表页 在标签管理页面,单击,新增一个标签。 图2 标签管理 参考标签命名规则,填写标签的键和值。
  • 使用Helm客户端上传及下载Helm Chart 安装Helm客户端 本文以在Linux操作系统的节点上安装为例,如在其他平台安装请下载对应安装包。 依次执行以下命令,下载并安装Helm客户端。关于安装Helm的更多信息,请参见Installing Helm。 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh “get_helm.sh”脚本会自动拉取最新的Helm版本进行安装,如需安装其他版本,请从官方下载需要的Helm版本。 推送Helm Chart 安装Helm Push插件。 在安装Helm Push插件前,需要预先安装Git。 helm plugin install https://github.com/chartmuseum/helm-push 在节点上执行如下命令,创建一个Chart。 helm create [Chart名称] 示例:helm create chart-demo 执行如下命令,推送指定目录至Chart仓库。 helm push [Chart名称] [本地仓库名称] 示例: helm push chart-demo group 您还可以将Chart文件打包为tgz压缩包,然后直接上传。 helm push [Chart名称]-[Chart版本].tgz [本地仓库名称] 示例: tar zcvf chart-demo-1.0.0.tgz chart-demo/ # 压缩Chart文件 helm push chart-demo-1.0.0.tgz group # 上传Chart压缩包 下载Helm Chart 在节点上执行如下命令,更新本地仓库Chart信息。 helm repo update 下载指定版本Chart。 helm pull [本地仓库名称]/[Chart名称] --version [Chart版本] 示例: helm pull group/chart-demo --version 1.0.0
  • 背景信息 Kubernetes提供了统一模式的API,能以YAML格式的文件定义Kubernetes集群中的资源,包括Pod、Service、Deployment、StatefulSet、Job等等。这些资源种类繁多,且分散的kubernetes应用配置文件难以管理、编辑和更新,因此云原生社区衍生了一个更高维度的概念及其实现工具,即Chart和Helm。 Chart是描述相关的一组Kubernetes集群内资源的文件集合。 Helm是一个命令行程序,用于管理这些Chart,以及其运行态Release。 容器镜像服务企业版支持Helm客户端实现Chart的上传和下载。
  • 创建签名规则 登录容器镜像服务控制台,单击左侧菜单栏“企业版”,然后单击仓库名称进入仓库详情页面。 在左侧导航栏选择“ 镜像签名”。 在右上角单击“创建签名规则”。 填写具体规则。 表2 参数说明 参数名称 说明 示例 规则名称 镜像签名规则的名称。 SignatureRule 命名空间 选择要签名的镜像所在的命名空间。 library 规则范围 镜像:镜像名称,默认使用正则表达式。单击可手动选择镜像。 正则表达式规则可填写如nginx-*、{repo1, repo2} 等,其中: *:匹配不包含路径分隔符“/”的任何字段。 **:匹配包含路径分隔符“/”的任何字段。 ?:匹配任何单个非“/”的字符。 {选项1, 选项2, ...}:同时匹配多个选项。匹配上其中一个即可。 版本:镜像的版本,同样使用正则表达式,匹配规则与镜像名称相同。 nginx-*:表示匹配“nginx-”开头的镜像。 签名方式 当前支持使用KMS签名。 KMS 签名Key 选择在创建非对称密钥中创建的密钥。 key1 触发模式 手动:手动触发,规则创建完成后需要您手动单击执行。 事件触发 + 手动:事件触发指当有新镜像上传到仓库且符合匹配规则时触发镜像签名。 事件触发 + 手动 规则描述 规则的描述信息。 - 图2 创建签名规则 单击“确定”完成规则创建。
  • 创建非对称密钥 登录数据加密服务控制台。 在左侧导航栏选择“密钥管理”,单击右上角的“创建密钥”。 在“创建密钥”对话框中配置参数,然后单击“确定”。 镜像签名功能需要非对称密钥算法的支持,创建密钥时,密钥算法需选择EC、RSA或SM2类型,详情请见表1。其他参数配置请参见创建密钥。 图1 创建密钥 表1 容器镜像服务支持的密钥算法类型 密钥类型 算法类型 密钥规格 说明 用途 非对称密钥 RSA RSA_2048 RSA_3072 RSA_4096 RSASSA_PSS_SHA_256 RSASSA_PSS_SHA_384 RSASSA_PSS_SHA_512 RSASSA_PKCS1_V1_5_SHA_256 RSASSA_PKCS1_V1_5_SHA_384 RSASSA_PKCS1_V1_5_SHA_512 RSA非对称密钥 小量数据的加解密或数字签名。 非对称密钥 ECC EC_P256 ECDSA_SHA_256 EC_P384 ECDSA_SHA_384 椭圆曲线密码,使用NIST推荐的椭圆曲线 数字签名 非对称密钥 SM2 SM2 国密SM2非对称密钥 小量数据的加解密或数字签名。
  • 创建命名空间 登录容器镜像服务控制台,单击左侧菜单栏的“企业版”,在“仓库管理”页面单击您的仓库名称进入仓库。 在左侧导航栏单击“命名空间”。 在右上角单击“创建命名空间”。 填写命名空间名称,选择命名空间类型。 图1 创建命名空间 公有命名空间:允许任何用户登录后下载命名空间内的制品,如需其他操作需在IAM上为用户授权。 私有命名空间:需在IAM上为用户授权才可以对命名空间内的制品进行操作。 单击“确定”。 命名空间创建成功后,您可以选择列表视图或卡片视图查看命名空间详情,在右上角单击或图标进行视图切换。
  • 为什么选择云容器引擎 云容器引擎深度整合高性能的计算(ECS/BMS)、网络(VPC/EIP/ELB)、存储(EVS/OBS/SFS)等服务,并支持GPU、NPU、ARM等异构计算架构,支持多可用区(Available Zone,简称AZ)、多区域(Region)容灾等技术构建高可用Kubernetes集群。 华为云是全球首批Kubernetes认证服务提供商(Kubernetes Certified Service Provider,KCSP),是国内最早投入Kubernetes社区的厂商,是容器开源社区主要贡献者和容器生态领导者。华为云也是CNCF云原生计算基金会的创始成员及白金会员,云容器引擎是全球首批通过CNCF基金会Kubernetes一致性认证的容器服务。 更多选择理由,请参见产品优势和应用场景。
  • 产品形态 云容器引擎包含多种产品形态。 维度 子维度 CCE Standard CCE Turbo CCE Autopilot 产品定位 - 标准版本集群,提供高可靠、安全的商业级容器集群服务。 面向云原生2.0的新一代容器集群产品,计算、网络、调度全面加速。 无用户节点的Serverless版集群,无需对节点的部署、管理和安全性进行维护,并根据CPU和内存资源用量按需付费。 使用场景 - 面向有云原生数字化转型诉求的用户,期望通过容器集群管理应用,获得灵活弹性的算力资源,简化对计算、网络、存储的资源管理复杂度。 适合对极致性能、资源利用率提升和全场景覆盖有更高诉求的客户。 适合具有明显的波峰波谷特征的业务负载,例如在线教育、电子商务等行业。 规格差异 网络模型 云原生网络1.0:面向性能和规模要求不高的场景。 容器隧道网络模式 VPC网络模式 云原生网络2.0:面向大规模和高性能的场景。 组网规模最大支持2000节点 云原生网络2.0:面向大规模和高性能的场景。 网络性能 VPC网络叠加容器网络,性能有一定损耗 VPC网络和容器网络融合,性能无损耗 VPC网络和容器网络融合,性能无损耗 容器网络隔离 容器隧道网络模式:集群内部网络隔离策略,支持NetworkPolicy。 VPC网络模式:不支持 Pod可直接关联安全组,基于安全组的隔离策略,支持集群内外部统一的安全隔离。 Pod可直接关联安全组,基于安全组的隔离策略,支持集群内外部统一的安全隔离。 安全隔离性 普通容器:Cgroups隔离 安全容器:当前仅物理机支持,提供虚机级别的隔离 普通容器:Cgroups隔离 提供虚机级别的隔离 边缘基础设施管理 不支持 支持管理智能边缘小站IES 不支持
  • 产品架构 图1 CCE产品架构 计算:全面适配华为云各类计算实例,支持虚拟机和裸机混合部署、高性价比鲲鹏实例、GPU和华为云独有的昇腾算力;支持GPU虚拟化、共享调度、资源感知的调度优化。 网络:支持对接高性能、安全可靠、多协议的独享型ELB作为业务流量入口。 存储:对接云存储,支持EVS、SFS和OBS,提供磁盘加密、快照和备份能力。 集群服务:支持购买集群、连接集群、升级集群、管理集群等一系列集群生命周期管理服务。 容器编排:CCE提供了管理Helm Chart(模板)的控制台,能够帮助您方便的使用模板部署应用,并在控制台上管理应用。 制品仓库:对接容器镜像服务,支持镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助您快速部署容器化服务。 弹性伸缩:支持工作负载和节点的弹性伸缩,可以根据业务需求和策略,经济地自动调整弹性计算资源的管理服务。 服务治理:深度集成应用服务网格,提供开箱即用的应用服务网格流量治理能力,用户无需修改代码,即可实现灰度发布、流量治理和流量监控能力。 容器运维:深度集成容器智能分析,可实时监控应用及资源,支持采集、管理、分析日志,采集各项指标及事件并提供一键开启的告警能力。 扩展插件市场:提供了多种类型的插件,用于管理集群的扩展功能,以支持选择性扩展满足特性需求的功能。