You need to enable JavaScript to run this app.
导航
通过 kubectl 使用容器服务
最近更新时间:2024.11.26 17:25:41首次发布时间:2022.03.04 23:10:38

容器服务通过深度融合新一代云原生技术,提供以容器为核心的高性能 Kubernetes 容器集群管理服务,实现高可用 Kubernetes 集群云端一键构建,容器化应用全生命周期可视化管理,帮助您快速打造一站式纵深容器业务平台。

背景信息

本文以部署 Nginx 应用为例,为您介绍通过 kubectl 使用容器服务的流程。

费用说明

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

步骤一:创建集群

说明

  • 如果您已操作过本快速入门中其他使用容器服务的流程,已有集群,则可重复使用无需再新建。
  • 已有的集群,请确保已开启 API Server 公网访问
  1. 登录 容器服务控制台
  2. 在顶部导航栏,选择靠近您业务的地域。
  3. 在左侧导航栏单击 集群
  4. 集群 页面,单击 创建集群
  5. 创建集群 页面,根据向导配置集群信息。配置完成后,单击页面右下角 下一步:节点配置
    alt
    参数说明示例
    基本配置
    名称设置集群名称。demo-cluster
    Kubernetes 版本选择部署 Kubernetes 集群的版本。保持默认配置
    控制面可用区分布选择集群的 Kubernetes API Server 所在区域(Region)的可用区(AZ)分布。保持默认配置
    描述描述或备注集群信息。保持默认配置(为空)
    标签集群的标签。保持默认配置(为空)
    网络配置
    私有网络选择集群所属的私有网络(VPC)。选择 准备工作 中已完成的私有网络。demo-vpc (192.168.0.0/16)

    容器网络模型

    配置集群的容器网络(CNI)方案。

    • VPC-CNI:基于私有网络的弹性网卡 ENI 实现的 Underlay 容器网络方案。VPC-CNI 网络模型下容器网络支持选择 VPC 子网作为 Pod 子网。
    • Flannel:属于 Underlay 网络方案(Flannel HostGateway),您可以自行定义 Kubernetes 集群的容器网络 Pod CIDR。

    VPC-CNI

    控制面子网选择私有网络下的子网。demo-vpc-subnetA
    容器网络自定义配置容器网络。VPC-CNI 容器网络模型的集群,需要配置 Pod 子网Service CIDR。详细的参数配置方法,请参见 容器网络Pod 子网 选中 demo-vpc-subnetA,其余保持默认配置
    公网访问开启公网访问后,容器服务自动为集群私有网络创建 NAT 网关并配置相关规则,使集群内的节点、应用可以访问公网。开启
    API Server 公网访问开启后,容器服务自动创建多线路类型(BGP)的公网 IP 并关联 CLB,使集群 API Server 可通过公网访问。开启
    运维配置本示例中无需设置,详细参数说明,请参见 创建集群关闭 容器监控,其余参数保持默认配置
    控制面参数配置集群控制面 Kube API Server 组件配置。详细参数说明,请参见 创建集群保持默认配置
    高级配置本示例中无需设置,详细参数说明,请参见 创建集群保持默认配置
  6. 配置节点信息。配置完成后,单击页面右下角 下一步:组件配置
    alt
    参数说明示例
    节点信息
    Worker 节点是否创建 Worker 节点并加入集群。立即创建
    节点来源Worker 节点的获取方式。创建节点
    节点池标签自定义的资源(节点池)标签。保持默认配置(为空)
    节点池配置
    节点池名称设置节点池名称。demo-nodepool
    计费类型节点对应的云服务器资源的收费模式。保持默认配置
    可用区选择新增节点所在的可用区。可用区是同一地域下电力、网络隔离的物理区域,可用区之间内网互通,不同可用区之间物理隔离。保持默认配置
    子网选择新增节点的子网,同一个私有网络下可能存在多个子网。demo-vpc-subnetA

    多子网调度策略

    为节点池中的多个子网设置调度优先级,用于在 Worker 节点扩容时按照子网优先级顺序进行调度:

    • 均衡策略:节点扩容时,新增的节点会分散到多个子网,且保证各个子网中的节点数相对均衡。此策略下,子网的前后顺序不发挥作用。
    • 优先级策略:顺序越靠前的子网优先级越高。节点扩容时,会按子网优先级在高优先级的子网下新增节点。

    保持默认配置

    计算规格

    选择新增节点(云服务器实例)的规格,支持选择多个实例规格。实例规格的详细说明,请参见 实例规格清单

    通用型 ecs.g3i.xlarge
    (4 vCPU | 16 GiB)

    节点数量新增节点的数量。节点个数和云服务器资源费用相关,请按需选择。保持默认配置
    ECS 实例标签容器服务为新增的 ECS 实例绑定火山引擎平台标签,用于搜索、管理 ECS 实例。保持默认配置(为空)
    系统配置
    系统镜像选择节点使用的系统镜像。保持默认配置
    启动时安装批量作业 Agent默认安装 Agent,不支持修改。节点池使用 Agent 进行节点管理,方便该节点池中节点的故障监测和自愈。保持默认配置
    系统云盘提供操作系统运行、日志存储相关工作需要使用的存储空间。保持默认配置
    数据盘提供额外存储空间,可用于日常工作中的数据存储。保持默认配置
    安全配置
    安全组为同一个私有网络内具有相同安全保护需求并相互信任的网卡提供访问策略。创建集群时容器服务会自动创建并绑定默认安全组,您也可以在默认安全组基础上添加自定义安全组。保持默认配置

    登录方式

    节点实例的登录认证方式,支持通过 密码SSH 密钥对 两种方式。

    • 密码:按照页面提示创建并确认登录密码。
    • SSH 密钥对:Linux 实例还支持 SSH 密钥对的登录方式,创建密钥对的详细说明,请参见 创建密钥对

    选择 密码 并设置强密码

    安全加固配置主机安全加固,开启后 HIDS 主机防护免费提供异常登录等风险告警服务,在保证主机系统镜像兼容性的基础上,为节点(云服务器实例)提供实时监控、文件监控、进程监控、系统动态分析等安全加固功能。保持默认配置
    更多配置本示例中无需设置,详细参数说明,请参见 创建集群保持默认配置
    高级配置本示例中无需设置,详细参数说明,请参见 创建集群保持默认配置
  7. 配置组件信息。组件包含了容器集群支持的所有功能性扩展组件及必要的系统组件。配置完成后,单击页面右下角 下一步:配置确认
    本示例保持默认配置即可。
  8. 确认集群配置信息并下拉到底部阅读服务条款后,勾选 我已阅读并同意《容器服务专用服务条款》 ,单击页面右下角 确定,启动集群创建。
    集群创建需要 15~20 分钟,您可以单击 集群列表 进行其他操作或留在集群创建页面,查看创建进度。

步骤二:连接集群

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

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

    注意

    $HOME/.kube/config文件是您在本地环境中正确安装 kubectl 客户端后生成的文件,$HOME表示变量,由您本地环境的操作系统(macOS/Linux/Windows 等)、安装 kubectl 客户端的路径决定。

  7. 在您的 kubectl 客户端执行如下命令,查询集群下的 Node(包括 Virtual Node)状态,验证是否连接成功。
    kubectl get node
    
    返回类似如下信息,表示 kubectl 已连接集群。
    NAME                     STATUS   ROLES    AGE     VERSION
    192.168.0.6              Ready    <none>   4h15m   v1.26.10-vke.11
    vci-node1-cn-beijing-a   Ready    agent    4h15m   v1.26.1
    

步骤三:部署应用

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

  1. 在您的本地环境中,新建nginx.yaml应用文件并复制如下内容到该文件。

    说明

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

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: doc-deployment # 无状态工作负载名称
      namespace: default # 命名空间名称
    spec:
      replicas: 1 # Pod 实例个数
      selector:
        matchLabels:
          app: doc-deployment
      template:
        metadata:
          labels:  # 需要与后续创建的服务(Service )文件中 selector 的参数值保持一致
            app: doc-deployment
        spec:
          containers:
          - name: doc-deployment-container # 容器名称
            image: doc-cn-beijing.cr.volces.com/vke/nginx-demo:v1.0 # 可以替换为您自己的镜像地址,也可以直接使用该示例镜像地址
            ports:
            - containerPort: 80 # 容器开放的端口号
              protocol: TCP
    
  2. 执行如下命令,部署应用。
    kubectl apply -f nginx.yaml
    
    预期返回结果如下所示:
    deployment.apps/doc-deployment created
    
  3. 执行如下命令,查看应用部署状态。
    kubectl get deployment ${your_deployment_name}
    

    说明

    请将${your_deployment_name}替换为您设置的无状态工作负载名称。例如doc-deployment,那么完整的命令为:

    kubectl get deployment doc-deployment
    
    返回类似如下信息,表示应用部署成功。
    NAME             READY   UP-TO-DATE   AVAILABLE   AGE
    doc-deployment   1/1     1            1           85s
    
  4. 在您的本地计算机$home目录下,新建nginx-svc.yaml服务文件,并复制如下内容到该文件。

    说明

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

    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-svc # 服务名称
      namespace: default # 命名空间名称
    spec:
      selector: # 需要与之前创建的应用文件中 selector 的 matchLabels 参数值保持一致
        app: doc-deployment
      ports:
      - protocol: TCP
        name: doc-port # 端口映射的名称
        port: 80
        targetPort: 80
      type: LoadBalancer  
    
  5. 执行如下命令,创建服务。
    kubectl apply -f nginx-svc.yaml
    
    预期返回结果如下所示:
    service/nginx-svc created
    
  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.**.**.**   180.**.**.**   80:31709/TCP   65s
    
  7. 在浏览器中输入上一步获取到的 EXTERNAL-IP 值,访问 Nginx 的欢迎页面。
    alt

步骤四:监控应用

完成应用部署后,可以通过云监控产品了解应用的运行状态,包括 CPU 用量、内存用量等,协助后续的运维工作。容器服务各类监控指标说明参见 云产品监控指标

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

    说明

    查看监控 按钮不可选,则鼠标悬浮到 查看监控 按钮,并根据提示安装集群监控所需的 metrics-collector 组件。

    alt

释放资源

完成快速入门后,如果无需使用集群,请参考 删除集群 中的指引,删除集群及其关联资源;如果需要继续使用集群,请确保您的火山引擎账户余额(含代金券)不低于 100 元人民币,且除去代金券后账户余额不为零。

持续使用容器服务集群会有如下两类费用,详细的计费信息,请参见 产品计费

  • 集群托管费用:由容器服务收费。
  • 云基础资源费用:集群中使用的 NAT 网关、负载均衡(CLB)、公网 IP、云盘等其他火山引擎云产品费用,由其他云产品收费。