这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

文档

云原生集群优化平台(Cluster Optimizer)提供了云原生集群优化能力。

Cluster Optimizer能够帮助用户对云原生集群进行优化,主要功能包括:

  • 提供多种优化策略,包括节点组、节点、磁盘、Persistent和应用等多个维度的优化建议。
  • 云账户(访问凭据)管理和集群管理。
  • 用户管理。

1 - 安装

描述安装云原生集群优化平台(Cluster Optimizer)的详细步骤.

1.1 - 通过kubectl安装

描述通过kubectl安装云原生集群优化平台(Cluster Optimizer)的详细步骤.

本页面描述了安装一站式云原生集群优化平台(Cluster Optimizer)的详细步骤.

前置条件

  • Mysql数据库,版本5.7及以上
  • Kubernetes集群,版本1.22及以上
  • Kubernetes集群的证书,能够创建wiseinf-system名称空间以及在此名称空间下创建Deployment、ConfigMap、Service等资源

克隆安装脚本

  1. 打开命令行控制台,通过下述命令将安装脚本克隆到本地。

        git clone https://github.com/wiseinf/setup.git
    

    1,若使用Gitee仓库地址,则需将上述命令中的https://github.com/wiseinf/setup.git替换为https://gitee.com/wiseinf/setup.git

    2,后续步骤假设已将setup库克隆到用户主目录,若未克隆到用户主目录,则需要根据实际情况调整命令中的文件路径。

部署应用

  1. 通过如下命令创建名称空间wiseinf-system

        kubectl apply -f ~/setup/cluster-optimizer/yaml/namespace.yaml
    
  2. 通过如下命令创建数据库optimizer-mysql,其服务名为optimizer-mysql, 并可通过用户root,密码Optimizer~来访问:

        kubectl apply -f ~/setup/cluster-optimizer/yaml/mysql.yaml
    

    若需将数据库绑定到指定的节点上,请编辑~/setup/cluster-optimizer/yaml/mysql.yaml文件,将affinity字段中的注释去掉,并修改value字段的值为指定节点名称,如下所示。

      ...
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/hostname
                operator: In
                values:
                - ip-10-16-121-100.us-west-1.compute.internal
      ...
    
  3. 通过如下命令创建Deployment optimizer

        kubectl apply -f ~/setup/cluster-optimizer/yaml/optimizer.yaml
    

    注意:若期望采用已部署的数据库,请参见使用已部署数据库

  4. 通过如下命令检查optimizer是否正常运行:

        kubectl get pods -n wiseinf-system
    

    若正常运行,则可以获取到类似如下输出,其中当前运行的Pod Name是optimizer-5b956655df-gspq6

        NAME                         READY   STATUS    RESTARTS   AGE
        optimizer-5b956655df-gspq6   2/2     Running   0          1m
    
  5. 通过如下命令创建 port-forward 来访问 optimizer 服务:

        kubectl port-forward svc/optimizer 8000:80  -n wiseinf-system
    
  6. 打开浏览器,访问地址http://localhost:8000/.

  7. 若能够看到 Cluster Optimizer首页,则应用Cluster Optimizer成功部署.

使用已部署数据库

若您希望使用已部署数据库,使用新的用户名和密码来访问Cluster Optimizer,请参考如下步骤:

  1. 在命令行控制台执行mysql命令登录到Mysql数据库,其中127.0.0.1为Mysql数据库主机地址,您需要替换成您使用的实际地址。

        mysql -h127.0.0.1 -uroot
    

    注意: 如果您使用远程数据库,请确保可以从 Kubernetes 集群访问该数据库。

  2. 创建数据库schema optconf(优化配置库) 和 optdata(优化数据库)。

        mysql> source ~/setup/cluster-optimizer/sql/create_database.sql
    

    注意:请关注数据丢失风险。若mysql数据库中已经存在optconf库和optdata库,则上述脚本会先删除库,然后创建新库。

  3. 创建新的用户名和密码,并为其设置相应权限。脚本中用户名是optimizer,密码是Optimizer~,您可以按照您的需求调整。

        mysql> source ~/setup/cluster-optimizer/sql/create_user.sql
    
  4. 调整Cluster Optimizer配置文件中的数据库信息。编辑文件~/setup/cluster-optimizer/yaml/optimizer.yaml中的ConfigMapoptimizer-conf,将配置项optdataoptconf下的dataSource.name值中的用户名、用户密码、数据库地址和端口调整为Mysql数据库的相应信息。

  5. 重启应用,检查Cluster Optimizer的日志输出(如下所示),查看数据库配置信息是否与您的预期一致。

    {
        ...
        "optconf": {
            "dataSource": {
                "name": "optimizer:Optimizer~@tcp(127.0.0.1:3306)/optconf?createDatabaseIfNotExist=true\u0026charset=utf8mb4\u0026parseTime=true\u0026loc=Local",
                "maxOpenConns": 10
            }
        },
        "optdata": {
            "dataSource": {
                "name": "optimizer:Optimizer~@tcp(127.0.0.1:3306)/optdata?createDatabaseIfNotExist=true\u0026charset=utf8mb4\u0026parseTime=true\u0026loc=Local",
                "maxOpenConns": 10
            }
        },
        ...
    }
    

    同时,也检查是否有数据库相关报错。若没有相关报错,则证明已使用新的数据库。

下一步:导入集群

下一步,您可以添加一个集群,查看其相关优化建议。详见:

1.2 - 通过Helm安装

描述通过Helm安装云原生集群优化平台(Cluster Optimizer)的详细步骤.

本页描述了通过Helm安装Cluster Optimizer的详细步骤.

前置条件

  • Mysql数据库,版本5.7及以上
  • Kubernetes集群,版本1.22及以上
  • Kubernetes集群的证书,能够创建wiseinf-system名称空间以及在此名称空间下创建Deployment、ConfigMap、Service等资源
  • Helm,建议3.0.0及以上

部署应用

  1. 通过如下命令添加Helm仓库cluster-optimizer

        helm repo add cluster-optimizer https://wiseinf.github.io/cluster-optimizer/
    
  2. 通过如下命令更新仓库:

        helm repo update
    
  3. 通过如下命令查看仓库cluster-optimizer包含的Charts:

        helm search repo cluster-optimizer
    

    输出如下:

    NAME                                    CHART VERSION   APP VERSION     DESCRIPTION                       
    cluster-optimizer/cluster-optimizer     0.1.0           1.1.0           A Helm chart for cluster optimizer
    

    可知,仓库中包括一个名为cluster-optimizer/cluster-optimizer的Chart。

  4. 通过如下命令安装demo Chart:

        helm install demo cluster-optimizer/cluster-optimizer -n wiseinf-system --create-namespace
    

    其中,-n wiseinf-system表示在名称空间wiseinf-system下安装demo, 参数--create-namespace表示创建此名称空间,输出如下:

    NAME: demo
    LAST DEPLOYED: Thu Mar 28 15:54:42 2024
    NAMESPACE: default
    STATUS: deployed
    REVISION: 1
    ...
    

    说明Helm已经成功部署demo Chart。

  5. 通过如下命令检查optimizer是否正常运行:

        kubectl get pods -n wiseinf-system
    

    输出如下:

    NAME                                                  READY   STATUS    RESTARTS   AGE
    cluster-optimizer-demo-7bfdfdf954-2cgqb               2/2     Running   0          108s
    cluster-optimizer-demo-optimizerdb-5d6cdb6b9f-94lc7   1/1     Running   0          108s
    

    从输出可以看到,Helm部署了两个Pod,其中cluster-optimizer-demo-7bfdfdf954-2cgqb是 Cluster Optimizer的Pod, cluster-optimizer-demo-optimizerdb-5d6cdb6b9f-94lc7是其依赖的Mysql数据库。

    注意:若期望采用已部署的数据库,请参见使用已部署数据库

  6. 通过如下命令创建 port-forward 来访问 optimizer 服务:

        kubectl port-forward svc/optimizer 8000:80  -n wiseinf-system
    
  7. 打开浏览器,访问地址http://localhost:8000/.

  8. 若能够看到 Cluster Optimizer首页,则应用Cluster Optimizer成功部署.

  9. 通过命令可以删除demo Chart:

    helm uninstall demo
    

使用已部署数据库

若您希望使用已部署数据库,使用新的用户名和密码来访问Cluster Optimizer,请参考如下步骤:

  1. 打开命令行控制台,通过下述命令将安装脚本克隆到本地。

        git clone https://github.com/wiseinf/setup.git
    

    1,若使用Gitee仓库地址,则需将上述命令中的https://github.com/wiseinf/setup.git替换为https://gitee.com/wiseinf/setup.git

    2,后续步骤假设已将setup库克隆到用户主目录,若未克隆到用户主目录,则需要根据实际情况调整命令中的文件路径。

  2. 在命令行控制台执行mysql命令登录到Mysql数据库,其中127.0.0.1为Mysql数据库主机地址,您需要替换成您使用的实际地址。

        mysql -h127.0.0.1 -uroot
    

    注意: 如果您使用远程数据库,请确保可以从 Kubernetes 集群访问该数据库。

  3. 创建数据库schema optconf(优化配置库) 和 optdata(优化数据库)。

        mysql> source ~/setup/cluster-optimizer/sql/create_database.sql
    

    注意:请关注数据丢失风险。若mysql数据库中已经存在optconf库和optdata库,则上述脚本会先删除库,然后创建新库。

  4. 创建新的用户名和密码,并为其设置相应权限。脚本中用户名是optimizer,密码是Optimizer~,您可以按照您的需求调整。

        mysql> source ~/setup/cluster-optimizer/sql/create_user.sql
    
  5. 创建文件values.yaml,编辑其内容,如下:

    optimizedb:
      conf: 
        dbHost: 127.0.0.1
        schema: optconf
        port: "3306"
        user: optimizer
        password: Optimizer~
      data:
        dbHost: 127.0.0.1
        schema: optdata
        port: "3306"
        user: optimizer
        password: Optimizer~
    

    其中,dbHost是数据库地址,schema是数据库Schema,port是端口,userpassword分别是用户名和密码。

  6. 通过如下命令安装demo Chart:

        helm install demo cluster-optimizer/cluster-optimizer -f values.yaml --namespace wiseinf-system
    

    也可以通过升级原部署的方式来调整数据库的设置:

        helm upgrade demo cluster-optimizer/cluster-optimizer -f values.yaml --namespace wiseinf-system
    
  7. 重启应用,检查Cluster Optimizer Pod的日志输出(如下所示),查看数据库配置信息是否与您的预期一致。

    {
        ...
        "optconf": {
            "dataSource": {
                "name": "optimizer:Optimizer~@tcp(127.0.0.1:3306)/optconf?createDatabaseIfNotExist=true\u0026charset=utf8mb4\u0026parseTime=true\u0026loc=Local",
                "maxOpenConns": 10
            }
        },
        "optdata": {
            "dataSource": {
                "name": "optimizer:Optimizer~@tcp(127.0.0.1:3306)/optdata?createDatabaseIfNotExist=true\u0026charset=utf8mb4\u0026parseTime=true\u0026loc=Local",
                "maxOpenConns": 10
            }
        },
        ...
    }
    

    同时,也检查是否有数据库相关报错。若没有相关报错,则证明已使用新的数据库。

下一步:导入集群

下一步,您可以添加一个集群,查看其相关优化建议。详见:

1.3 - 安装商业版本

描述安装商业版本的详细步骤.

本页面描述了安装商业版本的详细步骤.

前置条件

配置用户数据库

  1. 打开命令行控制台,通过下述命令将安装脚本克隆到本地。

        git clone https://github.com/wiseinf/setup.git
    

    1,若使用Gitee仓库地址,则需将上述命令中的https://github.com/wiseinf/setup.git替换为https://gitee.com/wiseinf/setup.git

    2,后续步骤假设已将setup库克隆到用户主目录,若未克隆到用户主目录,则需要根据实际情况调整命令中的文件路径。

  2. 调整Cluster Optimizer配置文件中的数据库信息。编辑文件~/setup/cluster-optimizer/yaml/optimizer.yaml中的ConfigMapoptimizer-conf,添加下述配置项。

    user:
      dataSource:
        name: "root:optimizer@tcp(optimizer-mysql:3306)/user?createDatabaseIfNotExist=true&charset=utf8mb4&parseTime=true&loc=Local"
        maxOpenConns: 10
    

配置商业版本授权

  1. 调整Cluster Optimizer配置文件中的数据库信息。编辑文件~/setup/cluster-optimizer/yaml/optimizer.yaml中的ConfigMapoptimizer-conf,添加下述配置项。

    license:
      certificate: {获取的授权证书}
      signature: {获取的授权签名}
    
  2. 通过如下命令部署Deployment optimizer

        kubectl apply -f ~/setup/cluster-optimizer/yaml/optimizer.yaml
    

    注意: 1、若Deployment optimizer的Pod没有重启,请通过kubectl delete pod -l app=optimizer -n wiseinf-system删除Deployment optimizer的Pod,然后重新创建。` 2、若期望采用已部署的数据库,请参见使用已部署数据库

  3. 检查日志输出,确认Deployment optimizer的Pod状态为Running

系统初始化

  1. 打开浏览器,访问地址http://localhost:8000/init,可以访问商业版本的初始化页面。在页面中输入用户名称、密码、邮箱、手机号等信息,并点击确定按钮,即可完成系统初始化工作。

  2. 访问地址http://localhost:8000/user/login,输入用户名和密码,即可登录系统。

  3. 至此,您已经将系统升级为商业版本。

使用已部署数据库

若您希望使用已部署用户数据库,使用新的用户名和密码来访问Cluster Optimizer,请参考如下步骤:

  1. 在命令行控制台执行mysql命令登录到Mysql数据库,其中127.0.0.1为Mysql数据库主机地址,您需要替换成您使用的实际地址。

        mysql -h127.0.0.1 -uroot
    

    注意: 如果您使用远程数据库,请确保可以从 Kubernetes 集群访问该数据库。

  2. 创建数据库schema user(用户库)。

        mysql> source ~/setup/cluster-optimizer/sql/create_user_database.sql
    

    注意:请关注数据丢失风险。若mysql数据库中已经存在user库,则上述脚本会先删除库,然后创建新库。

  3. 创建新的用户名和密码,并为其设置相应权限。脚本中用户名是optimizer,密码是Optimizer~,您可以按照您的需求调整。

        mysql> source ~/setup/cluster-optimizer/sql/create_user_user.sql
    
  4. 调整Cluster Optimizer配置文件中的数据库信息。编辑文件~/setup/cluster-optimizer/yaml/optimizer.yaml中的ConfigMapoptimizer-conf,将配置项user下的dataSource.name值中的用户名、用户密码、数据库地址和端口调整为Mysql数据库的相应信息。

  5. 重启应用,检查Cluster Optimizer的日志输出(如下所示),查看数据库配置信息是否与您的预期一致。

    {
        ...
        "user": {
            "dataSource": {
                "name": "optimizer:Optimizer~@tcp(127.0.0.1:3306)/optconf?createDatabaseIfNotExist=true\u0026charset=utf8mb4\u0026parseTime=true\u0026loc=Local",
                "maxOpenConns": 10
            }
        },
        ...
    }
    

    同时,也检查是否有数据库相关报错。若没有相关报错,则证明已使用新的数据库。

下一步:导入集群

下一步,您可以添加一个集群,查看其相关优化建议。详见:

2 - 用户手册

描述集群优化平台的用户相关手册.

2.1 - 导入集群

描述导入集群的详细步骤,您可以导入多个云服务商的集群。

2.1.1 - 导入阿里云集群

描述导入阿里云集群的详细步骤.

本节描述导入阿里云集群的详细步骤。

前置条件

  1. 获取阿里云Access Key和Access Key Secret,具备如下权限。具体申请过程请参考创建Access Key

    服务 权限 说明
    云服务器(ECS) ecs:DescribeDisks
    ecs:DescribeInstances
    ecs:DescribeRegions
    需此权限获取磁盘、实例和地域信息
    容器服务Kubernetes版(CS) cs:DescribeClusterNodePools
    cs:DescribeClusterNodePoolDetail
    cs:DescribeClusters
    cs:DescribeClusterUserKubeconfig
    cs:DescribeClusterNodes
    需此权限获取集群、节点池、节点、Kubeconfig等信息

    其权限策略文件描述如下,您可以直接在阿里云控制台中导入该策略,具体请参考通过脚本编辑模式创建自定义权限策略

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "ecs:DescribeDisks",
            "ecs:DescribeInstances"
            "ecs:DescribeRegions"
          ],
          "Resource": [
            "*"
          ],
          "Condition": {}
        },
        {
          "Effect": "Allow",
          "Action": [
            "cs:DescribeClusterNodePools",
            "cs:DescribeClusterNodePoolDetail",
            "cs:DescribeClusters",
            "cs:DescribeClusterUserKubeconfig",
            "cs:DescribeClusterNodes"
          ],
          "Resource": [
            "*"
          ],
          "Condition": {}
        }
      ]
    }
    
  2. 阿里云Kubernetes集群Kubeconfig。集群版本1.22及以上,建议使用ACK集群。具体请参见容器服务Kubernetes版

  3. Kubeconfig需具备如下权限。

    资源 权限 说明
    Node List
    Get
    Watch
    获取节点信息
    Pod List
    Get
    Watch
    获取Pod信息
    Namespace List
    Get
    Watch
    获取Namespace信息
    Service List
    Get
    Watch
    获取Service信息
    Persistent Volume
    Persistent Volume Claim
    List
    Get
    Watch
    获取Persistent Volume、Persistent Volume Claim信息
    Deployment
    StatefulSet
    DaemonSet

    ReplicaSet
    ReplicationControllers
    List
    Get
    Watch
    获取Deployment、StatefulSet、DaemonSet、ReplicaSet、ReplicationContoller信息
    Job
    CronJob
    List
    Get
    Watch
    获取Job和CronJob信息

    权限文件如下:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: optimizer
    rules:
      - apiGroups:
          - ""
        resources:
          - nodes
          - pods
          - pods/status
          - persistentvolumes
          - persistentvolumeclaims
          - services
          - namespaces
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "apps/v1"
        resources:
          - deployments
          - replicasets
          - replicationcontollers
          - statefulsets
          - daemonsets
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "batch/v1"
        resources:
          - jobs
          - cronjobs
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "storage/v1"
        resources:
          - storageclasses
        verbs:
          - get
          - list
          - watch
    
  4. Prometheus监控或者Thanos监控。该监控用于给集群中的节点、容器等提供监控数据。

导入步骤

添加阿里云账号

  1. 选择设置菜单,选择云账户标签页即可进入云账户管理页面。默认情况下,该页面将分页展示平台管理的所有云账户,包括名称以及相应的云服务商,同时也提供了操作栏,方便用户进行相应的操作,如下图所示。

    云账户管理主页面
    Wiseinf Inc.

  2. 在云账户管理页面,点击新增按钮,即可添加云账户,其界面如下所示。在此界面中,用户依次输入云账户名称、选择相应的云服务商、输入Access Key和Access Key Secret,点击确定按钮,即可完成云账户添加。添加完参数后,用户也可以点击测试连通性按钮,测试该云账户是否正确。平台目前支持阿里云,可从云服务商下拉框处进行选择。Access Key和Access Key Secret为访问该云服务的账号信息,请从相应的云服务商处获取。

    添加云账户界面
    Wiseinf Inc.

添加阿里云集群

  1. 选择设置菜单,选择集群标签进入集群管理页面。默认情况下,该页面将分页展示平台管理的所有集群,包括名称、集群ID集群地域、Access Token名称,对应的云服务商以及Prometheus地址,同时也提供了操作栏,方便用户进行相应的操作,如下图所示。

    集群管理主页面
    Wiseinf Inc.

  2. 点击导入集群按钮即弹出导入对话框,可在此导入集群。导入集群分为5个步骤,目前仅支持阿里云集群。

    1. 设置阿里云访问凭据
    2. 连接Kubernetes集群
    3. 连接Prometheus
    4. 查看配置
    5. 完成
  3. 设置阿里云访问凭据界面如下图所示。在阿里云访问凭据界面,通过使用已有凭据来设置阿里云访问凭据,此处选择添加阿里云账号中添加的阿里云账号,如下图所示。

    导入集群界面-设置阿里云访问凭据
    Wiseinf Inc.

  4. 设置完阿里云访问凭据后,点击下一步按钮,即可进入连接Kubernetes集群页面,如下图所示。平台支持连接2种类型的Kubernetes集群,包括托管集群和自建集群。连接托管集群页面如下图所示。此处我们选择托管集群,平台通过云账户自动获取用户集群,用户通过集群下拉框来选择相应的集群、输入描述字段、选择是否使用API Server私网地址、选择是否自动刷新KubeConfig以及KubeConfig生命周期,最后输入节点组标签即可。

    连接Kubernetes集群页面
    Wiseinf Inc.

  5. 连接Prometheus页面如下图所示。用户在此页面输入信息后,点击下一步按钮进入查看配置页面。输入信息明细如下表所示。

    连接Prometheus页面
    Wiseinf Inc.

    连接Prometheus参数说明如表所示:

    参数 描述
    是否Thanos 若后端集群为Thanos,则应勾选此项。
    Prometheus地址 Prometheus地址,必须可访问。
    限制访问速率 若需要现在平台对Prometheus的访问速率,则应勾选此项。
    最大并发数 平台访问Prometheus的最大并发数。
    集群标签 集群标签用于从Prometheus或者Thanos中筛选该集群的监控指标
    集群标签值 集群标签值用于从Prometheus或者Thanos中筛选该集群的监控指标
  6. 查看配置页面如下图所示,该页面显示了阿里云访问凭据、连接Kubernetes集群和连接Prometheus集群的详细参数,方便用户确认。当用户完成确认后,点击导入按钮,即可进入完成页面。

    查看配置页面
    Wiseinf Inc.

  7. 完成页面如图下图所示,页面将显示提交情况。点击完成,即完成集群导入。

    完成页面
    Wiseinf Inc.

下一步操作

导入集群完成后,等待一段时间(等待优化策略完成调度和执行),即可查看该集群多个维度的优化建议,包括:

2.1.2 - 导入AWS EKS集群

描述导入AWS EKS集群的详细步骤.

本节描述导入AWS EKS集群的详细步骤。

前置条件

  1. 需要提供一个Access Key & Secret,其权限策略如下:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Optimizer",
          "Effect": "Allow",
          "Action": [
            "ec2:DescribeInstances",
            "ec2:DescribeLaunchTemplates",
            "ec2:DescribeRegions",
            "ec2:DescribeVolumes",
            "ec2:DescribeLaunchTemplateVersions",
            "eks:DescribeNodegroup",
            "eks:ListNodegroups",
            "eks:DescribeCluster",
            "eks:ListClusters"
            "autoscaling:DescribeAutoScalingInstances",
            "autoscaling:DescribeAutoScalingGroups",
          ],
          "Resource": "*"
        }
      ]
    }
    
  2. 一个Kubernetes集群,版本1.22及以上,推荐使用EKS集群.

  3. 需要提供一个Kubeconfig,用于访问集群相关信息。其权限要求如下(若仅为开发测试集群,无敏感信息,为简单起见,也可以授予集群的全部只读权限):

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: optimizer
    rules:
      - apiGroups:
          - ""
        resources:
          - nodes
          - pods
          - pods/status
          - persistentvolumes
          - persistentvolumeclaims
          - services
          - namespaces
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "apps/v1"
        resources:
          - deployments
          - replicasets
          - replicationcontollers
          - statefulsets
          - daemonsets
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "batch/v1"
        resources:
          - jobs
          - cronjobs
        verbs:
          - get
          - list
          - watch
      - apiGroups:
          - "storage/v1"
        resources:
          - storageclasses
        verbs:
          - get
          - list
          - watch
    
  4. 集群所对应的Prometheus/Thanos地址。

  5. 应用需要能够访问EKS集群和Prometheus/Thanos。

导入 Kuberentes 集群

添加云账号

  1. 设置 --> 云账号进入云账号管理页面,如下图。

    云账户管理
    Wiseinf Inc.

  2. 单击新增按钮添加云帐户。 可以输入名称,选择Amazon AWS作为云提供商,然后输入Access KeyAccess Key Secret,最后单击确认

    添加云账号
    Wiseinf Inc.

    输入Access KeyAccess Key Secret后,您还可以通过单击底部测试连通性按钮来测试访问凭据是否能够正常连接到云提供商。

导入集群

  1. 设置 --> 集群进入集群管理页面,如下图。

    集群管理
    Wiseinf Inc.

  2. 单击导入集群按钮,然后单击AWS云提供商徽标以开始从AWS导入集群。 它包含五个步骤:

    1. 连接AWS
    2. 连接kubernetes
    3. 连接Metrics Server
    4. 查看配置
    5. 完成
  3. 连接AWS步骤中,选择使用已有凭据,选择添加云帐户部分中创建的云帐户,如下图。

    导入集群:连接到 AWS
    Wiseinf Inc.

    然后单击下一步按钮转到连接kubernetes步骤。

  4. 连接kubernetes步骤中,选择Managed cluster,如下图。

    导入集群:连接kubernetes集群
    Wiseinf Inc.

    先选择地域,然后选择集群,然后输入以下配置项:

    配置项 描述
    描述 集群描述
    使用私有API Server私有地址 是否使用私有API Server地址。
    Kubeconfig 连接到集群的Kubeconfig。
    自动刷新Kubeconfig 是否自动刷新kubeconfig。
    节点组标签 用于标识节点所属的节点组。 对于EKS,默认值为eks.amazonaws.com/nodegroup

    注意:鉴于平台不使用AWS客户端来获取用户身份验证信息,如果您的 Kubeconfig配置项中获取用户身份信息依赖于aws get token命令,则必须启用 自动刷新 Kubeconfig。这确保了平台动态获取用户身份验证详细信息。

    然后单击下一步按钮转到连接Metrics服务步骤。

  5. 连接Metrics服务步骤中,输入以下配置项,如下所示。

    配置项 描述
    是否Thanos 若Metrics Server是 Thanos,则应选中此项。
    Metrics服务地址 Metrics服务器地址,目前支持Prometheus和Thanos。
    限制访问速率 是否取用到Metrics服务地址的访问速率限制。
    最大并发数 指定访问Metrics服务地址的最大并发数。
    集群标签 用作标签名称,用于从Metrics服务过滤集群的指标。
    集群标签值 用作标签值,用于从Metrics服务过滤集群的指标。

    导入集群:连接Metrics服务
    Wiseinf Inc.

    然后单击下一步按钮转到查看配置步骤。

  6. 查看配置步骤中,显示连接AWS、连接Kubernetes、连接Metrics服务的配置。您可以检查配置是否符合预期。

    导入集群:查看配置
    Wiseinf Inc.

    确认这些配置后,您可以单击导入按钮转到完成步骤。

  7. 完成步骤中,会显示提交状态,如下图。 当提交状态显示集群已导入时,您可以点击完成按钮。

    导入集群:完成
    Wiseinf Inc.

下一步

导入集群后,您可以查看集群多个方面的优化建议,包括:

2.2 - 集群概览

查看平台中连接的集群。

查看平台中连接的集群。

查看集群

点击平台左侧菜单栏的集群,显示集群概览页,如下图所示。

集群概览页
Wiseinf Inc.

主展示区将展示平台管理的集群列表。包括集群(集群名称和集群ID)、集群地域、Access Token名称、云服务商、Prometheus地址、健康状态等信息。

在商业版本中,额外提供了集群状态和操作栏,如下图所示:

集群概览页:商业版
Wiseinf Inc.

集群状态用户展示集群相应状态,便于用户了解集群状态。主要包括:

  1. 运行中:集群正常运行。
  2. 休眠中:集群正在转入休眠状态。
  3. 休眠:集群已休眠。休眠状态中,集群已释放了相应的节点资源,此时集群使用受限。
  4. 唤醒中:集群正在转入运行中状态。

集群操作栏用户对集群进行操作,包括:

  • 设置集群休眠
  • 立即休眠
  • 立即唤醒
  • 日志

设置集群休眠

集群休眠通过合理的管理集群中的节点,来降低集群的资源占用,节约成本,假设集群在周一至周五晚上9点开始休眠,周一至周五早上8点开始唤醒(也就是结束休眠),则机器成本节约可高达54.8%。设置集群休眠可以设置集群的休眠时间唤醒时间。在休眠时间,将集群中的负载的状态进行存储,同时逐步释放集群中的节点资源。在唤醒时间,系统逐步恢复集群中的节点资源,同时恢复负载的原有状态。集群休眠特别适用于开发、测试等线下环境。

点击操作栏中的设置集群休眠,弹出对话框如下所示:

设置集群休眠
Wiseinf Inc.

是否启用休眠选项中选择启用,然后设置具体的休眠时间唤醒时间,点击确定按钮即可。默认休眠时间是周一至周五晚上9点,默认唤醒时间是周一至周五早上8点。

若想取消集群休眠,在是否启用休眠选项中选择不启用,点击确定按钮即可。

集群休眠时将使用用户提供的集群访问账号来操作集群。您需要设置集群访问账号,具体请参见设置集群访问账号

注意:休眠时间唤醒时间间隔必须大于2小时。

立即休眠

鼠标移至...,点击立即休眠按钮,即可立即将集群休眠。

立即唤醒

鼠标移至...,点击立即唤醒按钮,即可立即将集群唤醒。

日志

鼠标移至...,点击日志按钮,即可查看集群休眠或唤醒相关日志。

2.3 - 节点组优化

描述节点组相关信息及优化建议。

描述了一站式云原生集群优化平台(Cluster Optimizer)提供的节点组优化操作。

查看节点池

点击平台左侧菜单栏的节点组菜单,则显示节点组页,如下图所示。节点组页分为3个区:

  1. 集群选择区:选择相应的集群。
  2. 查询区:可根据所有者相关信息、节点组名称和节点组ID等过滤列表项。
  3. 列表区:展示节点组的信息、其当前设置和优化设置。

节点组页
Wiseinf Inc.

用户选择具体的集群后,列表区显示分为5栏:

  1. 节点组栏:展示节点组名称和节点组ID。
  2. 所有者栏:展示节点所有者的部门、组及具体的人员。
  3. 当前设置栏:展示节点组当前的实例类型、是否自动扩缩容、最小节点数和最大节点数。
  4. 优化设置栏:展示平台智能推荐的节点组实例类型、推荐是否启动扩缩容、推荐的最小节点数和最大节点数。
  5. 操作栏:展示对节点组相应的操作。,

节点组页-选择完集群
Wiseinf Inc.

调整节点组

点击上图中的调整链接,可打开调整节点组对话框,如下图所示。

调整节点组对话框
Wiseinf Inc.

注意:当前仅展示调整节点组的相关操作。后续将提供自动化动作,可在用户确认完设置之后自动化进行调整。

2.4 - 节点优化

描述节点相关信息及优化建议。

描述了节点相关信息及优化建议。

查看节点

点击平台左侧菜单栏的节点菜单,则显示节点页,如下图所示。

节点页
Wiseinf Inc.

节点页分为3个区:

  1. 集群选择区:选择相应的集群。
  2. 查询区:可根据节点组名称和节点组ID过滤列表项。
  3. 列表区:展示节点组的信息、其当前设置和优化设置。

选择集群的节点页如下所示:

节点页-选择集群
Wiseinf Inc.

列表区显示分为5栏:

  1. 节点栏:展示节点名称、实例ID和地域信息。
  2. 所有者栏:展示节点所有者的部门、组及具体的人员。
  3. 当前设置栏:展示节点的实例类型、CPU核数和内存大小。
  4. 详情栏:展示策略所提供的信息。例如,对于低利用率节点策略来说,会观测CPU和内存的平均利用率,并同平台设置的阈值进行比较,帮助用户调整节点实例类型。
  5. 操作栏:展示对节点相应的操作。

调整节点

点击调整链接可打开调整节点对话框,对话框中展示了详细的调整信息和推荐的调整方案,如下图。

调整节点页
Wiseinf Inc.

注意:当前仅展示调整节点的相关操作。后续将提供自动化动作,可在用户确认完设置之后自动化进行调整。

2.5 - GPU节点优化

描述GPU节点相关信息及优化建议。

描述了GPU节点相关信息及优化建议。

查看GPU节点信息

点击平台左侧菜单栏的GPU节点菜单,则显示GPU节点页,如下图所示。

GPU节点
Wiseinf Inc.

GPU节点分为3个区域:

  1. 集群选择区:用于选择集群。
  2. 查询区: 用于通过多个条件来筛选GPU节点。
  3. 列表区: 显示GPU节点信息,其所有者,相应的配置及利用率等。

选择集群后,GPU节点列表区将显示该集群下满足条件的GPU节点列表,如下所示:

Node: cluster selected
Wiseinf Inc.

The list area is divided into five columns:

列表区显示分为5栏:

  1. 节点信息栏:展示GPU节点名称、实例ID和地域信息。
  2. 所有者栏:展示节点所有者的部门、组及具体的人员。
  3. 设置栏:展示GPU节点的实例类型、CPU核数、内存大小、GPU数量及GPU类型。
  4. 详情栏:展示策略所提供的信息。例如,对于低利用率节点策略来说,会观测CPU和内存的平均利用率,并同平台设置的阈值进行比较,帮助用户调整节点实例类型。
  5. 操作栏:展示对节点相应的操作。

调整节点

点击操作栏中的调整链接可打开调整节点对话框,如下图所示。

Node: Adjust node
Wiseinf Inc.

注意:当前仅展示调整GPU节点的相关操作。后续将提供自动化动作,可在用户确认完设置之后自动化进行调整。

2.6 - 磁盘优化

描述磁盘相关信息及优化建议。

描述了磁盘相关信息及优化建议。

查看磁盘

点击平台左侧菜单栏的磁盘菜单,则显示磁盘页,如下图所示。

磁盘页
Wiseinf Inc.

磁盘页分为3个区:

  1. 集群选择区:选择相应的集群。
  2. 查询区:以通过磁盘ID、实例ID和节点名称来查询相应的磁盘。
  3. 列表区:展示磁盘、实例、用量和操作栏。

选择集群后的磁盘页如下所示:

磁盘页-选择集群
Wiseinf Inc.

列表区显示分为4栏:

  1. 磁盘栏:展示磁盘ID、设备名称和创建时间。
  2. 所有者栏:展示节点所有者的部门、组及具体的人员。
  3. 实例栏:展示磁盘所在的节点ID、节点名称和地域。
  4. 用量栏:展示磁盘容量、最大利用率、平均利用率和最后更新时间。
  5. 操作栏:展示对磁盘相应的操作。

调整磁盘

点击调整链接可打开调整磁盘大小对话框,其中展示了磁盘详细的调整信息和推荐的调整方案,如下图。

调整磁盘页
Wiseinf Inc.

2.7 - Persistent Volume优化

描述Persistent Volume相关信息及优化建议。

描述了Persistent Volume相关信息及优化建议。

查看Persistent Volume

点击平台左侧菜单栏的Persistent Volume菜单,则显示Persistent Volume页,如下图所示。

Persistent Volume页
Wiseinf Inc.

Persistent Volume页分为3个区:

  1. 集群选择区:选择相应的集群。
  2. 查询区:可根据名称、PVC名称空间、PVC名称和策略名称过滤列表项。
  3. 列表区:展示PV、PVC、策略名称、用量、最近更新时间和操作栏。

选择集群后的Persistent Volume页如下所示:

Persistent Volume页-选择集群
Wiseinf Inc.

列表区显示分为5栏:

  1. PV栏:展示PV名称、地域、容量和创建时间。
  2. 所有者栏:展示PV所有者的部门、组及具体的人员。
  3. PVC栏:展示PVC名称空间和名称。
  4. 用量栏:展示优化策略名称,优化策略所提供的用量数据,以及最后更新时间等。目前,平台包含未使用PV低利用率PV两大优化策略,对于未使用PV策略来说,其PV用量为空。
  5. 操作栏:展示对Persistent Volume相应的操作。

删除Persistent Volume

选择策略名称栏是未使用PV的行,点击该行操作栏中的删除链接可打开删除Persistent Volume对话框,其中展示了Persistent Volume详细信息和推荐方案。

在社区版中对话框展示如下图所示。

删除Persistent Volume对话框
Wiseinf Inc.

在商业版中对话框展示如下图所示。

删除Persistent Volume对话框
Wiseinf Inc.

点击对话框中的确定按钮,则创建任务删除该Persistent Volume。

调整Persistent Volume大小

查询区中的策略名称选择低利用率PV,系统将仅展示符合低利用率PV策略的列表项,如下图。

通过`低利用率PV`策略名称过滤列表项
Wiseinf Inc.

点击列表操作栏中的调整链接可打开调整Persistent Volume大小对话框,其中展示了Persistent Volume详细信息和推荐的调整方案,展示如下图所示。

调整Persistent Volume大小
Wiseinf Inc.

在商业版中,可以设置参数后由后台任务自动调整,如下图所示。

调整Persistent Volume对话框:设置参数
Wiseinf Inc.

设置目标容量是否保持原有PVC名称是否删除原有PV后,点击确定,即可快速调整Persistent Volume大小。

再次点击操作栏中的调整链接,此时可查看调整Persistent Volume大小的执行日志,如下图所示。

调整Persistent Volume对话框:查看任务日志
Wiseinf Inc.

调整PV将使用用户提供的集群访问账号来操作集群中的PV。您需要设置集群访问账号,具体请参见设置集群访问账号

注意:若选择不是否删除原有PV,您需要自行删除原有PV,否则您仍将承担该PV的费用。

2.8 - 应用优化

描述应用详情以及优化建议。

描述了应用详情以及优化建议。

查看应用

点击平台左侧菜单栏的应用菜单,则显示应用页,如下图所示。

应用
Wiseinf Inc.

应用页分为3个区:

  1. 集群选择区:选择相应的集群。
  2. 查询区:可通过名称空间、负载名称、负载类型、容器和策略名称进行查询。目前,平台支持资源推荐、未设置资源额度、内存溢出策略。
  3. 列表区:展示名称、容器、当前设置、策略名称、详情和操作栏,不同的策略名称,其展示信息会有一些差异。

集群选择区选择集群后,平台默认聚合所有策略的结果,以列表方式展示,如下图所示。

应用:选择集群
Wiseinf Inc.

资源推荐

查看资源推荐相关应用

若策略名称为资源推荐,则列表区如上图所示。列表区显示分为6栏,分别是:

  1. 名称栏:展示负载名称、名称空间和负载类型。
  2. 容器栏:展示容器名称。
  3. 所有者栏:展示节点所有者的部门、组及具体的人员。
  4. 当前设置:展示该容器的CPU Request、CPU Limit、内存Request和内存Limit。
  5. 详情:展示CPU平均使用量、CPU最大使用量、内存平均使用量、内存最大使用量、CPU Request推荐值、CPU Limit推荐值、内存Request推荐值、内存Limit推荐值、策略名称和最近更新时间。
  6. 操作栏:展示对应用相应的操作。

调整资源额度

点击调整链接可打开调整资源额度对话框,其中展示应用详情、推荐值及相应调整语句。

在社区版中展示如下图所示。

应用:调整资源额度对话框
Wiseinf Inc.

在商业版中展示如下图所示。

应用:调整资源额度对话框
Wiseinf Inc.

在商业版本中,点击确定按钮,将自动创建任务,自动化的进行资源调整。

未设置资源配额

查看未设置资源配额应用

若策略名称为未设置资源配额,则列表区展示如下图所示:

应用:选择未设置资源配额策略
Wiseinf Inc.

列表区显示分为6栏,分别是:

  1. 名称栏:展示负载名称、名称空间和负载类型。
  2. 容器栏:展示容器名称。
  3. 所有者栏:展示节点所有者的部门、组及具体的人员。
  4. 当前设置:展示该容器的CPU Request、CPU Limit、内存Request和内存Limit是否已设置。
  5. 详情:展示CPU Request推荐值、CPU Limit推荐值、内存Request推荐值、内存Limit推荐值、策略名称和和最近更新时间。
  6. 操作栏:展示对应用相应的操作,

设置应用资源额度

点击上图中的调整链接可打开设置应用资源额度对话框,其中展示应用详情、推荐值及相应调整语句。

在社区版中展示如下图所示。

应用:设置应用资源额度对话框
Wiseinf Inc.

在商业版中展示如下图所示。

应用:调整资源额度对话框
Wiseinf Inc.

在商业版本中,点击确定按钮,将自动创建任务,自动化的进行资源调整。

内存溢出

查看内存溢出应用

若策略名称为内存溢出,则列表区展示如下图所示:

应用:选择内存溢出策略
Wiseinf Inc.

列表区显示分为6栏,分别是:

  1. 名称栏:展示负载名称、名称空间和负载类型。
  2. 容器栏:展示容器名称。
  3. 所有者栏:展示节点所有者的部门、组及具体的人员。
  4. 当前设置:展示该容器的内存Request和内存Limit。
  5. 详情:展示最近OOM时间、最近OOM Pod、OOM次数和和最近更新时间。
  6. 操作栏:展示对应用相应的操作。

调整应用内存大小

点击调整链接可打开调整应用内存大小对话框,其中展示应用详情、推荐内存限制值及相应调整语句。

在社区版中展示如下图所示。

应用:调整应用内存大小对话框
Wiseinf Inc.

在商业版中展示如下图所示。

应用:调整资源额度对话框
Wiseinf Inc.

在商业版本中,点击确定按钮,将自动创建任务,自动化的进行资源调整。

2.9 - 任务管理

描述任务管理。

描述任务管理。

前置条件

  • 仅适用于商业版本

查看任务

点击顶部右侧的任务图标,如下图所示。

任务管理页
Wiseinf Inc.

则显示任务管理页,如下图所示。

任务管理页
Wiseinf Inc.

任务管理页分为2个区:

  1. 查询区:可根据策略名称、任务状态和创建人过滤任务项。
  2. 列表区:展示任务名称、策略名称、配置项等信息。

在查询区中,策略名称目前提供未使用PV、应用资源推荐、未使用资源配额、内存溢出等4项。任务状态包括运行中、运行成功和运行失败。

列表区显示分为6栏:

  1. 任务名称栏:展示任务名称。
  2. 策略名称栏:展示策略名称。
  3. 任务参数栏:展示任务参数。
  4. 状态栏:展示任务状态。
  5. 创建人栏:展示任务创建人。
  6. 操作栏:展示对任务的操作,包括重新运行、取消执行、删除、查看日志等。

任务的创建由相应的策略负责,请参见:

2.10 - 个人设置

描述个人设置相关操作.

2.10.1 - 个人账户设置

描述个人账户设置相关操作。

描述个人账户设置相关操作。

前置条件

  • 仅适用于商业版本。

更新个人信息

点击顶部左侧导航栏的用户头像,如下图所示。在展开的菜单上点击个人设置,即可进入个人设置页面。

个人设置菜单
Wiseinf Inc.

在个人设置页面,点击个人账户标签,即可查看和更新个人信息,如下图所示。

个人设置页面
Wiseinf Inc.

具体字段名和描述请参见下表。

字段名 描述
名称 用户名称, 必选
用户姓,可选
用户名,可选
电子邮箱 用户电子邮箱,必选
密码 用户登录密码,必选
确认密码 确认用户登录密码,必选
手机号 用户手机号,必选
用户角色 目前,系统提供管理员和用户两种角色,默认为用户,必选
区域设置 目前支持中文和英文区域设置。

按照字段名输入相应信息,点击确定按钮,即可修改个人信息。

2.10.2 - 访问秘钥

描述了管理访问密钥的相关操作。

翻译

本节介绍了管理访问密钥的相关操作。

先决条件

  • 描述的功能仅适用于商业版本。
  • 版本要求 v1.3.1 或更高。

查看访问密钥

要查看和管理您的访问密钥,请按照以下步骤操作:

  1. 点击左上导航栏中的用户头像,如下图所示。
  2. 在展开的菜单中,选择 个人设置 以进入个人设置页面。
  3. 在个人设置页面,点击 访问密钥 标签,查看和管理您的访问密钥,如下所示。

访问密钥列表
Wiseinf Inc.

下表详细描述了该部分可用的字段:

字段名称 描述
Access Key ID 访问密钥的 ID。
Access Key Secret 访问密钥的密钥。
状态 访问密钥的状态,如启用、禁用和删除。
创建时间 访问密钥的创建时间。
操作 可用于管理访问密钥的操作。

创建新访问密钥

要创建新的访问密钥,请点击 访问密钥 表格右上角的 新增 按钮。系统将自动生成访问密钥,并将其列入表中。

禁用访问密钥

禁用访问密钥:

  1. 点击 操作 列中的 禁用 按钮。
  2. 在禁用访问密钥前,将弹出确认对话框。确认后,账户将被禁用。

注意:禁用访问密钥将导致任何使用该密钥的任务失败。

启用访问密钥

要启用访问密钥,请点击 操作 列中的 启用 按钮。

删除访问密钥

删除访问密钥:

  1. 点击 操作 列中的 删除 按钮。
  2. 在删除前,将弹出确认对话框。确认后,账户将被删除。

注意:删除访问密钥将导致任何使用该密钥的任务失败。

显示/隐藏访问密钥密钥

要显示或隐藏访问密钥密钥,点击 Access Key Secret 列中的 显示隐藏 按钮。

2.10.3 - 集群访问账户

描述管理个人集群访问账户的相关操作。

描述管理个人集群访问账户的相关操作。

前置条件

  • 仅适用于商业版本。

查看集群访问账户

点击顶部左侧导航栏的用户头像,如下图所示。在展开的菜单上点击个人设置,即可进入个人设置页面。

在个人设置页面,点击集群访问账户标签,即可查看和管理集群访问账户,如下图所示。

集群访问账户列表
Wiseinf Inc.

具体字段名和描述请参见下表。

字段名 描述
集群ID 用户名称, 必选
云服务商访问账号 用户姓,必选
Kubeconfig 用户电子邮箱,必选
操作 展示用户操作

按照字段名输入相应信息,点击确定按钮,即可修改个人信息。

添加集群访问账户

点击集群访问账户管理页面上方的增加按钮,将弹出添加集群访问账户对话框,如下图。

添加集群访问账户对话框
Wiseinf Inc.

具体字段名和描述请参见下表。

字段名 描述
集群ID 访问的集群ID, 必选
Access Key 访问云服务商的访问密钥,必选
Access Key Secret 访问云服务商的访问密钥,必选
Kubeconfig 访问Kubernetes的凭据,必选

按照字段名输入相应信息,点击确定按钮,即可添加集群访问账户。

注意:若您没有添加集群,则集群ID字段下拉框为空,系统将报错,无法添加集群访问账户。您可以[导入集群](/docs/user-guide/import-cluster/]后再创建集群访问账户。

更新集群访问账户

点击集群访问账户管理页面列表中的集群访问账户按钮,将弹出编辑集群访问账户对话框,如下图。

编辑集群访问账户对话框
Wiseinf Inc.

具体字段名和描述同添加集群访问账户一致,不在赘述。

删除集群访问账户

点击集群访问账户管理页面的删除按钮,将删除该集群访问账户。

删除集群访问账户
Wiseinf Inc.

删除集群访问账户之前,将弹出删除确认对话框,确认后执行删除操作。

2.11 - 管理设置

描述集群优化平台管理相关操作,包括通知渠道管理,通知规则管理,用户管理等。

2.11.1 - 用户管理

描述用户管理的相关操作。

描述用户管理的相关操作。

前置条件

  • 管理用户需具备管理员权限。
  • 仅适用于商业版本。

查看用户列表

设置 --> 用户进入用户管理页面,如下图。

用户管理页
Wiseinf Inc.

用户管理页面将以列表的形式展示用户。主要包括5栏:

  • 用户名:展示用户名称。
  • 全称:展示用户名称。
  • 电子邮箱:展示用户电子邮箱。
  • 电话号码:展示用户电话号码。
  • 角色:展示用户角色。
  • 操作:操作栏,包括编辑、删除等操作。

添加用户

点击用户管理页面上方的增加按钮,将弹出添加用户对话框,如下图。

添加用户对话框
Wiseinf Inc.

具体字段名和描述请参见下表。

字段名 描述
名称 用户名称, 必选
用户姓,可选
用户名,可选
电子邮箱 用户电子邮箱,必选
密码 用户登录密码,必选
确认密码 确认用户登录密码,必选
手机号 用户手机号,必选
用户角色 目前,系统提供管理员和用户两种角色,默认为用户,必选

按照字段名输入相应信息,点击确定按钮,即可添加用户。

更新用户

点击用户管理页面列表中的编辑按钮,将弹出编辑用户对话框,如下图。

编辑用户对话框
Wiseinf Inc.

具体字段名和描述同添加用户一致,不在赘述。

删除用户

点击用户管理页面的删除按钮,将删除用户。

删除用户
Wiseinf Inc.

删除用户之前,将弹出删除确认对话框,确认后执行删除操作。

2.11.2 - 通知渠道

描述如何设置通知渠道。

描述如何管理通知渠道,包括查看,添加、更新或者删除通知渠道。

查看渠道

设置 --> 通知渠道进入通知渠道管理页面,如下图。

通知渠道管理页
Wiseinf Inc.

通知渠道管理页面将以列表的形式展示通知渠道。主要包括5栏:

  • 名称:通知渠道名称。
  • 渠道类型:通知渠道类型。
  • 连接参数:展示该渠道类型的连接参数。
  • 其他参数:展示其他参数
  • 操作:操作栏,包括编辑、删除等操作。

添加渠道

点击通知渠道管理页面上方的新增按钮,选择通知渠道类型,并填写通知渠道信息,如下图。

添加通知渠道对话框
Wiseinf Inc.

具体字段名和描述请参见下表。

字段名 描述
名称 通知渠道名称
渠道类型 通知渠道类型,目前仅支持Email
主机 Email SMTP主机名,例如 smtp.wiseinf.com
端口 Email SMTP端口,例如 25, 465
启用SSL 是否启用SSL,默认为不启用
Email Email地址,例如 admin@wiseinf.com
发送者名称 发送者名称,例如 Wiseinf
密码 Email SMTP密码
参数列表 用户自定义参数列表,为键值对方式,该参数列表会传递到通知渠道的模板中,可通过{{.param.参数名}}的方式在模板中引用。

按照字段名输入相应信息,点击确定按钮,即可添加通知渠道。

具体上述字段的取值,您可以咨询您的邮件服务商,或者是邮件系统管理员。

更新渠道

更新通知渠道,点击通知渠道管理页面列表中的编辑按钮,将更新通知渠道信息,如下图。

编辑通知渠道对话框
Wiseinf Inc.

具体字段名和描述同添加渠道一致,不在赘述。

删除渠道

点击通知渠道管理页面列表中的的删除按钮,将删除通知渠道,如下图。

编辑通知渠道对话框
Wiseinf Inc.

删除通知渠道之前,将弹出删除确认对话框,用户确认后执行删除操作。

注意:当该通知渠道被通知规则所使用时,会提示删除不成功。应该首先删除使用该通知渠道的通知规则后,然后再删除该通知渠道。

2.11.3 - 通知规则

描述管理通知规则的详细信息。

描述管理通知规则的详细信息。

查看通知规则

设置 --> 通知规则进入通知规则管理页面,如下图。

通知规则管理页
Wiseinf Inc.

通知规则管理页面将以列表的形式展示通知渠道。主要包括5栏:

  • 名称:通知渠道名称。
  • 渠道类型:通知渠道类型。
  • 连接参数:展示该渠道类型的连接参数。
  • 其他参数:展示其他参数
  • 操作:操作栏,包括编辑、删除等操作。

添加通知规则

点击通知规则管理页面上方的增加按钮,将弹出添加通知规则对话框,如下图。

添加通知规则对话框
Wiseinf Inc.

具体字段名和描述请参见下表。

字段名 描述
名称 通知渠道名称
接收者 通知接收者地址,比如 admin@wiseinf.com
通知渠道 可通过下拉框选择具体的通知渠道名
调度时间 设置该规则的具体调度时间。
优化策略 选择具体的优化策略
集群 选择需要关注的集群
名称空间 输入名称空间名,空值将匹配所有名称空间
部门 输入部门名,空值将匹配所有部门名称
输入组名,空值将匹配所有组名
用户 输入用户名,空值将匹配所有用户名
模板ID 模板ID名,默认值为default
参数列表 用户自定义参数列表,为键值对方式,该参数列表会传递到通知渠道的模板中,可通过{{.param.参数名}}的方式在模板中引用。通知渠道参数列表中的同名参数将覆盖。

按照字段名输入相应信息,点击确定按钮,即可添加通知规则。

更新通知规则

更新通知渠道,点击通知渠道管理页面列表中的编辑按钮,将弹出添加通知规则对话框,如下图。

编辑通知规则对话框
Wiseinf Inc.

具体字段名和描述同添加通知规则一致,不在赘述。

删除通知规则

点击通知渠道管理页面的删除按钮,将删除通知规则。

删除通知规则
Wiseinf Inc.

删除通知规则之前,将弹出删除确认对话框,用户确认后执行删除操作。

2.12 - 优化操作

描述云原生集群优化平台(Cluster Optimizer)提供的集群优化操作。

描述了云原生集群优化平台(Cluster Optimizer)提供的集群优化操作。

集群优化操作主要包括:

  • 调整节点池
  • 调整节点
  • 调整磁盘

2.12.1 - 调整节点池

调整节点池。

描述了调整节点池的操作。

阿里云

前提条件

  • 具备编辑节点池权限。

操作步骤

  1. 登录容器服务管理控制台,在左侧导航栏选择集群。
  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择节点管理 > 节点池。
  3. 在节点池列表页面中,单击目标节点池所在行操作列的编辑。
  4. 在编辑节点池页面,编辑节点池的配置项。节点池优化主要关注实例规格自动伸缩配置项。
    1. 根据调整节点池对话框中推荐的实例规则,在实例规格中选择相应的实例规格。
    2. 根据调整节点池对话框中推荐的自动扩缩容、最小节点数和最大节点数,在自动伸缩配置项中进行调整。若没有开启集群自动弹性伸缩,可参考节点自动伸缩进行配置。

想了解更多细节,请参考:编辑节点池

2.12.2 - 调整节点

调整节点。

描述了调整节点的操作。

阿里云

前提条件

TBD…

2.12.3 - 调整磁盘

调整磁盘。

描述了调整磁盘的操作。

阿里云

前提条件

TBD…

2.12.4 - 删除Persistent Volume

删除Persistent Volume。

描述了删除Persistent Volume的操作。

阿里云

前提条件

TBD…

3 - 配置

描述Cluster Optimizer的配置参数。

描述Cluster Optimizer的配置参数。

3.1 - 命令行参数

描述云原生集群优化平台的命令行参数。

描述云原生集群优化平台的命令行参数。

命令行参数

通过 --help 可以获取Cluster Optimizer的用法,如下:

$optimizer --help
Usage:
  optimizer optimizer [flags]

Flags:
      --features stringArray   Enable features, available features are [APIServer, Optimizer]
  -h, --help                   help for optimizer

Global Flags:
      --config string        config file (default is $OPTIMIZER_HOME/conf/cluster-optimizer.yaml)
      --log-enable-color     Enable color in log
      --log-enable-console   Enable log to console
      --log-format string    Set the log format (json or text) (default "json")
      --log-level string     Set the log level (debug, info, warn, error, fatal) (default "info")

下面将对参数进行详细描述。

参数描述

--help

参数--help提供命令行的用法帮助。

-f, --features

参数 -f, --features指示集群优化平台启动的特性,其中APIServer表示仅提供API服务,Optimizer表示启动优化器特性。

默认值为APIServer,Optimizer,表示同时启用自动扩缩容特性和虚拟容量特性。

--config

参数--config指示集群优化平台所使用的配置文件路径。其配置请参见配置文件

--log-enable-color

参数--log-enable-color指示是否开启日志中的色彩属性,在控制台界面,启用该特性能够提升可读性。默认值是false

--log-enable-console

参数--log-enable-console指示是否开启控制台日志,通过kubectl log命令能够很容易的访问控制台日志。默认值是false

--log-format

参数--log-format用于设置日志格式,可用日志格式为json或者text。默认值是json

--log-level

参数--log-level用于设置日志等级,可选的值包括debug, info, warn, error, fatal。默认值是info

3.2 - 配置参数

描述云原生集群优化平台配置文件的配置参数。

描述云原生集群优化平台配置文件的配置参数。

概述

云原生集群优化平台必须依赖于配置文件才能运行。可通过命令行参数--config来制定配置文件位置,例如:--config=conf/cluster-optimizer.yaml。默认路径为conf/cluster-optimizer.yaml

配置文件格式为YAML格式,示例如下:

server:
  port: 7070
engine:
  maxQueryDuration: 4h
optconf:
  dataSource:
    name: "root:optimizer@tcp(127.0.0.1:3306)/optconf?createDatabaseIfNotExist=true&charset=utf8mb4&readTimeout=30s&writeTimeout=30s&parseTime=true&loc=Local"
    maxOpenConns: 10
optdata:
  dataSource:
    name: "root:optimizer@tcp(127.0.0.1:3306)/optdata?createDatabaseIfNotExist=true&charset=utf8mb4&readTimeout=30s&writeTimeout=30s&parseTime=true&loc=Local"
    maxOpenConns: 10
optimize:
  defaultCron: "0 0 1 * * ?"
  strategyConfigs:
    "OOM": 
      enabled: false
    "Resource Recommendation":
      enabled: false
    "Low Utilization Node":
      enabled: false
    "No Quota":
      enabled: false
  enabled: true
sms:
  enabled: false
  ...
notification:
  templateBasePath: templates/notification

配置参数

server.port

参数server.port是云原生集群优化平台挺的对外服务端口。默认值是7070

engine.maxQueryDuration

参数engine.maxQueryDuration设置查询度量服务器(例如Prometheus)的最大查询周期,默认值是1天。当查询时间范围超过最大查询周期是,会将其分割为多个查询窗口分别查询,从而降低服务器的压力。

optconf

参数optconf用于配置优化配置库。

其子参数包括dataSource.namemaxOpenConns,下面分别进行阐述。

dataSource.name

参数dataSource.name用于设置Mysql数据源名称,例如root:optimizer@tcp(127.0.0.1:3306)/optconf?createDatabaseIfNotExist=true&charset=utf8mb4&readTimeout=30s&writeTimeout=30s&parseTime=true&loc=Local。 其中,createDatabaseIfNotExist表示在数据库不存在的时候,优先创建此数据库。

maxOpenConns

参数maxOpenConns设置数据库最大开启连接数。

optdata

参数optdata用于配置优化数据库。

其子参数包括dataSource.namemaxOpenConns,其含义与optconf相应子参数一致,不再阐述。

optimize

参数optimize用于设置优化引擎相关参数,下面将分别阐述其子参数设置。

defaultCron

参数defaultCron用于设置优化引擎默认的调度参数,默认值是0 0 1 * * ?(每天凌晨1点执行),

enabled

参数enabled设置是否启用该优化引擎,默认值是true

strategyConfigs

参数strategyConfigs用于配置该优化引擎的策略配置。其配置为键-值对的方式,键是策略的名称,值是该策略的配置。

策略名称是字符串,策略值的内容如下:

  enabled: false
  cron: "0 0 1 * * ?"
  parameters:
    - key1: value1
    - key2: value2

其中,enabled表示是否启用该优化策略,默认值是truecron设置该策略的调度参数。parameters为策略提供配置,不同的策略,其参数存在差异,下面分别说明。

  1. 节点组推荐策略Node Group Recommendation
参数名 默认值 描述
cpuMaxUsage 0.7 节点组最大CPU利用率,取值范围为*(0,1]*
memoryMaxUsage 0.8 节点组最大内存利用率,取值范围为*(0,1]*
cpuMinCores 2 推荐实例类型CPU最小值,单位核,必须大于或等于1
memoryMinGBs 4 推荐实例类型内存最小值,单位GB,必须大于或等于1
recommendTopK 5 最多推荐的实例类型数量,取值范围为*[1,10]*
  1. 节点推荐Node Recommendation
参数名 默认值 描述
duration 24小时 时间范围,取值是Duration。
step 24小时 时间范围步长,取值是Duration。
resolution 2分钟 查询分辨率,取值是Duration。
cpuStep 1 CPU最小步长,单位核
memoryStep 1 内存最小步长,单位GB
cpuMaxUsage 0.6 节点最大CPU利用率
memoryMaxUsage 0.8 节点最大内存利用率
  1. 低利用率节点Underutilized Node
参数名 默认值 描述
duration 24小时 时间范围,取值是Duration
step 24小时 每批范围,取值是Duration
resolution 2分钟 查询分辨率
cpuAvgThreshold 0.2 CPU平均利用率阈值
cpuMaxThreshold 0.6 CPU最大利用率阈值
memoryAvgThreshold 0.3 内存平均利用率阈值
memoryMaxThreshold 0.6 内存最大利用率阈值
  1. 低利用率GPU节点Underutilized GPU Node
参数名 默认值 描述
duration 24 时间范围,取值是Duration,默认值24小时
step 24 每批范围,取值是Duration,默认值24小时
resolution 2 查询分辨率,单位分钟
gpuAvgThreshold 0.2 GPU平均利用率阈值
gpuMaxThreshold 0.8 GPU最大利用率阈值
  1. 低利用率磁盘Underutilized Disk
参数名 默认值 描述
duration 24 时间范围,取值是Duration,默认值24小时
step 24 每批范围,取值是Duration,默认值24小时
resolution 2 查询分辨率,单位分钟
threshold 0.3 磁盘利用率阈值,低于此阈值,我们认为利用率低。
  1. 未使用持久化存储卷Unused PV
参数名 默认值 描述
boundDuration 1 持久化存储卷绑定周期,默认值1小时。若在持久化存储卷绑定周期未绑定且未关联Persistent Volume Claim,则认为该存储卷未被使用。
  1. 低利用率持久化存储卷Underutilized PV
参数名 默认值 描述
duration 24 时间范围,取值是Duration,默认值24小时
step 24 每批范围,取值是Duration,默认值24小时
resolution 2 查询分辨率,单位分钟
threshold 0.3 PV利用率阈值,低于此阈值,我们认为利用率低。
  1. 应用资源推荐Resource Recommendation
参数名 默认值 描述
duration 24*8 时间范围,取值是Duration,默认值8天
step 24 每批范围,取值是Duration,默认值24小时
resolution 2 查询分辨率,单位分钟
cpuStep 0.05 CPU最小步长,单位核
memoryStep 0.1 内存最小步长,单位GB
cpuMaxUsage 0.6 节点最大CPU利用率
memoryMaxUsage 0.8 节点最大内存利用率
  1. 应用未设置资源额度Resource Quota Unset
参数名 默认值 描述
duration 24*8 时间范围,取值是Duration,默认值8天
step 24 每批范围,取值是Duration,默认值24小时
resolution 2 查询分辨率,单位分钟
cpuStep 0.05 CPU最小步长,单位核
memoryStep 0.1 内存最小步长,单位GB
cpuMaxUsage 0.6 节点最大CPU利用率
memoryMaxUsage 0.8 节点最大内存利用率
  1. 内存溢出OOM
参数名 默认值 描述
duration 24*8 时间范围,取值是Duration,默认值8天,仅关注该时间范围内出现内存溢出的事件。
interval 1小时 过期时间清理周期

短信发送配置sms

短信发送配置主要为系统发送验证码/安全码,其配置参数如下:

参数名 默认值 描述
enabled true 是否开启短信
provider 短信服务商,目前支持AWS、Azure、阿里云、腾讯云、百度云等
accessKeyId AccessKeyId对应于短信服务商的相应字段,不同的短信服务商对应的字段略有差异。
accessKeySecret AccessKeySecret对于应短信服务商的相应字段,不同的短信服务商对应的字段略有差异。
signName 短信服务商的签名
template 短信服务商的模板ID
extras [] 短信服务商所需其他参数有序列表

示例:对于腾讯云来说,其配置如下:

sms:
  enabled: true
  provider: "Tencent Cloud SMS"
  accessKeyID: AK******
  accessKeySecret: NY******
  signName: 云智优本
  template: 210000
  extras: 
  - 1000000000

其中,accessKeyIDaccessKeySecret是腾讯云短信服务的密钥,分别对应云API密钥上申请的标识身份的SecretId及其对应的SecretKeysignName是短信签名,template是短信模板ID,extra是额外参数,在腾讯云短信服务中,extra是应用ID,分为对应于发送短信接口中的SignNameTemplateIdSmsSdkAppId.

notification

参数notification用于配置优化平台的通知配置。

notification.templateBasePath

参数notification.templateBasePath设置通知模板的路径,默认值是templates/notification

目前,默认的模板名称是default

邮件配置 email

邮件配置主要用于系统发送电子邮件。其配置参数如下:

参数名称 默认值 描述
enabled true 确定是否启用邮件功能。
provider 指定电子邮件服务提供商。支持的提供商包括 AWS、Azure、阿里云、腾讯云等。
clientId 对应电子邮件服务提供商的 ClientId。不同提供商的字段名称可能有所不同。
clientSecret 对应电子邮件服务提供商的 ClientSecret。不同提供商的字段名称可能有所不同。
host 指定电子邮件服务提供商 SMTP 服务器的主机名或 IP 地址。这对于将邮件流量定向到正确的服务器以处理外发邮件至关重要。
port 定义用于连接电子邮件服务提供商 SMTP 服务器的网络端口。常见的端口值为 TLS/STARTTLS 的 587、SSL 的 465 和非加密通信的 25。端口选择必须符合电子邮件服务的安全要求。
disableSSL 确定是否禁用与 SMTP 服务器连接的 SSL 加密。如果设置为 true,则关闭 SSL,这可能对某些服务器配置或在加密由其他方式管理的环境中是必要的。但是,禁用 SSL 可能会使通信暴露于潜在的安全风险中。
endpoint 定义用于连接电子邮件服务提供商 API 的 URL 或特定网络端点。这对于基于云或 API 驱动的电子邮件服务特别重要,在这些服务中,电子邮件通过 HTTP 请求而不是传统的 SMTP 发送。
method 指定与电子邮件服务提供商 API 交互时使用的 HTTP 方法(如 POST、GET、PUT 等)。通常使用 POST 来发送电子邮件,因为它允许在请求体中传输电子邮件内容和元数据。
region 指定电子邮件服务提供商服务器所在的地理区域。这对于优化延迟、遵守数据驻留要求以及可能的成本管理非常重要,具体取决于电子邮件服务提供商。
template 电子邮件服务提供商用于发送消息的模板。默认值为 templates/email_code.tpl
fromAddress 设置出现在电子邮件 “发件人” 字段中的电子邮件地址。收件人会将此地址视为发件人地址。此地址应为电子邮件服务提供商系统中已验证或授权的地址。
fromName 指定与 fromAddress 关联的显示名称。此名称会在收件人的收件箱中显示为发件人的名称,增强电子邮件的品牌形象和识别度。

许可证配置 license

许可证配置主要用于商业版的许可证配置。其配置参数如下:

参数名称 默认值 描述
accessKeyId accessKeyId 是分配给您的账户或应用程序的唯一标识符,用于在线检索许可证时对请求进行身份验证。此密钥是认证过程的关键部分,并与 accessKeySecret 一起使用,以确保对许可服务的安全访问。
accessKeySecret accessKeySecret 是与 accessKeyId 配对的密钥,用于对 API 请求进行签名和身份验证,确保与许可服务的安全通信。此密钥必须保密,因为它提供了与许可证检索和验证相关的关键操作的访问权限。
managerBaseUrl managerBaseUrl 指定许可管理服务的基本 URL。此 URL 用作与许可证检索相关的所有 API 请求的端点。
certificate 指的是离线提供的许可证证书。此证书用于验证许可证的真实性和完整性。
signature 包含离线提供的许可证加密签名。此签名用于验证许可证证书的完整性和真实性,确保其未被篡改。

4 - API参考

描述Cluster Optimizer的API。

4.1 - API概览

Cluster Optimizer API概览。

翻译

本节提供了集群优化器 API 的参考信息。

概述

集群优化器 API 是一个强大的工具,允许用户通过编程方式与云原生集群优化流程进行交互和自动化操作。通过提供 RESTful 端点,该 API 使用户能够将集群优化器与第三方应用集成、自动化任务执行,并检索有关资源利用率和成本节约机会的详细报告。

  1. 全面功能访问:该 API 赋予用户对集群优化器平台关键功能的完全访问权限,如:
    • 集群管理:用户可以通过 API 导入、更新或删除集群及其关联的云账户。
    • 资源优化:该 API 提供端点用于分析和优化资源使用情况,如节点组、磁盘和工作负载等。
    • 成本与节约见解:用户可以通过编程方式访问针对特定配置的成本节约和优化机会的详细报告。
  2. 灵活性与定制化:该 API 高度可定制,允许用户:
    • 创建基于实时数据的自定义工作流,以自动化资源管理和优化。
    • 将优化报告集成到内部仪表盘或财务报告系统中,更好地跟踪云成本。
  3. 支持多云平台:该 API 支持 AWS、阿里云以及 Kubernetes 集群等多种云原生环境。无论底层云基础设施如何,这种跨平台能力确保了对分布式资源的无缝集成与控制。

用例

  1. 优化任务自动化:DevOps 团队可以根据工作负载需求自动应用优化策略(如调整节点组、休眠集群),从而减少人工干预、提高运营效率,并确保持续的资源管理。
  2. 自定义监控与告警:用户可以构建自定义监控系统,查询 API 以获取实时的资源利用率和优化数据。告警可以根据特定的阈值或事件触发,如云成本突然飙升或资源利用不足。
  3. 与财务工具集成:财务团队可以使用 API 提取详细的成本节约报告,并将其集成到财务系统中,从而实现对云支出的持续监控,并将优化工作与云管理中的 FinOps 原则保持一致。

API 概览

REST API 是集群优化器的基础架构。集群优化器提供了一个 REST API,允许您执行以下操作:

  • 管理 API:管理集群、集群访问账户、访问密钥、通知渠道、通知规则等。
  • 优化 API:提供 Kubernetes 资源(如节点组、持久卷、工作负载等)的推荐和优化。

注意

  1. 集群优化器 API 仅在商业版(版本 1.3.1 及以上)中可用。
  2. 集群优化器 API 处于 alpha 阶段,未来可能会更改接口。

4.2 - 认证

描述了 Cluster Optimizer API 认证的详细步骤。

本节描述了 Cluster Optimizer API 认证的详细步骤。

概述

通过 HTTP API 进行身份验证对于保护资源和确保只有授权用户和服务可以访问数据至关重要。

  • API 身份验证:API 使用基于令牌的身份验证机制,确保对集群数据和操作的安全访问。用户首先需要通过集群优化器界面生成 API 令牌,然后在所有 API 请求中使用该令牌进行身份验证。
  • 基于角色的访问控制 (RBAC):API 与平台的 RBAC 系统集成,确保用户在访问或修改资源时拥有适当的权限。

Cluster Optimizer API 通过 HTTP 头 Authorization 提供身份验证。示例如下:

GET /api/resource HTTP/1.1
Host: api.example.com
Authorization: Bearer <Access_Token>

生成访问令牌Access Token

要使用 Access KeyAccess Key Secret 生成 Access Token,通常使用签名算法(如 HMAC)来创建唯一的安全密钥,用于 API 请求的身份验证。以下是生成 API 密钥的详细步骤:

1. 准备您的 Access Key 和 Secret

您通常会获得 Access Key(公开标识符)和 Access Key Secret(私有标识符)。Access Key 用于标识客户端,Access Key Secret 用于安全地签署和验证 API 请求。

2. 生成要签名的消息

在生成签名的 API 密钥之前,您需要创建一个消息,将几个元素通过 : 作为分隔符组合:

  • Access Key:客户端的公开标识符。
  • Timestamp:为了防止重放攻击,包含一个时间戳(以纳秒为单位)。
  • Nonce:防止重放攻击的随机字符串。

例如(在 Go 语言中):

message := fmt.Sprintf("%s:%d:%s", accessKeyID, timestamp, nonce)

在此示例中,accessKeyID 是客户端的访问密钥 ID,timestamp 是以纳秒为单位的时间戳,nonce 是一个随机字符串。

3. 使用 HMAC-SHA256 签名消息

接下来使用 API key secret 通过 HMAC-SHA256 生成签名。此签名确保请求未被篡改,并且客户端是合法的。

示例(Go 语言)如下:

func generateSignature( keyID string, keySecret string, timestamp int64, nonce string) (string, error) {
  message:=fmt.Sprintf("%s:%d:%s", keyID, timestamp, nonce)
  h:=hmac.New(sha256.New, []byte(keySecret))
  if _, err:=h.Write([]byte(message)); err!=nil {
    return"", err
  }
  signature:=base64.StdEncoding.EncodeToString(h.Sum(nil))
  returnsignature, nil
}

以下是所要求的中文翻译:

此函数通过使用 API Key SecretHMAC-SHA256 算法对消息进行哈希处理来生成 signature

4. 构建访问令牌

生成签名后,您可以通过组合 Access Token(公开)和生成的签名(私有)来构建最终的 API 密钥。

带有签名 API 密钥的请求示例:

GET /api/resource HTTP/1.1
Host: api.example.com
Authorization: Bearer <accessKey>/<timestamp>/<nonce>/<signature>
  • accessKey 是公共的访问密钥。

  • timestamp:为防止重放攻击,包含一个以纳秒为单位的时间戳。

  • nonce:用于防止重放攻击的随机字符串。

  • signature 是使用密钥通过 HMAC-SHA256 签名的消息。

    示例(Go 语言)如下:

    func GenerateAccessToken(keyID string, keySecret string, timestamp int64, nonce string) (string, error) {
        if timestamp==0 {
            timestamp=time.Now().UTC().UnixNano()
        }
        signature, err := generateSignature(keyID, keySecret, timestamp, nonce)
        if err != nil {
            return "", err
        }
        return utils.URLEncode(fmt.Sprintf("%s/t%d/t%s/t%s", keyID, timestamp, nonce, signature)), nil
    }
    

5. 构建 HTTP 请求

您可以使用生成的访问令牌以及 open api 规范提供的方法来构建 HTTP 请求。

示例(Go 语言)如下:

client := NewAPIClient(&Configuration{
    BasePath: "http://api.example.com",
})
apiKey := "AKFgGMF3FWWe5mgkz3UWBMgaUgrzBMUV"
apiSecret := "******"
nonce := "NONe5mgkz3GBk"
accessToken, _ := GenerateAccessToken(apiKey, apiSecret, 0, nonce)
ctx := context.Background()
ctx = context.WithValue(ctx, ContextAccessToken, accessToken)
rules, _, err := client.NotificationRuleApi.ListNotificationRules(ctx, &NotificationRuleApiListNotificationRulesOpts{})

下一步

下面,我们将探讨关注如下API:

  • 管理 API:管理集群、集群访问账户、访问密钥、通知渠道、通知规则等。
  • 优化 API:提供针对 Kubernetes 资源(如节点组、持久卷、工作负载等)的推荐和优化。

4.3 - Management API

Management API.
Management API

4.4 - Optimize API

Optimize API。
Optimize API

5 - 最佳实践

描述使用Cluster Optimizer的常用场景和最佳实践。

描述使用Cluster Optimizer的常用场景和最佳实践。

5.1 - 周期性的获取优化建议通知

描述通过Cluster Optimizer设置周期性的优化建议通知机制,方便通过邮件获取相应的优化建议。

描述通过Cluster Optimizer设置周期性的优化建议通知机制,方便通过邮件获取相应的优化建议。

概览

在Kubernetes集群运营过程中,我们经常需要定期获取关键指标或信息,并将这些信息通过邮件或其他通知方式传达给相关用户。周期性的通知机制可以使得用户能够根据收到的信息进行必要的调整和优化操作。

集群优化平台能够自动监测集群中可能出现的问题和潜在优化点,如节点利用率低、应用内存溢出、未使用的Persistent Volume等,并生成包含详细信息和推荐参数的优化建议,通过邮件通知用户。例如,当检测到某个应用内存溢出时,系统会自动收集相关信息,并将这些信息发送给该应用的负责人或责任人。这不仅提高了问题响应的效率,也确保了集群资源的高效利用和应用的稳定运行。通过此方式,用户可以更加主动地管理和维护集群和集群中的应用,提升整体运营效能。

使用场景

用户想通过邮件获取常见的优化建议信息,例如:节点利用率低、应用内存溢出、Persistent Volume未被使用等,并针对这些优化建议信息执行相应的操作。 本文将以配置节点组优化建议为例,概述如何配置Cluster Optimizer,使其能够提供周期性的优化建议通知。

假设我们期望将集群中的节点组优化建议在每日早上8点通过邮件通知用户Jay(邮箱地址是jay@wiseinf.com),具体前置条件和配置流程如下。

假设用户有如下需求:

  1. 将节点组优化建议结果发送给用户Jay(邮箱地址是jay@wiseinf.com
  2. 每日上午8点通过邮件接收通知

集群优化平台通过如下两个组件来为用户提供通知:

  • 通知渠道:提供发送通知的基础配置参数,例如,对于邮件通知来说,典型配置包括主机地址、端口、用户名和密码等。通知渠道可以被多个通知规则使用。
  • 通知规则:提供构造通知内容的配置参数、接收者地址等。

下面将描述通过集群优化平台配置通知渠道和通知规则,使其能够满足上述用户需求。

前置条件

  1. 已部署Cluster Optimizer,具体请参见安装部署
  2. 已导入集群信息,具体请参见导入集群
  3. SMTP服务器相关信息,包括主机地址、端口、用户名、密码等。

配置步骤

  1. 配置通知渠道:从设置 --> 通知渠道进入通知渠道管理页面,在通知渠道页面,点击新增按钮,弹出添加通知渠道对话框。在通知渠道对话框中,输入相应信息,然后点击确定按钮,如下图所示。

    通知渠道设置
    Wiseinf Inc.

    其中,通知渠道名称设置为email,主机地址设置为smtp.wiseinf.com、端口设置为465、用户名设置为optimizer@wiseinf.com、密码等,其中SMTP服务器主机地址、端口、用户名、密码等信息是前置条件中获取的SMTP服务器相关信息,需要根据实际情况填写。

    注意:通知渠道对话框配置项说明请参见[添加渠道]/docs/user-guide/management/channel/#添加渠道

  2. 配置通知规则: 从设置 --> 通知规则进入通知规则管理页面,在通知渠道页面,点击新增按钮,弹出添加通知规则对话框。在通知规则对话框中主要包括如下信息:通知接收者信息、关注的优化建议、通知渠道和匹配规则。 请输入相应信息,然后点击确定按钮,如下图所示。

    通知规则设置
    Wiseinf Inc.

    其中,接收者设置为jay@wiseinf.com,通知渠道选择步骤1中创建的email通知渠道,调度时间设置为每日早上8点,优化策略选择节点组推荐,集群选择前置条件中导入的集群,即可,如下图所示。

    注意:通知规则对话框配置项说明请参见[添加通知规则]/docs/user-guide/management/rule/#添加通知规则

  3. 完成上述配置后,可通过邮件定时接受相应的邮件,邮件内容如下图所示。

    节点组优化邮件内容
    Wiseinf Inc.

    从中可知集群中节点组当前的实例类型、自动扩缩容、节点最大值和最小值,优化后的实例类型、自动扩缩容、节点最大值和最小值。用户可以根据这些设置来指导节点组的优化。例如,图中当前的实例类型为r5a.4xlarge,可考虑调整为r6a.larger5a.large等。集群优化平台推荐节点实例时将考虑多种因素:包括节点的价格、节点区域的可用性、节点的架构、集群节点组的CPU、内存用量等。同时,节点组推荐了节点组的节点最大值和最小值,利用推荐值可在动态负载更有效利用自动扩缩容的能力,最大限度的满足集合应用稳定性的情况下,有效降低成本。

了解更多

集群优化平台提供了一系列的能力,便于用户便捷的获取优化推荐通知。

集群优化平台提供了一些列的优化策略,包括低利用率节点、低利用率磁盘、Persistent Volume识别、应用资源推荐、内存溢出等。 集群优化平台中通知规则提供了一系列的匹配规则,用户可以根据需要选择不同的匹配规则,包括对资源所有者包括部门、组、用户)的匹配、名称空间匹配。 用户可使用个性化自定义模板,实现个性化的邮件通知。

参考链接

  1. 集群优化平台安装部署流程
  2. 导入集群
  3. 云智优本官网

6 - 故障排查

描述云原生集群优化平台(Cluster Optimizer)常见故障及原因.

云服务商相关故障

Amazon AWS

  1. 获取AWS凭据失败,日志显示getting credentials: exec: executable aws failed with exit code 253

    主要原因:AWS中访问EKS Kubernetes时使用aws命令获取凭证,Cluster Optimizer中默认没有安装aws,它通过API来获取凭证,因为涉及到自动刷新kubeconfig,需要编辑集群,选中自动刷新Kubeconfig