创建无状态工作负载Deployment
您可以通过镜像、编排模板及命令创建一个无状态应用。容器计算服务Kubernetes集群支持通过Web界面使用镜像密钥。本文以Nginx为例,说明如何通过镜像、编排模板及命令来创建无状态应用。
前提条件
已创建ACS Kubernetes集群。具体操作,请参见创建ACS集群。
已通过kubectl连接Kubernetes集群。具体操作,请参见通过kubectl工具连接集群。
使用镜像创建无状态Deployment应用
步骤一:配置应用基本信息
登录容器计算服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在无状态页面,单击使用镜像创建。
在应用基本信息配置向导页面中,设置应用的基本信息。
在配置Deployment负载前,您需在页面上方设置应用所在的命名空间。本例使用默认命名空间default。
配置项
描述
应用名称
应用的名称。
副本数量
即应用包含的Pod数量,默认数量为2。
工作负载
定义资源对象的类型,本例中选择无状态(Deployment)类型。
标签
为该应用添加一个标签,标识该应用。
注解
为该应用添加一个注解(Annotation)。
实例类型
选择实例类型。
容器运行退出后
总是重启
失败后重启
永不重启
单击下一步。
进入容器配置配置向导页面。
步骤二:配置容器
在容器配置配置向导页面中,配置容器的镜像、资源、端口、环境变量、健康检查、生命周期、数据卷和日志。
在容器1页签右侧,单击添加容器为应用的Pod设置多个容器。
在基本配置区域,完成容器的基本配置。
配置项
描述
镜像名称
单击选择镜像,选择所需的镜像并单击确定。本文以官方Nginx镜像为例,可以在搜索页签中,选择Docker镜像,然后在文本框中输入nginx进行搜索。
容器镜像服务:在容器镜像服务页签中,可以选择托管在容器镜像服务ACR中的镜像。需要选择镜像所属地域,以及镜像服务实例。关于ACR的更多信息,请参见什么是容器镜像服务ACR。
说明您可以在容器镜像服务页签,根据名称搜索托管在容器镜像服务ACR中的镜像。
Docker官方镜像:在Docker官方镜像页签中,可以选择Docker官方提供的容器镜像。
用户收藏:在用户收藏页签中,可以选择您收藏的Docker官方镜像。
搜索:在搜索页签中,可以分别在ACR的特定地域和Docker官方镜像中搜索容器镜像。
镜像Tag
单击选择镜像Tag选择镜像的版本。若不指定,默认为最新版。
ACS支持总是拉取镜像(Always),总是拉取镜像(Always)表示每次部署或扩容都会从容器镜像服务重新拉取镜像,而不会从本地拉取镜像。
CPU
可指定该容器预留的CPU资源额度和资源限制,默认资源额度和资源限制相等。如果需要设置不同于资源额度的资源限制,可以通过YAML创建资源方式来创建应用。
内存
可指定该容器预留的Memory资源额度和资源限制,默认资源额度和资源限制相等。如果需要设置不同于资源额度的资源限制,可以使用YAML创建资源的方式来创建应用。
容器启动项
stdin:表示为该容器开启标准输入。
tty:表示为该容器分配一个虚拟终端,以便于向容器发送信号。
通常这两个选项是一起使用的,表示将终端(tty)绑定到容器的标准输入(stdin)上。例如,一个交互式的程序从用户获取标准输入,并显示到终端中。
初始化容器
勾选该项,表示创建一个Init Container。
Init Container提供了一种机制来阻塞或延迟应用容器的启动,Init Container执行成功后,Pod内的应用容器会并行启动,例如检测依赖服务的可用性。Init Container可以包括一些应用镜像中不存在的实用工具和安装脚本,用来初始化应用容器的运行环境,例如设置内核参数、生成配置文件。更多信息,请参见Init Containers。
可选:在端口设置区域,单击新增设置容器的端口。
配置项
描述
名称
设置容器端口名称。
容器端口
设置暴露的容器访问端口或端口名,端口号必须介于1~65535。
协议
支持TCP和UDP。
可选:在环境变量区域,单击新增设置环境变量。
支持通过键值对的形式为Pod配置环境变量。用于给Pod添加环境标志或传递配置等,具体操作,请参见Pod variable。
配置项
描述
类型
设置环境变量的类型。
配置项、保密字典支持全部文件的引用,以保密字典为例。选择保密字典类型,只选择目标保密字典,则默认引用全部文件。
对应的YAML,也引用了整个密钥(Secret)。
变量名称
设置环境变量名称。
变量/变量引用
设置变量引用的值。
可选:在健康检查区域,根据需要开启存活检查、就绪检查及启动探测。
更多信息,请参见配置存活、就绪和启动探测器。
可选:在生命周期区域,设置容器的生命周期。
您可以为容器的生命周期配置启动执行、启动后处理和停止前处理。具体操作,请参见配置生命周期。
参数
描述
启动执行
为容器设置预启动命令和参数。
启动后处理
为容器设置启动后的命令。
停止前处理
为容器设置预结束命令。
可选:在数据卷区域,增加本地存储或云存储声明PVC(Persistent Volume Claim)。
参数
描述
增加本地存储
本地存储:包括配置项、保密字典和临时目录,将对应的挂载源挂载到容器路径中。更多信息,请参见volumes。
增加云存储声明(PersistentVolumeClaim)
支持通过PVC挂载云存储卷。在选择目标挂载源前,您需要创建云存储声明。
本例中配置了一个云存储类型的数据卷声明disk-ssd,将其挂载到容器的/tmp路径下。
单击下一步。
进入高级配置配置向导页面。
步骤三:完成高级配置
在高级配置配置向导页面中设置访问、伸缩、调度和标签注解。
在访问设置区域,设置暴露后端Pod的方式。
您可以设置暴露后端Pod的方式。本例中选择虚拟集群IP和路由(Ingress),构建一个公网可访问的Nginx应用。
配置服务(Service):在服务(Service)右侧,单击创建设置创建服务配置项。
配置路由(Ingress):在路由(Ingress)右侧,单击创建设置后端Pod的路由规则。
可选:在伸缩配置区域,配置是否开启指标伸缩,从而满足应用在不同负载下的需求。
说明若要启用自动伸缩,您必须为容器设置所需资源,否则容器自动伸缩无法生效。
可选:在标签和注释区域,单击添加设置容器组的标签和注释。
单击创建。
步骤四:查看应用
在创建完成配置向导页面中查看应用任务。
在 创建应用任务已提交面板中单击查看应用详情。
单击左侧导航栏的 ,可以看到路由列表下出现一条规则。
在浏览器中访问路由测试域名,您可访问Nginx欢迎页。
通过YAML模板创建资源
在容器服务Kubernetes模板编排中,您需要自己定义一个应用运行所需的资源对象,通过标签选择器等机制,将资源对象组合成一个完整的应用。
本例演示如何通过一个编排模板创建Nginx应用,包含一个Deployment和Service,后端Deployment会创建Pod资源对象,Service会绑定到后端Pod上,形成一个完整的Nginx应用。
登录容器计算服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在无状态(Deployment)页面,单击右上角的使用YAML创建资源。
对模板进行相关配置,完成配置后单击创建。
下面是一个Nginx应用的示例编排,基于容器服务内置的编排模板。通过该编排模板,即可快速创建一个属于Nginx应用的Deployment。
说明容器计算服务支持Kubernetes YAML编排,支持通过
---
符号将资源对象分隔,从而通过一个模板创建多个资源对象。可选:在应用中通过Volume方式挂载存储卷时,默认情况下挂载目录下的文件在挂载后将会被覆盖。若要不影响挂载目录下的其他文件,您可以配置
subPath
参数。
单击创建后。会提示部署状态信息。
通过命令管理应用
您可以通过命令创建应用或者查看应用的容器。
通过命令创建应用
执行以下命令启动容器(本示例中为Nginx Web服务器)。
kubectl run -it nginx --image=registry.aliyuncs.com/spacexnice/netdia:latest
执行以下命令,为该容器创建一个服务入口,指定
--type=LoadBalancer
将会为您创建一个阿里云负载均衡路由到该Nginx容器。kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer
通过命令查看容器
运行kubectl get pods
命令,列出所有default命名空间里正在运行的容器。
NAME READY STATUS RESTARTS AGE
nginx-2721357637-d**** 1/1 Running 1 9h