云服务器内容精选

  • 删除镜像快照 镜像快照对应一份EVS云盘快照,保留镜像快照需要支付相应的EVS云盘快照费用。对于不再使用的镜像快照,如果在创建时未设置保留时长,需手动删除。 使用如下命令删除镜像快照: kubectl delete imagesnapshot my-imagesnapshot --wait=false 镜像快照相关API为类kubernetes风格API,并不支持完整的kubernetes API特性,比如“不支持watch”,“不支持fieldSelector、labelSelector”等等。 所以使用kubectl删除镜像快照时,建议额外指定--wait=false。否则,kubectl在删除镜像快照后会发起watch请求以等待镜像快照删除成功。但因镜像快照API不支持watch,此时kubectl工具可能会报错。
  • 明确指定 明确指定和自动匹配同时使用,明确指定具有高优先级。 创建CCI实例时,可以通过注解中添加以下键值来明确指定镜像快照。 名称 示例值 描述 cci.io/image-snapshot-specified-name "my-imagesnapshot" 指定的镜像快照名称。 以创建Deployment为例: apiVersion: apps/v1 kind: Deployment metadata: name: deployment-test spec: replicas: 1 selector: matchLabels: app: redis template: metadata: labels: app: redis annotations: cci.io/image-snapshot-auto-match: "false" cci.io/image-snapshot-specified-name: "my-imagesnapshot" spec: containers: - image: redis name: container-0 resources: limits: cpu: 500m memory: 1024Mi requests: cpu: 500m memory: 1024Mi imagePullSecrets: - name: imagepull-secret
  • 自动匹配 创建CCI实例时,可以通过注解中添加以下键值来开启自动匹配镜像快照。 名称 示例值 描述 cci.io/image-snapshot-auto-match "true" 设置是否开启自动匹配镜像快照。 以创建Deployment为例: apiVersion: apps/v1 kind: Deployment metadata: name: deployment-test spec: replicas: 1 selector: matchLabels: app: redis template: metadata: labels: app: redis annotations: cci.io/image-snapshot-auto-match: "true" spec: containers: - image: redis name: container-0 resources: limits: cpu: 500m memory: 1024Mi requests: cpu: 500m memory: 1024Mi imagePullSecrets: - name: imagepull-secret
  • 操作步骤 登录云容器实例管理控制台,左侧导航栏中选择“镜像快照”,在右侧页面单击“创建镜像快照”。 添加基本信息。 镜像快照名称 请输入以小写字母或数字开头,小写字母、数字、中划线(-)、点(.)组成(其中两点不能相连,点不能与中划线相连),小写字母或数字结尾的1到63字符的字符串。 开启快照保留时间 打开开关,填写快照保留天数。未开启开关,默认为永久。 容器镜像 第三方可以直接输入镜像地址,或单击“选择容器镜像”按钮,进入镜像列表,选择镜像。 我的镜像:展示了您上传到容器镜像服务的镜像。如果您想要在容器镜像服务中上传镜像,请参考客户端上传镜像或页面上传镜像。 如您是IAM用户,您需要参考(可选)上传镜像进行权限设置后才可使用账号的私有镜像。 镜像单层解压后的实际大小不能超过20G。 开源镜像中心:展示了镜像中心的公共镜像。 共享镜像:展示了容器镜像服务中他人共享的镜像。 镜像指定完成后,需要选择镜像的版本号。您还可以单击下方“添加容器镜像”按钮,添加多个容器镜像。 镜像快照大小 填写镜像快照大小,最小为10GiB,范围为10-400G。推荐按照所有缓存镜像大小总和的2倍设置快照大小。 添加镜像快照构建信息。 命名空间 选择已有命名空间或单击“创建命名空间”按钮,创建新的命名空间。 若您要缓存的镜像包含私有镜像仓库,请确保命名空间绑定的vpc与私有镜像仓库网络互通。如需缓存公网镜像,需要命名空间绑定的vpc配置SNAT规则,参考从容器访问公网。 镜像仓库访问凭证 若您容器里选择的镜像是私有的,请输入所选镜像的仓库地址、用户名、密码,用来拉取镜像。单击“添加凭证”,可添加多个。 勾选“镜像快照默认使用 2核4G 规格的CCI实例进行制作,收取费用为制作过程中产生的费用”。 确认镜像快照配置信息和费用显示正常,单击“确认创建”。
  • 操作步骤 在创建负载的过程中,容器配置填写完成后,打开“启动镜像快照”开关,选择自动匹配镜像快照或指定镜像快照。 自动匹配镜像快照 自动匹配将从用户创建的所有可用镜像快照中选择最优的镜像。按以下顺序进行匹配: a. 镜像匹配度:优先选择匹配度高的镜像快照,匹配度指的是Pod和镜像快照两者在镜像上的匹配情况。 b. 创建时间:优先选择创建时间更新的镜像快照。 明确指定 指定已有的镜像快照,并在“镜像快照”页签中选择镜像快照中的镜像。该镜像缓存必须为创建完成可用(Available)状态。
  • 工作负载下发 登录CCE控制台。 选择CCE集群,单击进入CCE集群总览页面。 在导航栏左侧单击“工作负载”,进入工作负载首页。 单击“创建工作负载”,具体操作步骤详情请参见创建工作负载。 填写基本信息。“CCI弹性承载”选择“强制调度策略”。关于调度策略更多信息,请参考调度负载到CCI。 CCE集群创建工作负载时,需要弹性到CCI,健康检查不支持配置TCP启动探针。 进行容器配置。 配置完成后,单击“创建工作负载”。 在工作负载页面,选择工作负载名称,单击进入工作负载管理界面。 工作负载所在节点为CCI集群,说明负载成功已调度到CCI。
  • 插件卸载 登录CCE控制台。 选择CCE集群,单击进入CCE集群总览页面。 在导航栏左侧单击“插件中心”,进入插件中心首页。 选择“CCE 突发弹性引擎 (对接 CCI)”插件,单击“卸载”。 表2 特殊场景说明 特殊场景描述 场景现象 场景说明 CCE集群无节点,卸载插件。 插件卸载失败。 bursting插件卸载时会在集群中启动Job用于清理资源,卸载插件时请保证集群中至少有一个可以调度的节点。 用户直接删除集群,未卸载插件。 用户在CCI侧的命名空间中有资源残留,如果命名空间有计费资源,会造成额外计费。 由于直接删除集群,没有执行插件的资源清理Job,造成资源残留。用户可以手动清除残留命名空间及其下的计费资源来避免额外计费。 关于CCE突发弹性引擎(对接CCI)更多内容详情请参见:CCE突发弹性引擎(对接CCI)。
  • 简介 CCE突发弹性引擎(对接 CCI)作为一种虚拟的kubelet用来连接Kubernetes集群和其他平台的API。Bursting的主要场景是将Kubernetes API扩展到无服务器的容器平台(如CCI)。 基于该插件,支持用户在短时高负载场景下,将部署在云容器引擎CCE上的无状态负载(Deployment)、有状态负载(StatefulSet)、普通任务(Job)、定时任务(CronJob)四种资源类型的容器实例(Pod),弹性创建到云容器实例CCI服务上,以减少集群扩容带来的消耗。
  • 安装插件 登录CCE控制台。 选择CCE集群,单击进入CCE集群总览页面。 在导航栏左侧单击“插件中心”,进入插件中心首页。 选择“CCE 突发弹性引擎 (对接 CCI)”插件,单击“安装”。 配置插件参数。 表1 插件参数说明 插件参数 说明 选择版本 插件的版本。插件版本和CCE集群存在配套关系,更条信息可以参考CCE突发弹性引擎(对接CCI)插件版本记录。 规格配置 用于配置插件负载的实例数。 网络互通 勾选后将开启CCE集群和CCI两侧pod互访的功能,用户可以根据自身业务选择是否打开。详细功能介绍请参考网络。
  • 资源规整用例说明 资源规格 (CPU MEM) 规整后规格(CPU MEM) 说明 37U 37G 无法创建pod弹性到CCI。 CPU规格无效。 30U 257G 无法创建pod弹性到CCI。 存算比大于8,提高CPU。但无法满足CPU规格有效,拦截。 0.35U 0.5G 0.5U 1G CPU向上取整0.25整数倍,MEM向上取整1的整数倍。存算比符合要求,不做调整。 0.35U 1.5G 0.5U 2G CPU向上取整0.25整数倍,MEM向上取整1的整数倍。存算比符合要求,不做调整。 0.45U 18G 2.25U 18G CPU向上取整0.25整数倍,MEM向上取整1的整数倍。存算比大于8,提高CPU。 2U 2G 2U 4G 存算比小于2,提高MEM。
  • pod资源规格算法 弹性CCI的pod规格计算遵循如下规则: 所有应用容器和初始化容器对资源X的Requests和Limits会被设置为相等的值,若配置了Limits,则取Limits值,没有配Limits,则取Requests值。如下所示: 设pod P = {init_container_A , init_container_B , C , D , E} ; 设pod P对资源X的Limits的值为pod_P_resource_X_Limit ; 设container C对资源X的Limits的值为C_X; 则pod_P_resource_X_Limit = max( sum(C_x , D_x , E_x ) , max(init_container_A , init_container_B))。
  • 操作步骤 安装“云原生日志采集插件”和“CCE 突发弹性引擎 (对接 CCI)”插件。 登录CCE控制台。 选择CCE集群,单击进入CCE集群总览页面。 在导航栏左侧单击“插件中心”,进入插件中心首页。 选择“CCE 突发弹性引擎 (对接 CCI)”插件,单击“安装”。 在安装配置中需要勾选“网络互通”功能。 选择“云原生日志采集插件”,单击“安装”。 创建弹性到CCI的负载。 在导航栏右侧单击“工作负载”,进入工作负载首页。 单击“创建工作负载”,具体操作步骤详情请参见创建工作负载。 填写基本信息并完成工作负载创建。更多创建弹性到CCI负载的方式,请参考调度负载到CCI。 配置日志采集策略。 在导航栏左侧单击“日志中心”,进入日志中心首页。 单击“日志采集策略”,进入日志采集策略创建的界面。 配置具体采集策略,完成后单击“确定”。 弹性到CCI的Pod不支持日志策略热更新,更新日志策略后需要重新部署弹性到CCI的Pod才可生效。 查看弹性到CCI的pod yaml。 为支持CCI pod日志被采集到日志中心,CCE插件CCE Log Collector为pod注入了如下四个annotation: annotation 示例值 coordinator.cci.io/inject-volumes '[{"name":"log-agent-conf","configMap":{"name":"log-agent-cci-logging-config","defaultMode":384},"namespace":"monitoring"},{"name":"log-agent-cert","secret":{"secretName":"log-agent-ca-secret","defaultMode":384},"namespace":"monitoring"}]' logconf.k8s.io/fluent-bit-configmap-reference monitoring-log-agent-cci-logging-config logconfigs.logging.openvessel.io '{"testcci001":{"container_files":{"container-1":"/var/test/*/*.log"},"regulation":""}}'' sandbox-volume.openvessel.io/volume-names log-agent-conf,log-agent-cert 在日志中心查看日志上报。 CCE集群日志中心更详细的用法可以参考CCE插件CCE Log Collector相关文档指导。
  • 特殊场景说明 使用场景 使用说明 CCE内容器日志采集 + CCI集群容器日志采集 CCE集群内的工作负载支持三种日志采集类型: 容器标准输出:采集集群内指定容器日志,仅支持Stderr和Stdout的日志。 容器文件日志:采集集群内指定容器内的文件日志。 节点文件日志:采集集群内指定节点路径的文件。 须知: 弹性到CCI的工作负载仅支持“容器文件日志”类型的采集策略。 pod挂载多种类型存储目录 pod通过指定系统、设备、cgroup、tmpfs等挂载目录下的日志无法被采集。 弹性CCI的pod关联多个日志采集策略 为了更好的采集日志,建议为pod预留充足内存。pod被第一个日志策略关联请预留至少50MB内存。每增加一个关联日志采集策略,建议多预留5MB内存。 超长日志采集 单条日志最大容量为250KB,超过会被丢弃。 超长日志文件名 容器中长度超过190的日志文件无法被采集。 日志采集策略中,最长文件名不能超过255。
  • 问题一:用户负载无法调度到CCI,登录CCE节点执行kubectl get node发现virtual-kubelet节点状态为不可调度。 问题原因:CCI资源售罄导致弹性到CCI的资源调度失败,bursting节点会被锁定半小时(状态变为SchedulingDisabled),期间无法调度至CCI。 解决方案:用户可通过CCE集群控制台,使用kubectl工具查看bursting节点状态,若节点被锁定,可手动解锁bursting节点。
  • 命名空间权限 Kubernetes RBAC API定义了四种类型:Role、ClusterRole、RoleBinding与ClusterRoleBinding。当前CCI仅支持ClusterRole、RoleBinding,这两种类型之间的关系和简要说明如下: ClusterRole:描述角色和权限的关系。在Kubernetes的RBAC API中,一个角色定义了一组特定权限的规则。整个Kubernetes集群范围内有效的角色则通过ClusterRole对象实现。 RoleBinding:描述subjects(包含users,groups)和角色的关系。角色绑定将一个角色中定义的各种权限授予一个或者一组用户,该用户或用户组则具有对应绑定ClusterRole定义的权限。 表1 RBAC API所定义的两种类型 类型名称 说明 ClusterRole ClusterRole对象可以授予整个集群范围内资源访问权限。 RoleBinding RoleBinding可以将同一Namespace中的subject(用户)绑定到某个具有特定权限的ClusterRole下,则此subject即具有该ClusterRole定义的权限。 当前仅支持用户使用ClusterRole在Namespace下创建RoleBinding。