老刘测评前文《UCloud优刻得Serverless容器服务产品Cube免费公测》有介绍UCloud优刻得最新发布了基于serverless架构的容器实例服务容器实例(Cube)产品,这里继续和大家分享下UCloud优刻得docker容器化产品Cube快速上手使用教程。
接下来我们使用容器实例(Cube)发布您的服务,将介绍具体创建填写字段含义以及示例操作。
Cube使用准备工作
1,使用Cube服务,必须通过UCloud实名认证服务;
2,使用Cube暴露公网服务,请与UCloud备案团队联系进行备案,否则可能会影响您的服务正常使用;
3,自己的业务程序已经完成容器化,已有Docker镜像;
4,创建的Cube实例,将默认镜像拉取策略为总是(Always),将不支持其他镜像拉取策略。
5,要预先创建好VPC和子网;
6,如果是需要绑定EIP,需要预先给操作账号赋予网络相关权限;
7,需要使用到UCloud UHub镜像仓库,需要创建并将镜像上传。
好啦,准备好上述内容,接下来我们就可以进入快速创建Cube实例步骤了。
快速创建Cube实例
1,登录控制台,选择容器实例Cube产品
2,点击Cube的创建按钮进入创建页面,为容器组起一个名字
3,选择一个仓库内的镜像,这里快速创建我选择的UCloud镜像仓库nginx镜像1.17.10-alpine版本,你可以将自有镜像推送到UCloud私有镜像仓库,UHub镜像仓库操作
4,点击确定,完成创建操作,创建一个Nginx容器组,从创建到running约5秒完成
注意:Cube支持除UFS外,也默认支持其他nfs协议的文件存储,需要自行配置。
Cube创建详情
通过上面的快速创建我们接下来将通过上面的例子来进行创建操作中的详细设置说明。如果你对于kubernetes比较熟悉,可以查看k8s参考示例对比。
卷设置
非必填项
卷设置提供了config类型,与Kubernetes中的configMap资源对象一致。config提供的是键值对配置文件挂载。
如图所示点击添加卷设置,填入如下信息然后确定。
卷名: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,作为一个配置文件进行创建。
这里只会创建一个卷设置,将不会进行挂载,如需挂载需要在高阶设置中进行卷挂载。
高阶设置
高阶设置中将针对容器进行详细的参数设置。
工作目录(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
容器组中容器运行不正常的一个中间状态,将会很快转为其他状态。
处理方法
- 查看error下一个状态,查找对应的处理方法。
CreateContainerError
镜像中的执行命令或者创建时添加的命令在容器中执行失败。
处理方法
- 检查镜像中的执行命令是否正确。
- 检查创建时添加的命令(command)是否正确,检查完成后重新创建。
CrashLoopBackOff
容器中有部分容器启动成功后运行失败或者退出,常见得错误状态出现情况有:
- 批处理任务容器镜像,在启动容器组时选择了重启策略为“总是”。
- 多容器的容器组中,有部分容器无法正常运行或者退出。
- 多容器的容器组中,有存在监听端口冲突的情况。
处理方法
- 检查是否为批处理任务容器镜像,如果是请选择重启策略为“从不”,可以正常返回,需重建。
- 检查容器组中哪些容器没有正常运行,查看启动命令是否正确,需重建。
- 查看是否为centos、busybox一类镜像,此类镜像由于没有固定进程启动,如是则需要设定启动命令,需重建。
- 多容器的容器组中,修改已存在的端口冲突,需重建。
ImagePullBackOff & ErrImagePull
使用的镜像仓库设置了密码或者镜像已经被删除,导致镜像拉取失败。
处理方法
- 检查是否将镜像仓库加密了,如果加密了仓库需要设置打开或者增加镜像拉取密钥,增加密钥需重建。
- 检查是否将镜像删除了,如删除了,需要重新上传对应镜像和版本。
Terminating
容器正在结束当前执行程序优雅退出。
处理方法
- 正常情况下等待一会会退出完成,如退出时间超过10分钟,请与我们客服进行联系。
Pending
没有足够资源创建容器组。
处理方法
- 正常情况下不会存在Pending状态,如您遇到Pending状态超过5分钟,这需要联系他们官网客服了。
以上就是老刘测评总结的优刻得docker容器化产品Cube快速上手使用教程内容了,有关Cube使用准备工作,快速创建Cube实例,Cube创建详情,Cube运营状态及错误排查的具体内容也可访问UCloud官网容器实例Cube页面。