对于部署在容器服务 Kubernetes 版中的 Java 应用,可以使用 AHAS 应用流控降级可以对其配置流控、降级和系统规则来保证系统稳定性。本文将介绍如何将容器服务 Kubernetes 版中的应用接入 AHAS 应用流控降级。

前提条件

您已在容器服务 Kubernetes 版控制台上创建 Kubernetes 集群,参见快速创建Kubernetes集群

步骤一:安装 AHAS 组件

在市场中安装 AHAS 组件后才能将 Java 应用接入 AHAS 应用流控降级,具体步骤如下:

  1. 登录容器服务 Kubernetes 版控制台
  2. 在控制台左侧导航栏中选择市场 > 应用目录
  3. 应用目录页面单击ack-ahas-sentinel-pilot,然后在ack-ahas-sentinel-pilot页面右侧创建面板中选择集群命名空间,并单击创建

步骤二:为 Java 应用开启 AHAS 应用流控降级

您可以按需为新建的应用或已有的应用开启 AHAS 应用流控降级。

若需在创建新应用的同时开启 AHAS 应用流控降级,具体步骤如下:

  1. 容器服务 Kubernetes 版控制台左侧导航栏中选择应用 > 无状态
  2. 无状态(Deployment)页面右上角单击使用模板创建
  3. 使用模板创建页面上选择集群命名空间示例模板,并在模板(YAML 格式)中将以下 annotations 添加到 spec > template > metadata 层级下:
    annotations:
      # 是否开启 AHAS 插件, on、true 表示开启, off、false 表示关闭。
      ahasPilotAutoEnable: "on"
      # 将 <your-deployment-name> 替换为应用名称
      ahasAppName: "<your-deployment-name>"
      #命名空间默认为 default。
      #ahasNamespace: "default"
      # 将 <your-license> 替换为真实 license,在公网环境中 AHAS 控制台 > 流控降级 >应用流控 > 新应用接入页面获取。
      ahasLicense: "<your-license>"  
    annotations:
      # 是否开启 AHAS 插件, on、true 表示开启, off、false 表示关闭。
      ahasPilotAutoEnable: "on"
      # 将 <your-deployment-name> 替换为应用名称
      ahasAppName: "<your-deployment-name>"
      #命名空间默认为 default。
      #ahasNamespace: "default"
     

    如需修改 Yaml 文件中其它配置项,配置项说明如下:

    表 1. 配置项
    Parameter Description Default
    image.imageTag pilot 镜像 tag。 0.1.1
    image.imagePullPolicy 镜像拉取策略,必须是 Always、IfNotPresent、Never 三者中的一个。 Always
    controller.logLevel pilot 日志级别,1 表示 INFO, 2 表示 DEBBUG。 1
    controller.region_id 目标集群所在的 region,如 cn-hangzhou、cn-beijing, cn-shenzhen,、cn-shanghai 。如果是公网,则为 cn-public。 cn-hangzhou

    完整 YAML 示例模板如下:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: agent-foo
      labels:
        name: agent-foo
    spec:
      replicas: 1
      selector:
        matchLabels:
          name: agent-foo
      template:
        metadata:
          labels:
            name: agent-foo
          annotations:
            ahasPilotAutoEnable: "on"
            ahasAppName: "K8sFooTest"
            ahasNamespace: "default"
        spec:
          containers:
          - name: foo
            image: registry.cn-hangzhou.aliyuncs.com/sentinel-docker-repo/foo:0.1.1
            imagePullPolicy: Always          

如需为现有应用开启 AHAS 应用流控,操作步骤如下:

  1. 容器服务 Kubernetes 版控制台左侧导航栏中选择应用 > 无状态应用 > 有状态
  2. 无状态(Deployment)有状态(StatefulSet)页面上,选择集群命名空间,并在目标应用右侧操作列中选择更多 > 查看 Yaml
  3. 编辑 Yaml 对话框中将以下 annotations 添加到 spec > template > metadata 层级下,并单击更新
    annotations:
      # 是否开启 AHAS 插件, on、true 表示开启, off、false 表示关闭。
      ahasPilotAutoEnable: "on"
      #将 <your-deployment-name> 替换为应用名称
      ahasAppName: "<your-deployment-name>" 
      #命名空间默认为 default。
      #ahasNamespace: "default"
      #将 <your-license> 替换为真实 license,在公网环境中 AHAS 控制台 > 流控降级 >应用流控 > 新应用接入页面获取。
      #ahasLicense: "<your-license>"
    annotations:
      # 是否开启 AHAS 插件, on、true 表示开启, off、false 表示关闭。
      ahasPilotAutoEnable: "on"
      #将 "<your-deployment-name>" 替换为应用名称
      ahasAppName: "<your-deployment-name>"
      #命名空间默认为 default。
      #ahasNamespace: "default"

结果验证

无状态(Deployment)有状态(StatefulSet)页面上,目标应用的操作列将出现 AHAS 控制台按钮。单击 AHAS 控制台 即可跳转至 AHAS 控制台。

result_k8s

后续操作

为应用配置流控降级规则请参见以下文档: