通过kubectl快速使用ACS

阿里云容器计算服务ACS提供高性能的容器计算服务,让您轻松高效地在云端运行Kubernetes容器化应用。本文将指导您如何通过kubectl在ACS集群中快速部署并公开一个容器化Demo应用,并监控应用的运行情况。

背景信息

  • 本教程中所使用的Demo应用ACK-Cube为一个线上魔方游戏,该游戏将通过容器镜像部署到ACS集群中。完成本教程后,您将得到一个ACS集群和魔方游戏应用。

    image

  • Demo应用的容器镜像基于开源项目构建,镜像地址为registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube

  • kubectl是标准的Kubernetes命令行管理工具,通过kubectl您可以连接和管理ACS集群。关于kubectl命令行的更多信息,请参见kubectl

  • CloudShell是阿里云推出的云命令行工具,您可以在容器计算服务控制台上打开CloudShell,无需任何安装或配置操作,可以直接在CloudShell中通过kubectl管理集群。

操作流程

image

步骤一:开通并授权容器计算服务ACS

首次使用时,您需要开通容器计算服务ACS,并为其授权相应云资源的访问权限。

  1. 登录容器计算服务控制台,单击前往开通

  2. 前往容器计算服务ACS开通页面,按提示完成产品授权开通。

  3. 返回容器计算服务管理控制台并刷新页面,单击前往授权。

  4. 前往容器计算服务授权页面,按提示完成产品授权。

    完成以上授权后,刷新控制台即可使用容器计算服务ACS。

步骤二:创建ACS集群

本步骤介绍如何通过配置主要参数快速创建一个ACS集群。

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,单击页面左上角的创建集群

  3. 创建集群页面,进行如下配置。未说明的配置项使用默认设置即可。

    配置项

    说明

    示例

    集群名称

    填写集群的名称。

    ACS-Demo。

    地域

    选择集群所在的地域。

    华北2(北京)。

    选择专有网络

    设置集群的网络。ACS集群仅支持专有网络。支持自动创建使用已有的VPC。

    • 自动创建:集群会自动新建一个VPC,并在VPC中自动创建NAT网关以及配置SNAT规则。

    • 使用已有:您可以在已有VPC列表中选择所需的VPC和交换机。如需访问公网,例如下载容器镜像,则需要配置NAT网关。建议将容器镜像上传到集群所在区域的阿里云镜像服务,并通过内网VPC地址拉取镜像。

    详细信息,请参见创建和管理专有网络

    选择自动创建

    API Server 访问配置

    设置集群API Server是否可在公网访问,当您需要从公网远程管理集群时,需要配置弹性公网IP(EIP)。

    选中使用 EIP 暴露 API Server

    服务发现

    单击显示高级选项下拉框,设置是否开启集群服务发现能力。当你需要服务发现能力时,需选择开启CoreDNS

    选择CoreDNS。

  4. 单击确认配置,然后选中并阅读服务协议,单击创建集群

    说明

    集群的创建时间一般约为10分钟。创建完成后,在集群页面,可以看到新创建的集群。

步骤三:连接集群

本步骤指导您如何通过kubectl客户端或CloudShell快速连接到ACS集群。更多信息,请参见获取集群KubeConfig并通过kubectl工具连接集群在CloudShell上通过kubectl管理Kubernetes集群

通过kubectl客户端连接集群

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,单击目标集群名称(即ACS-Demo)。

  3. 集群信息页面,单击连接信息页签,复制公网访问页签下的内容(即集群的公网访问凭证)。

  4. 将复制的集群凭证内容粘贴至$HOME/.kube目录下的config文件中,保存并退出。

    说明

    如果$HOME/目录下没有.kube目录和config文件,请自行创建。

  5. 使用kubectl执行以下命令,验证集群的连通性。

    本文以查询命名空间为例。

    kubectl get namespace

    预期输出:

    NAME              STATUS   AGE
    arms-prom         Active   4h39m
    default           Active   4h39m
    kube-node-lease   Active   4h39m
    kube-public       Active   4h39m
    kube-system       Active   4h39m

通过CloudShell连接集群

  1. 登录容器计算服务控制台,在左侧导航栏选择集群

  2. 集群页面,选择目标集群右侧操作列下的更多 > 通过 CloudShell 管理集群

    等待数秒启动成功之后,您就可以在CloudShell界面通过kubectl命令来管理集群和应用。

步骤四:部署并公开应用

本步骤指导您如何通过kubectl在新创建的ACS集群中快速部署一个无状态应用(Deployment),并将其通过LoadBalancer类型服务(Service)公开。关于服务公开的具体操作,请参见通过使用自动创建负载均衡的服务公开应用

  1. 使用以下示例应用的YAML内容,创建名为acs-cube.yaml的文件。

    展开查看acs-cube.yaml

    apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
    kind: Deployment
    metadata:
      name: acs-cube # 应用名称。
      labels:
        app: acs-cube
    spec:
      replicas: 2 # 设置副本数量。
      selector:
        matchLabels:
          app: acs-cube  # 对应服务中Selector的值需要与其一致,才可以通过服务公开此应用。
      template:
        metadata:
          labels:
            app: acs-cube
        spec:
          containers:
          - name: acs-cube
            image: registry.cn-hangzhou.aliyuncs.com/acr-toolkit/ack-cube:1.0 #替换为您实际的镜像地址,格式为:<image_name:tags>。
            ports:
            - containerPort: 80 # 需要在服务中暴露该端口。
            resources:
              limits: # 设置资源限制。
                cpu: '1'
                memory: 1Gi
              requests: # 设置所需资源。
                cpu: 500m
                memory: 512Mi        
  2. 执行以下命令,部署Demo应用acs-cube。

    kubectl apply -f acs-cube.yaml
  3. 执行以下命令,确认示例应用状态正常。

    kubectl get deployment acs-cube

    预期输出:

    NAME       READY   UP-TO-DATE   AVAILABLE   AGE
    acs-cube   2/2     2            2           96s
  4. 使用以下示例服务的YAML内容,创建名为acs-cube-svc.yaml的文件。

    selector修改为acs-cube.yaml示例应用文件中matchLabels的值(本示例为app: acs-cube),从而将该服务关联至后端应用。

    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: acs-cube
      name: acs-cube-svc
      namespace: default
    spec:
      ports:
      - port: 80
        protocol: TCP
        targetPort: 80
      selector:
        app: acs-cube # 需要与Deployment YAML文件中的matchLabels的值一致。
      type: LoadBalancer
  5. 执行以下命令,创建名为acs-cube-svc的服务,并通过其公开应用。

    ACS会自动创建一个公网SLB,并将其绑定至该服务。

    kubectl apply -f acs-cube-svc.yaml
  6. 执行以下命令,确认LoadBalancer类型的服务是否创建成功。

    示例应用将通过EXTERNAL-IP字段的IP地址向公网公开。

    kubectl get svc acs-cube-svc

    预期输出:

    NAME           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
    acs-cube-svc   LoadBalancer   172.16.72.161   47.94.xx.xx     80/TCP         32s

步骤五:测试应用

在浏览器地址栏输入该服务EXTERNAL-IP字段的IP地址,即可开始魔方游戏。

image

相关文档

  • 为了保证应用能够动态调整所需容器资源,您可以配置容器水平伸缩(HPA)和定时容器水平伸缩(CronHPA)。更多信息,请参见弹性伸缩概述

  • 除了通过服务(Service)公开应用,您还可以通过路由(Ingress)实现对应用的七层网络路由控制。具体操作,请参见ALB Ingress快速入门

  • 您可以在Prometheus监控页面查看应用的运行状况,例如CPU使用率、内存利用率、网络I/O压力等指标。具体操作,请参见使用阿里云Prometheus监控ACS集群状态

释放资源

使用ACS集群所产生的费用包括以下两部分:

  • 创建工作负载使用的算力,由容器计算服务ACS收取。

  • 使用的其他阿里云云产品资源费用,按照各云产品规定的计费规则计费,由各云产品收取。

完成快速入门后,请参考以下场景处理集群。

  • 如果无需继续使用集群,请删除集群及关联资源。具体操作,请参见删除集群

  • 如果需要继续使用集群,请为阿里云账号充值,确保账户金额不小于100.00元人民币。在使用ACS集群过程中用到的其他阿里云云产品资源的相关计费说明,请参见云产品资源计费