云服务器内容精选

  • 工作负载下发 登录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))。
  • 负载hostpath配置方式 操作场景 在使用CCE或者其他K8s集群时,用户使用HostPath类型存储。但CCI是共享集群,不开放HostPath能力,因此使用HostPath的Pod通过bursting弹到CCI时,会被拦截。如无法改变Pod spec.volumes中配置的HostPath,可通过配置Annotation的形式,允许让使用HostPath的Pod弹性到CCI上,bursting在校验时需要去掉Pod中的HostPath或者将HostPath替换为localDir、emptyDir或者flexVolume。 操作步骤 通过在Pod.Annotations中加入注解可以做到hostPath转localdir、emptydir或者flexvolume。 单个hostPath替换为localdir配置方式: "coordinator.cci.io/hostpath-replacement": '[{"name":"source-hostpath-volume","policyType":"replaceByLocalDir","localDir":{"sizeLimit":"1Gi"}}] 单个hostPath替换为flexVolume配置方式: "coordinator.cci.io/hostpath-replacement": '[{"name":"source-hostpath-volume-1","policyType":"remove"},{"name":"source-hostpath-volume-2","policyType":"replaceByLocalDir","localDir":{"sizeLimit":"1Gi"}},{"name":"source-hostpath-volume-3","policyType":"replaceByEmptyDir","emptyDir":{"sizeLimit":"10Gi"}}]' EVS目前支持普通I/O、高I/O、超高I/O三种规格,volumeType根据实际情况填写。 表1 EVS规格 EVS规格 类型 应用场景 应用场景示例 普通I/O sata 后端存储由SATA存储介质提供,适用于大容量,读写速率要求不高,事务性处理较少的应用场景。 开发测试、企业办公应用。 高I/O sas 后端存储由SAS存储介质提供,适用于性能相对较高,读写速率要求高,有实时数据存储需求应用场景。 创建文件系统、分布式文件共享。 超高I/O ssd 后端存储SSD存储介质提供,适用于高性能、高读写速率要求、数据密集型应用场景。 NoSQL、关系型数据库、数据仓库(如Oracle RAC、SAP HANA)。 全部hostPath都忽略: "coordinator.cci.io/hostpath-replacement": '[{"name":"source-hostpath-volume-1","policyType":"remove"},{"name":"source-hostpath-volume-2","policyType":"replaceByLocalDir","localDir":{"sizeLimit":"1Gi"}},{"name":"source-hostpath-volume-3","policyType":"replaceByEmptyDir","emptyDir":{"sizeLimit":"10Gi"}}]' 多个hostPath差异化替换策略: "coordinator.cci.io/hostpath-replacement": '[{"name":"source-hostpath-volume-1","policyType":"remove"},{"name":"source-hostpath-volume-2","policyType":"replaceByLocalDir","localDir":{"sizeLimit":"1Gi"}},{"name":"source-hostpath-volume-3","policyType":"replaceByEmptyDir","emptyDir":{"sizeLimit":"10Gi"}}]' 参考deployment yaml示例: apiVersion: apps/v1 kind: Deployment metadata: annotations: description: '' labels: virtual-kubelet.io/burst-to-cci: enforce appgroup: '' version: v1 name: test namespace: default spec: replicas: 2 selector: matchLabels: app: test version: v1 template: metadata: labels: app: test version: v1 annotations: coordinator.cci.io/hostpath-replacement: '[{"name": "test-log2", "policyType": "remove"}, {"name": "test-log", "policyType": "replaceByEmptyDir", "emptyDir":{"sizeLimit":"10Gi"}}, {"name": "test-log1", "policyType": "replaceByLocalDir", "localDir":{"sizeLimit":"1Gi"}}]' spec: containers: - name: container-1 image: nginx imagePullPolicy: IfNotPresent env: - name: PAAS_APP_NAME value: test - name: PAAS_NAMESPACE value: default - name: PAAS_PROJECT_ID value: 0b52a6e40b00d3682f36c0005163a82c resources: requests: cpu: 250m memory: 512Mi limits: cpu: 250m memory: 512Mi volumeMounts: - name: test-log mountPath: /tmp/log - name: test-log1 mountPath: /tmp/log1 - name: test-log2 mountPath: /tmp/log2 volumes: - hostPath: path: /var/paas/sys/log/virtual-kubelet type: "" name: test-log - hostPath: path: /var/paas/sys/log type: "" name: test-log1 - hostPath: path: /var/paas/sys/log2 type: "" name: test-log2
  • 支持的存储类型 用户在配置负载存储类型时,CCE的console有如下选项。 弹性CCI的负载对存储类型的支持情况如下: volume类型 是否支持 特殊场景说明 HostPath 否 CCI是共享集群,不直接开放HostPath能力。 ConfigMap 是 - Secret 是 - EmptyDir 是 挂载EmptyDir不支持子路径。 DownwardAPI 是 - Projected 是 如配置了serviceAccountToken类型的source,弹性到CCI后会挂载对应service-account-token secret中的token,该token为长期有效,且token没有预期受众,即expirationSeconds和audience两项配置不会生效。 PersistentVolumeClaims 是 只支持SFS、SFS Turbo云存储类型,且只支持使用CSI类型的StorageClass。
  • 操作步骤 安装“云原生监控插件”。 登录CCE控制台。 选择CCE集群,单击进入CCE集群总览页面。 在导航栏左侧单击“插件中心”,进入插件中心首页。 选择“云原生监控插件”,单击“安装”。 图1 安装云原生监控插件 在安装插件页面,进行规格配置,部署模式选择“Server模式”。 如果需要在Agent部署模式下使用HPA功能,请联系技术支持人员。 通过云原生监控插件,提供系统资源指标。 如果CCE集群中未安装metrics-server插件,请开启Metric API,详情请参见通过Metrics API提供资源指标。配置完成后,可使用Prometheus采集系统资源指标。 如果CCE集群中已安装metrics-server插件,可以选择以下任意一种方式进行处理: 方式一:请卸载“Kubernetes Metrics Server”插件后,开启Metric API。 登录CCE控制台。 选择CCE集群,单击进入CCE集群总览页面。 在导航栏左侧单击“插件中心”,进入插件中心首页。 选择“Kubernetes Metrics Server”插件,单击“卸载”。 开启Metric API,详情请参见通过Metrics API提供资源指标。配置完成后,可使用Prometheus采集系统资源指标。 方式二:修改APIService对象。 需要更新APIService对象“v1beta1.metrics.k8s.io”: apiVersion: apiregistration.k8s.io/v1 kind: APIService metadata: labels: app: custom-metrics-apiserver release: cceaddon-prometheus name: v1beta1.metrics.k8s.io spec: 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 apply -f metrics-apiservice.yaml 执行kubectl top pod -n monitoring命令,若显示如下,则表示Metrics API能正常访问: # kubectl top pod -n monitoring NAME CPU(cores) MEMORY(bytes) ...... custom-metrics-apiserver-d4f556ff9-l2j2m 38m 44Mi ...... 卸载插件时,需要执行以下kubectl命令,同时删除APIService对象,否则残留的APIService资源将导致metrics-server插件安装失败。 kubectl delete APIService v1beta1.metrics.k8s.io