You need to enable JavaScript to run this app.
导航

通过 kubectl 使用弹性容器

最近更新时间2023.07.19 14:52:53

首次发布时间2021.11.10 15:12:40

弹性容器实例是火山引擎提供的一种 Serverless 和容器化计算服务,支持秒级启动、高并发创建和沙箱容器安全隔离等能力。弹性容器实例与容器服务无缝集成,共同提供 Kubernetes 编排能力。开通弹性容器实例后,您可以专注于应用构建,无需购买和管理底层云服务器等基础设施,并且仅需为容器实际消耗的资源付费,降低您的人力和资金成本。

背景信息

  • 弹性容器仅支持容器网络模型为 VPC-CNI 的集群。
  • 本文以部署 Nginx 为例,为您介绍通过 kubectl 使用弹性容器流程。

费用说明

创建 VPC-CNI 容器网络模型的集群时,可能会产生负载均衡、NAT 网关、公网 IP、云盘等云基础资源费用。请在创建集群页面下方 配置费用 处,查看实际计费。更多计费说明及云基础资源计费,请参见 产品计费

步骤一:创建 VPC-CNI 容器网络模型的集群

  1. 登录 容器服务控制台
  2. 在顶部导航栏,选择靠近您业务的地域。
  3. 在左侧导航栏单击 集群
  4. 集群 页面,单击 创建集群
  5. 创建集群 页面,根据向导配置集群信息。配置完成后,单击页面右下角 下一步:节点配置
    alt
    参数说明
    基本配置
    名称设置集群名称。示例:vci-cluster。
    Kubernetes 版本选择部署 Kubernetes 集群的版本。

    保持默认选项。

    描述描述或备注集群信息。可以为空。
    标签集群的标签。可以为空。
    网络配置
    私有网络选择集群所属的私有网络(VPC)。选择 VCI 准备工作 中已创建的私有网络。
    容器网络模型配置集群的容器网络(CNI)方案。

    弹性容器业务中,必须选择 VPC-CNI

    子网选择私有网络下的子网。

    容器网络

    自定义配置容器网络,详细的参数配置方法,请参见 容器网络
    本示例设置如下:

    • 网络模式:保持默认值。
    • Pod 子网:选择私有网络下的子网。
    • Service CIDR:保持默认值。

    公网访问开启公网访问后,容器服务自动为集群私有网络创建 NAT 网关并配置相关规则,使集群内的节点、应用可以访问公网。

    本示例 开启 公网访问。

    API Server 公网访问开启后,容器服务自动创建多线路类型(BGP)的公网 IP 并关联 CLB,使集群 API Server 可访问公网。

    本示例 开启 API Server 公网访问,用于获取集群的外网访问 Config,使用 kubectl 连接集群。

    高级配置本示例中无需设置,保持默认值。详细参数说明,请参见 创建集群
  6. 配置节点信息。配置完成后,单击页面右下角 下一步:组件配置
    alt
    参数说明
    节点信息
    Worker 节点是否创建 Worker 节点并加入集群。

    本示例选择 立即创建

    节点来源Worker 节点的获取方式。

    本示例选择 创建节点

    节点池配置
    节点池名称设置节点池名称。示例:vci-demo-nodepool。

    计费类型

    节点对应的云服务器资源的收费模式:

    • 按量计费:一种后付费模式,即先使用再付费。
    • 包年包月:【邀测·申请试用】一种预付费模式,即先付费再使用。
      本示例选择 按量计费

    可用区

    选择新增节点所在的可用区。可用区是同一地域下电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。
    本示例选择 全部可用区

    子网选择新增节点的子网,同一个私有网络下可能存在多个子网,请根据实际业务情况选择。
    计算规格选择新增节点的规格。计算规格的详细说明,请参见 实例规格清单

    VPC-CNI 容器网络模型的集群,系统会自动为您校验 Worker 节点支持的 ENI 数量。请根据界面提示,选择合适的 计算规格

    本示例选择:通用型 ecs.g1ie.xlarge|4VCPU|16GiB|4ENI|30Pod 规格。

    节点数量设置新增节点的数量。增加节点数量后,对应的云服务器资源费用也会增加,费用详情请参见页面下方 配置费用 后的帮助说明。

    本示例保持默认值。

    系统配置
    操作系统选择新增节点的操作系统。

    本示例保持默认值。

    系统云盘提供操作系统运行、日志存储相关工作需要使用的存储空间。

    本示例保持默认值。

    数据云盘提供额外存储空间,可用于日常工作中的数据存储。

    本示例中数据云盘的配置及其挂载目录均保持默认值。

    安全配置
    安全组安全组类似一种虚拟防火墙,通过不同的安全组规则控制节点实例(云服务器)的入流量和出流量。
    登录方式节点实例的登录认证方式,支持通过 密码SSH密钥对 两种方式。
    • 密码:按照页面提示创建并确认登录密码。
    • SSH密钥对:Linux 实例还支持 SSH 密钥对的登录方式,创建密钥对的详细说明,请参见 创建密钥对

    本示例选择 密码 并设置和确认 root 密码。建议您设置强密码。

    安全加固可选,HIDS 主机防护免费提供异常登录等风险告警服务,在保证主机系统镜像兼容性的基础上进行安全加固。开启以后支持在云服务 ECS 查看告警信息,详细说明,请参见 安全加固

    本示例保持默认值。

    更多配置本示例中无需设置,保持默认值。详细参数说明,请参见 创建集群
    高级配置本示例中无需设置,保持默认值。详细参数说明,请参见 创建集群
  7. 配置组件信息。组件包含了容器集群支持的所有功能性扩展组件及必要的系统组件。配置完成后,单击页面右下角 下一步:配置确认
    本示例中需要进行如下配置:
    • 除了默认配置外,需要勾选 metrics-collector 组件,用于监控应用的运行状态,包括 CPU 用量、内存用量等,协助后续的运维工作。
      alt
    • 系统必装的 metrics-server 组件,需要注意 部署形态
      若集群中有可用的 ECS 节点,则可以使用 云服务器部署弹性容器部署,若无 ECS 节点,则必须使用 弹性容器部署 方式部署,否则组件会部署失败。
      本示例选择 弹性容器部署
      alt
  8. 确认集群配置信息并阅读服务条款后,将滚动条拉到底部,勾选 我已阅读并同意《容器服务专用服务条款》 ,单击页面右下角 确定,启动集群的创建。
    集群的创建需要15~20分钟,您可以单击 集群列表 进行其他操作或留在集群创建页面,查看创建进度。

步骤二:连接集群

您可以通过 kubectl 客户端连接到已创建的集群。

  1. 下载安装最新版本的 kubectl 工具到本地。
    请从 Kubernetes 官方页面下载安装最新的 kubectl 客户端工具。具体安装指导,请参见 安装和设置 kubectl
  2. 容器服务控制台集群 页面,找到本文上方 步骤一 中已创建的集群,单击集群名称。
  3. 在集群 基本信息 页面,单击 连接信息 页签。
  4. 选择 外网访问 Config 页签,单击 生成 Kubeconfig,设置 有效期(本示例设置有效期为 365 天),获取集群访问凭证。
    alt
  5. 将获取到的集群访问凭证复制到安装 kubectl 后生成的本地$HOME/.kube/config文件中。

    注意

    若您没有$HOME/.kube/config文件,请自行创建文件,并将访问凭证复制到该文件中。

  6. 在您的 kubectl 客户端执行如下命令,查询集群下的 namespace 状态,验证是否连接成功。
    kubectl get namespace
    返回类似如下信息,表示 kubectl 已连接集群。
    NAME              STATUS   AGE
    default           Active   3h22m
    kube-flannel      Active   3h22m
    kube-node-lease   Active   3h22m
    kube-public       Active   3h22m
    kube-system       Active   3h22m
    

步骤三:部署应用

完成集群和 kubectl 的连接后,您可以通过 kubectl 客户端创建无状态工作负载,部署应用。

  1. 在您的本地计算机$home目录下,新建nginx.yaml应用文件,并复制如下内容到该文件。

    说明

    请根据代码示例中的注释信息,更改参数值。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: doc-deployment-vci # 替换为您的应用名称
      namespace: default # 命名空间名称
    spec:
      replicas: 1 # Pod 实例个数
      selector:
        matchLabels:
          app: doc-deployment-vci # 需要和后续创建的服务中 selector 的 app 参数取值一致
      template:
        metadata:
          annotations:
            vke.volcengine.com/burst-to-vci: enforce # 固定使用该值,表示强制使用 VCI
          labels:
            app: doc-deployment-vci # 替换为您的应用名称
        spec:
          containers:
            - image: cr-cn-beijing.ivolces.com/dontdelete/nginxnew:doc # 替换为您的镜像地址
              name: doc-deployment-vci-container # 替换为您的容器名称
              ports:
              - containerPort: 80
              protocol: TCP
    
  2. 执行如下命令,部署应用。

    kubectl apply -f nginx.yaml
    
  3. 执行如下命令,查看应用部署状态。

    kubectl get deployment ${your_deployment_name}
    

    说明

    请将${your_deployment_name}替换为您设置的工作负载名称,例如doc-deployment-vci,则完整的命令为:

    kubectl get deployment doc-deployment-vci
    

    返回类似如下信息,表示应用部署成功。

    NAME                 READY   UP-TO-DATE   AVAILABLE   AGE
    doc-deployment-vci   1/1     1            1           63s
    
  4. 在您的本地计算机$home目录下,新建ngixn-svc.yaml服务文件,并复制如下内容到该文件。

    说明

    请根据代码示例中的注释信息,更改参数值。

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-svc # 替换为您的服务名称
      namespace: default
    spec:
      ports:
      - name: doc-vci-port # 替换为您的端口映射名称
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: doc-deployment-vci # 需要和之前创建应用中 matchLabels 的 app 参数取值一致
      type: LoadBalancer
    
  5. 执行如下命令,创建服务。

    kubectl apply -f ngixn-svc.yaml
    
  6. 执行如下命令,查看服务状态。

    kubectl get svc ${your_service_name}
    

    说明

    请将${your_service_name}替换为您设置的服务名称,例如nginx-svc,则完整的命令为:

    kubectl get svc nginx-svc
    

    返回类似如下信息,表示应用部署成功。

    NAME              TYPE           CLUSTER-IP     EXTERNAL-IP       PORT(S)        AGE
    nginx-svc        LoadBalancer   172.**.**.**   124.**.**.**   80:31647/TCP      17s
    
  7. 在浏览器中输入上一步获取到的 EXTERNAL-IP 值,访问 Nginx 的欢迎页面。
    alt

步骤四:监控应用

完成应用部署后,可以通过云监控产品了解应用的运行状态,包括 CPU 用量、内存用量等,协助后续的运维工作。

  1. 容器服务控制台 左侧导航栏单击 集群
  2. 找到本文上方 步骤一 中已创建的集群,单击集群名称。
  3. 在集群管理页面左侧导航栏,选择 工作负载 > 无状态负载
  4. 无状态负载 页面,找到已通过 kubectl 创建的工作负载(本示例中名称为 doc-deployment-vci),单击对应 操作 列的...图标,然后单击 查看监控,查看应用的运行状态。
    alt

至此,您已体验完成通过 kubctl 使用弹性容器 VCI 部署应用的过程。