凯发k8国际娱乐官网入口-k8凯发> 云容器引擎 cce> > > > 创建无状态负载(deployment)
更新时间:2024-01-17 gmt 08:00

创建无状态负载(deployment)-凯发k8国际娱乐官网入口

操作场景

在运行中始终不保存任何数据或状态的工作负载称为“无状态负载 deployment”,例如nginx。您可以通过控制台或kubectl命令行创建无状态负载。

前提条件

  • 在创建容器工作负载前,您需要存在一个可用集群。若没有可用集群 ,请参照中内容创建。
  • 若工作负载需要被外网访问,请确保集群中至少有一个节点已绑定弹性ip,或已创建负载均衡实例。

    单个实例(pod)内如果有多个容器,请确保容器使用的端口不冲突 ,否则部署会失败。

通过控制台创建

  1. 登录cce控制台。
  2. 单击集群名称进入集群,在左侧选择“工作负载”,在右上角单击“创建负载”
  3. 配置工作负载的信息。
    基本信息
    • 负载类型:选择无状态工作负载deployment。工作负载类型的介绍请参见。
    • 负载名称:填写工作负载的名称。请输入1到63个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
    • 命名空间:选择工作负载的命名空间,默认为default。您可以单击后面的“创建命名空间”,命名空间的详细介绍请参见。
    • 实例数量:填写实例的数量,即工作负载pod的数量。
    • 容器运行时:cce standard集群默认使用普通运行时,cce turbo集群可以使用普通运行时或安全运行时。具体区别请参见。
    • 时区同步:选择是否开启时区同步。开启后容器与节点使用相同时区(时区同步功能依赖容器中挂载的本地磁盘,请勿修改删除),时区同步详细介绍请参见。
    容器配置
    • 容器信息
      pod中可以配置多个容器,您可以单击右侧“添加容器”为pod配置多个容器。
      • 基本信息:配置容器的基本信息。

        参数

        说明

        容器名称

        为容器命名。

        更新策略

        镜像更新/拉取策略。可以勾选“总是拉取镜像”,表示每次都从镜像仓库拉取镜像;如不勾选则优使用节点已有的镜像,如果没有这个镜像再从镜像仓库拉取。

        镜像名称

        单击后方“选择镜像”,选择容器使用的镜像。

        如果需要使用第三方镜像,请参见。

        镜像版本

        选择需要部署的镜像版本。

        cpu配额

        • 申请:容器需要使用的最小cpu值,默认0.25core。
        • 限制:允许容器使用的cpu最大值。建议设容器配额的最高限额,避免容器资源超额导致系统故障。

        如不填写申请值和限制值,表示不限制配额。申请值和限制值的配置说明及建议请参见。

        内存配额

        • 申请:容器需要使用的内存最小值,默认512mib。
        • 限制:允许容器使用的内存最大值。如果超过,容器会被终止。

        如不填写申请值和限制值,表示不限制配额。申请值和限制值的配置说明及建议请参见。

        gpu配额(可选)

        当集群中包含gpu节点时,才能设置gpu配额,且集群中需安装插件。

        • 不限制:表示不使用gpu。
        • 独享:单个容器独享gpu。
        • 共享:容器需要使用的gpu百分比,例如设置为10%,表示该容器需使用gpu资源的10%。

        关于如何在集群中使用gpu,请参见。

        npu配额(可选)

        使用npu芯片(昇腾系列)的数量,必须为整数,且必须安装插件后才能使用。

        关于如何在集群中使用npu,请参见。

        特权容器(可选)

        特权容器是指容器里面的程序具有一定的特权。

        若选中,容器将获得超级权限,例如可以操作宿主机上面的网络设备、修改内核参数等。

        初始化容器(可选)

        选择容器是否作为初始化(init)容器。初始化(init)容器不支持设置健康检查。

        init容器是一种特殊容器,可以在pod中的其他应用容器启动之前运行。每个pod中可以包含多个容器,同时pod中也可以有一个或多个先于应用容器启动的init容器,当所有的init 容器运行完成时,pod中的应用容器才会启动并运行。详细说明请参见。

      • 生命周期(可选):在容器的生命周期的特定阶段配置需要执行的操作,例如启动命令、启动后处理和停止前处理,详情请参见。
      • 健康检查(可选):根据需求选择是否设置存活探针、就绪探针及启动探针,详情请参见。
      • 环境变量(可选):支持通过键值对的形式为容器运行环境设置变量,可用于把外部信息传递给pod中运行的容器,可以在应用部署后灵活修改,详情请参见。
      • 数据存储(可选):在容器内挂载本地存储或云存储,不同类型的存储使用场景及挂载方式不同,详情请参见。

        负载实例数大于1时,不支持挂载云硬盘类型的存储。

      • 安全设置(可选):对容器权限进行设置,保护系统和其他容器不受其影响。请输入用户id,容器将以当前用户权限运行。
      • 容器日志(可选):容器标准输出日志将默认上报至 aom 服务,无需独立配置。您可以手动配置日志采集路径,详情请参见。

        如需要关闭当前负载的标准输出,您可在标签与注解中添加键为kubernetes.aom.log.stdout,值为[]的注解,即可关闭当前负载下全部容器的标准输出。该注解的使用方法请参见。

    • 镜像访问凭证:用于访问镜像仓库的凭证,默认取值为default-secret,使用default-secret可访问swr镜像仓库的镜像。default-secret详细说明请参见。
    • gpu显卡(可选):默认为不限制。当集群中存在gpu节点时,工作负载实例可以调度到指定gpu显卡类型的节点上。

    服务配置(可选)

    服务(service)可为pod提供外部访问。每个service有一个固定ip地址,service将访问流量转发给pod,而且service可以为这些pod自动实现负载均衡。

    您也可以在创建完工作负载之后再创建service,不同类型的service概念和使用方法请参见。

    高级配置(可选)
    • 升级策略:指定工作负载的升级方式及升级参数,支持滚动升级和替换升级,详情请参见。
    • 调度策略:通过配置亲和与反亲和规则,可实现灵活的工作负载调度,支持负载亲和与节点亲和。
      • 负载亲和:提供常用的负载亲和策略,快速实现负载亲和部署。
        • 优先多可用区部署:通过设置pod间反亲和(podantiaffinity)实现,优先将工作负载的pod调度到不同可用区的节点上,如集群下节点不满足多可用区,pod将调度到不同的节点上满足高可用,如节点数小于实例数,pod无法全部运行。
        • 强制多可用区部署:通过设置pod间反亲和(podantiaffinity)实现,强制将工作负载的pod调度到不同可用区的节点上,如集群下节点支持的可用区数量小于实例数,工作负载的pod无法全部运行。
        • 自定义亲和策略:根据需求自定义设置亲和与反亲和规则,详情请参见。
      • 节点亲和:提供常用的负载亲和策略,快速实现负载亲和部署。
        • 指定节点调度:通过设置节点亲和(nodeaffinity)实现,指定工作负载的pod部署的节点,若不指定,将根据集群默认调度策略随机调度。
        • 指定节点池调度:通过设置节点亲和(nodeaffinity)实现,指定工作负载的pod部署的节点池,若不指定,将根据集群默认调度策略随机调度。
        • 自定义亲和策略:根据需求自定义设置亲和与反亲和规则,详情请参见。
    • 容忍策略:容忍策略与节点的污点能力配合使用,允许(不强制)负载调度到带有与之匹配的污点的节点上,也可用于控制负载所在的节点被标记污点后负载的驱逐策略,详情请参见。
    • 标签与注解:以键值对形式为工作负载pod添加标签或注解,填写完成后需单击“确认添加”。关于标签与注解的作用及配置说明,请参见。
    • dns配置:为工作负载单独配置dns策略,详情请参见。
    • 性能管理配置:使用应用性能管理(apm)服务,为java程序提供更精准的问题分析与定位,详情请参见。
    • 网络配置:
      • pod入/出口带宽限速:支持为pod设置入/出口带宽限速,详情请参见。
      • ipv6共享带宽:仅支持该功能的集群显示该选项,开启后可为pod的ipv6双栈网卡绑定共享带宽,详情请参见。
  4. 单击右下角“创建工作负载”

通过kubectl命令行创建

本节以nginx工作负载为例,说明kubectl命令创建工作负载的方法。

  1. 请参见,使用kubectl连接集群。
  2. 创建一个名为nginx-deployment.yaml的描述文件。其中,nginx-deployment.yaml为自定义名称,您可以随意命名。

    vi nginx-deployment.yaml

    描述文件内容如下。此处仅为示例,deployment的详细说明请参见。

    apiversion: apps/v1
    kind: deployment
    metadata:
      name: nginx
    spec:
      replicas: 1
      selector:
        matchlabels:
          app: nginx
      strategy:
        type: rollingupdate
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - image: nginx    #若使用“开源镜像中心”的镜像,可直接填写镜像名称;若使用“我的镜像”中的镜像,请在swr中获取具体镜像地址。
            imagepullpolicy: always
            name: nginx
          imagepullsecrets:
          - name: default-secret

    以上yaml字段解释如表1

    表1 deployment字段详解

    字段名称

    字段说明

    必选/可选

    apiversion

    表示api的版本号。

    说明:

    请根据集群版本输入:

    • 1.17及以上版本的集群中无状态应用apiversion格式为apps/v1
    • 1.15及以下版本的集群中无状态应用apiversion格式为extensions/v1beta1

    必选

    kind

    创建的对象类别。

    必选

    metadata

    资源对象的元数据定义。

    必选

    name

    deployment的名称。

    必选

    spec

    用户对deployment的详细描述的主体部分都在spec中给出。

    必选

    replicas

    实例数量。

    必选

    selector

    定义deployment可管理的容器实例。

    必选

    strategy

    升级类型。当前支持两种升级方式,默认为滚动升级。

    • rollingupdate:滚动升级。
    • replaceupdate:替换升级。

    可选

    template

    描述创建的容器实例详细信息。

    必选

    metadata

    元数据。

    必选

    labels

    metadata.labels定义容器标签。

    可选

    spec:

    containers

    • image(必选):容器镜像名称。
    • imagepullpolicy(可选):获取镜像的策略,可选值包括always(每次都尝试重新下载镜像)、never(仅使用本地镜像)、ifnotpresent(如果本地有该镜像,则使用本地镜像,本地不存在时下载镜像),默认为always。
    • name(必选):容器名称。

    必选

    imagepullsecrets

    pull镜像时使用的secret名称。若使用私有镜像,该参数为必选。

    • 需要pull swr容器镜像仓库的镜像时,参数值固定为default-secret。
    • 当pull第三方镜像仓库的镜像时,需设置为创建的secret名称。

    可选

  3. 创建deployment。

    kubectl create -f nginx-deployment.yaml

    回显如下表示已开始创建deployment。

    deployment "nginx" created
  4. 查看deployment状态。

    kubectl get deployment

    deployment状态显示为running,表示deployment已创建成功。

    name           ready     up-to-date   available   age 
    nginx          1/1       1            1           4m5s

    参数解析:

    • name:工作负载名称。
    • ready:表示工作负载的可用状态,显示为“可用pod个数/期望pod个数”。
    • up-to-date:指当前已经完成更新的副本数。
    • available:可用的pod个数。
    • age:已经运行的时间。
  5. 若工作负载(即deployment)需要被访问(集群内访问或节点访问),您需要设置访问方式,具体请参见创建对应服务。

相关文档

分享:
网站地图