跳转至

Serverlss 容器 CCI

什么是云容器实例

cci architecture

云容器实例(Cloud Container Instance,CCI)服务提供Serverless Container(无服务器容器)引擎,让您无需创建和管理服务器集群即可直接运行容器。

Serverless是一种架构理念,是指不用创建和管理服务器、不用担心服务器的运行状态(服务器是否在工作等),只需动态申请应用需要的资源,把服务器留给专门的维护人员管理和维护,进而专注于应用开发,提升应用开发效率、节约企业IT成本。传统上使用Kubernetes运行容器,首先需要创建运行容器的Kubernetes服务器集群,然后再创建容器负载。

云容器实例的Serverless Container就是从使用角度,无需创建、管理Kubernetes集群,也就是从使用的角度看不见服务器(Serverless),直接通过控制台、kubectl、Kubernetes API创建和使用容器负载,且只需为容器所使用的资源付费

产品介绍

创建CCI应用

默认第一次登录CCI界面时是没有namespace的,需要先申请namespace,再在namespace下创建应用,目前支持的应用有 deployment、job、cronjob(没有statefulSet)。

cci create application

创建应用时有 Create from YAML、Create from Image 两种方式。这里以简单的 From image 方式创建,注意这里的规格是以上面选的 pod specifications来计费的,而不是基于下面container里的CPU、内存设置来计费。

cci pod specifications

pod 规格可以自定义,自定义要求如下:

Note

  1. The total number of CPU cores in a pod must be a multiple of 0.25.
  2. The total amount memory in GB in a pod must be a multiple of 1.
  3. The value of (total memory in GB)/(total CPU cores) must be in the range of 2 to 8.

如果涉及服务对外网暴漏,需要通过ELB的方式实现。

create deployment

kubectl管理

CCI manager

CCI 支持控制台/kubectl/k8s API三种方式进行管理,对于运维人员来讲,经常使用的排错渠道是通过kubectl命令进行排错。CCI 不像 CCE 在控制台放置了kubectl管理的相关按钮和操作说明。CCI的管理方式如下:

  1. 安装并设置kubectl
  2. 配置IAM认证信息并持久化到本地

kubectl的安装比较简单,和所有k8s相关版本的管理是一样的,https://kubernetes.io/docs/tasks/tools/ 下载对应的版本,放在/usr/local/bin等可执行目录,给予可执行权限。

在正常 k8s cluster下,安装完kubectl,就需要配置kubeconfig文件了,在CCI下原理类似,只不过要使用 cci-iam-authenticator 进行配置。和kubectl一样,下载完该文件,给予可执行权限并放置到一个path路径下。

初始化cci-iam-authenticator提供了AK/SK和用户名/密码两种方式,请选择其中一种执行:

1
2
3
4
5
6
7
8
// 使用AK/SK的方式配置IAM认证信息
cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://$endpoint --ak=xxxxxxx --sk=xxxxxx

// 使用用户名/密码的方式配置IAM认证信息
cci-iam-authenticator generate-kubeconfig --cci-endpoint=https://$endpoint --domain-name=xxxxxxx --user-name=xxxxxx --password='xxxxxx'

// 执行如下命令确认可以获取信息
kubectl get ns

获取CCI endpoint

计费

实例资源包含CPU、内存、GPU等,根据您申请的实际实例资源规格,以及每个实例实际运行时长按秒计费。计费时长从开始下载容器镜像 (docker pull) 到CCI实例停止使用进行计算。

由于各个Region价格是不同的,具体价格需要参看价格计算器上的价格。

友商竞争产品

当前主流的云厂商都有serverlss容器化产品,而且serverless化的理念在越来越多的企业也更流行。

注:源码直接部署有一个项目buildpacks,暂不确认GCP run的源码部署是不是用的这个技术。因为从名字上看是一样的,另外redhat redhshift也有一个S2I也做的类似的功能,后续可以做一个对比。

CCE弹性到CCI

CCE容器实例支持弹性伸缩到CCI,但需要先安装 Virtual Kubelet插件,其对应的限制是:仅支持VPC网络模式的CCE Standard集群和CCE Turbo集群(virtual-kubelet 1.2.5版本及以上支持),暂不支持ARM集群。

在部署 CCE 应用时只需要打上相关标签,就可以自动弹到CCI上:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  namespace: default
  labels:
    virtual-kubelet.io/burst-to-cci: 'auto'    # 弹性到CCI
spec:
  replicas: 2
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
        - image: 'nginx:perl'
          name: container-0
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
            limits:
              cpu: 250m
              memory: 512Mi
          volumeMounts: []
      imagePullSecrets:
        - name: default-secret

其中,value值支持以下选项:

  • auto:根据用户集群内调度器实际打分结果自动决定是否弹性至CCI,其中在TaintToleration算法上会优先选择调度到CCE节点。
  • localPrefer:集群资源不足时,将Pod部署到CCI。
  • enforce:强制调度至CCI。
  • off:不调度至CCI。

捐赠本站(Donate)

weixin_pay
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))