Dragon
主机之家测评主机之家测评  2020-07-16 10:42 主机之家测评 隐藏边栏 |   抢沙发  24 
文章评分 0 次,平均分 0.0

Cube 使用准备工作

1,使用 Cube 服务,必须通过 UCloud 实名认证服务;

2,使用 Cube 暴露公网服务,请与 UCloud 备案团队联系进行备案,否则可能会影响您的服务正常使用;

3,自己的业务程序已经完成容器化,已有 Docker 镜像;

4,创建的 Cube 实例,将默认镜像拉取策略为总是(Always),将不支持其他镜像拉取策略。

5,要预先创建好 VPC 和子网;

6,如果是需要绑定 EIP,需要预先给操作账号赋予网络相关权限;

7,需要使用到 UCloud UHub 镜像仓库,需要创建并将镜像上传。

好啦,准备好上述内容,接下来我们就可以进入快速创建 Cube 实例步骤了。

快速创建 Cube 实例

1,登录控制台,选择容器实例 Cube 产品

优刻得 docker 容器化产品 Cube 快速上手使用教程

2,点击 Cube 的创建按钮进入创建页面,为容器组起一个名字

createCube1

3,选择一个仓库内的镜像,这里快速创建我选择的 UCloud 镜像仓库 nginx 镜像 1.17.10-alpine 版本,你可以将自有镜像推送到 UCloud 私有镜像仓库,UHub 镜像仓库操作

createCube2

4,点击确定,完成创建操作,创建一个 Nginx 容器组,从创建到 running 约 5 秒完成

createCube3

注意:Cube 支持除 UFS 外,也默认支持其他 nfs 协议的文件存储,需要自行配置。

Cube 创建详情

通过上面的快速创建我们接下来将通过上面的例子来进行创建操作中的详细设置说明。如果你对于 kubernetes 比较熟悉,可以查看k8s 参考示例对比

卷设置

非必填项

卷设置提供了 config 类型,与 Kubernetes 中的 configMap 资源对象一致。config 提供的是键值对配置文件挂载。

volume1

如图所示点击添加卷设置,填入如下信息然后确定。

卷名:defaultconf

键值对 key:default.conf

键值对 value:

    server {
        listen      8080; 
        server_name localhost; 
        location / {
            root   /usr/share/nginx/html; 
            index  index.html index.htm; 
        } 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   /usr/share/nginx/html; 
        }
      }

这里可以看到我们修改了 nginx 的配置文件,将监听端口配置从原 80 到 8080,作为一个配置文件进行创建。

这里只会创建一个卷设置,将不会进行挂载,如需挂载需要在高阶设置中进行卷挂载。

高阶设置

高阶设置中将针对容器进行详细的参数设置。

advanced1

工作目录(workDir)

非必填项

这里可以定义容器运行时的工作目录,指定了工作目录之后镜像中所有命令执行都将在工作目录中完成,可以将工作目录指定在 Dockerfile 中。这里我们使用到的 nginx 工作目录为根目录。

工作目录: /

命令(command)

非必填项

这里可以定义容器运行时的命令,命令对应的是镜像中程序运行的命令,如果没有设置,将使用容器镜像中的命令。

参数(args)

非必填项

这里可以定义容器运行命令时的参数,如果没有设置,将使用容器镜像中的命令。从 Dockerfile 中可以看到 nginx 的参数全部放在了命令中,我们也可以将它拆分成为命令和参数。

这里我们使用到的 nginx 命令在 Dockerfile 中为CMD ["nginx", "-g", "daemon off;"],其中可以拆分成

命令: nginx

参数:

-g
daemon off;

环境变量

非必填项

这里可以定义容器运行时的环境变量,环境变量将在运行的容器中使用env进行查看,可以将环境变量指定在 Dockerfile 中。这里我们使用的 nginx 环境变量可以参考 Dockerfile 中的环境变量。

环境变量 name: NGINX_VERSION

环境变量 value: 1.17.10

挂载卷

非必填项

这里可以将我们创建的卷设置进行挂载,我们上面创建了一个 nginx 的配置文件 config,这里我们将它挂进我们的容器中。

挂载路径: /etc/nginx/conf.d/

卷名称: defaultconf

注意:如没有创建卷设置,在挂载卷中将选择不到具体的卷名称,请先创建卷设置。

标签

非必填项

这里可以将我们创建的 Cube 实例打上标签,可以方便我们后续通过标签进行筛选,如下举例。

标签 key: app

标签 value: nginx

重启策略

这里可以设置我们创建的 Cube 实例的重启策略,分别为总是(Always)、失败时(OnFailure)、从不(Never)。

自定义网络

所创建的 Cube 实例的网络位置将存在于具体的一个 VPC 的子网里。可以根据你镜像程序的需要选择是否绑定外网 IP 和选择对应的防火墙设置。

Cube 运行状态及错误排查

Cube 状态分类

容器组的运行状态与 kubernetes 中的 pod 运行状态一致,共有以下几种。

状态 含义
Running 表示容器组正常运行。
Completed 表示容器组中的容器任务已经执行完成,执行任务结束的状态返回。
Error 表示容器组中部分容器运行不正常,正在重试容器启动。
ContainerCreating 容器创建中。
CreateContainerError 镜像中的执行命令或者创建时添加的命令在容器中执行失败。
CrashLoopBackOff 表示容器组启动成功后运行失败,组内部分或全部容器处于不健康的状态。
ErrImagePull 镜像拉取错误,正在进行重试。
ImagePullBackOff 表示使用的镜像仓库设置了密码或者镜像已经被删除,导致镜像拉取失败。
Terminating 表示容器正在结束当前执行程序优雅退出。
Pending 没有足够资源创建容器组。

错误状态排查

Error

容器组中容器运行不正常的一个中间状态,将会很快转为其他状态。

处理方法
  1. 查看 error 下一个状态,查找对应的处理方法。

CreateContainerError

镜像中的执行命令或者创建时添加的命令在容器中执行失败。

处理方法
  1. 检查镜像中的执行命令是否正确。
  2. 检查创建时添加的命令(command)是否正确,检查完成后重新创建。

CrashLoopBackOff

容器中有部分容器启动成功后运行失败或者退出,常见得错误状态出现情况有:

  1. 批处理任务容器镜像,在启动容器组时选择了重启策略为“总是”。
  2. 多容器的容器组中,有部分容器无法正常运行或者退出。
  3. 多容器的容器组中,有存在监听端口冲突的情况。
处理方法
  1. 检查是否为批处理任务容器镜像,如果是请选择重启策略为“从不”,可以正常返回,需重建。
  2. 检查容器组中哪些容器没有正常运行,查看启动命令是否正确,需重建。
  3. 查看是否为 centos、busybox 一类镜像,此类镜像由于没有固定进程启动,如是则需要设定启动命令,需重建。
  4. 多容器的容器组中,修改已存在的端口冲突,需重建。

ImagePullBackOff & ErrImagePull

使用的镜像仓库设置了密码或者镜像已经被删除,导致镜像拉取失败。

处理方法
  1. 检查是否将镜像仓库加密了,如果加密了仓库需要设置打开或者增加镜像拉取密钥,增加密钥需重建。
  2. 检查是否将镜像删除了,如删除了,需要重新上传对应镜像和版本。

Terminating

容器正在结束当前执行程序优雅退出。

处理方法
  1. 正常情况下等待一会会退出完成,如退出时间超过 10 分钟,请与我们客服进行联系。

Pending

没有足够资源创建容器组。

处理方法
  1. 正常情况下不会存在 Pending 状态,如您遇到 Pending 状态超过 5 分钟,这需要联系他们官网客服了。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

发表评论

扫一扫二维码分享