云原生集群优化平台(Cluster Optimizer)提供了云原生集群优化能力。
Cluster Optimizer能够帮助用户对云原生集群进行优化,主要功能包括:
- 提供多种优化策略,包括节点组、节点、磁盘、Persistent和应用等多个维度的优化建议。
- 云账户(访问凭据)管理和集群管理。
- 用户管理。
云原生集群优化平台(Cluster Optimizer)提供了云原生集群优化能力。
Cluster Optimizer能够帮助用户对云原生集群进行优化,主要功能包括:
kubectl安装云原生集群优化平台(Cluster Optimizer)的详细步骤.本页面描述了安装一站式云原生集群优化平台(Cluster Optimizer)的详细步骤.
wiseinf-system名称空间以及在此名称空间下创建Deployment、ConfigMap、Service等资源打开命令行控制台,通过下述命令将安装脚本克隆到本地。
git clone https://github.com/wiseinf/setup.git
1,若使用Gitee仓库地址,则需将上述命令中的
https://github.com/wiseinf/setup.git替换为https://gitee.com/wiseinf/setup.git。2,后续步骤假设已将
setup库克隆到用户主目录,若未克隆到用户主目录,则需要根据实际情况调整命令中的文件路径。
通过如下命令创建名称空间wiseinf-system:
kubectl apply -f ~/setup/cluster-optimizer/yaml/namespace.yaml
通过如下命令创建数据库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
...
通过如下命令创建Deployment optimizer:
kubectl apply -f ~/setup/cluster-optimizer/yaml/optimizer.yaml
注意:若期望采用已部署的数据库,请参见使用已部署数据库。
通过如下命令检查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
通过如下命令创建 port-forward 来访问 optimizer 服务:
kubectl port-forward svc/optimizer 8000:80 -n wiseinf-system
打开浏览器,访问地址http://localhost:8000/.
若能够看到 Cluster Optimizer首页,则应用Cluster Optimizer成功部署.
若您希望使用已部署数据库,使用新的用户名和密码来访问Cluster Optimizer,请参考如下步骤:
在命令行控制台执行mysql命令登录到Mysql数据库,其中127.0.0.1为Mysql数据库主机地址,您需要替换成您使用的实际地址。
mysql -h127.0.0.1 -uroot
注意: 如果您使用远程数据库,请确保可以从 Kubernetes 集群访问该数据库。
创建数据库schema optconf(优化配置库) 和 optdata(优化数据库)。
mysql> source ~/setup/cluster-optimizer/sql/create_database.sql
注意:请关注数据丢失风险。若mysql数据库中已经存在
optconf库和optdata库,则上述脚本会先删除库,然后创建新库。
创建新的用户名和密码,并为其设置相应权限。脚本中用户名是optimizer,密码是Optimizer~,您可以按照您的需求调整。
mysql> source ~/setup/cluster-optimizer/sql/create_user.sql
调整Cluster Optimizer配置文件中的数据库信息。编辑文件~/setup/cluster-optimizer/yaml/optimizer.yaml中的ConfigMapoptimizer-conf,将配置项optdata和optconf下的dataSource.name值中的用户名、用户密码、数据库地址和端口调整为Mysql数据库的相应信息。
重启应用,检查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
}
},
...
}
同时,也检查是否有数据库相关报错。若没有相关报错,则证明已使用新的数据库。
下一步,您可以添加一个集群,查看其相关优化建议。详见:
本页描述了通过Helm安装Cluster Optimizer的详细步骤.
wiseinf-system名称空间以及在此名称空间下创建Deployment、ConfigMap、Service等资源通过如下命令添加Helm仓库cluster-optimizer:
helm repo add cluster-optimizer https://wiseinf.github.io/cluster-optimizer/
通过如下命令更新仓库:
helm repo update
通过如下命令查看仓库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。
通过如下命令安装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。
通过如下命令检查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数据库。
注意:若期望采用已部署的数据库,请参见使用已部署数据库。
通过如下命令创建 port-forward 来访问 optimizer 服务:
kubectl port-forward svc/optimizer 8000:80 -n wiseinf-system
打开浏览器,访问地址http://localhost:8000/.
若能够看到 Cluster Optimizer首页,则应用Cluster Optimizer成功部署.
通过命令可以删除demo Chart:
helm uninstall demo
若您希望使用已部署数据库,使用新的用户名和密码来访问Cluster Optimizer,请参考如下步骤:
打开命令行控制台,通过下述命令将安装脚本克隆到本地。
git clone https://github.com/wiseinf/setup.git
1,若使用Gitee仓库地址,则需将上述命令中的
https://github.com/wiseinf/setup.git替换为https://gitee.com/wiseinf/setup.git。2,后续步骤假设已将
setup库克隆到用户主目录,若未克隆到用户主目录,则需要根据实际情况调整命令中的文件路径。
在命令行控制台执行mysql命令登录到Mysql数据库,其中127.0.0.1为Mysql数据库主机地址,您需要替换成您使用的实际地址。
mysql -h127.0.0.1 -uroot
注意: 如果您使用远程数据库,请确保可以从 Kubernetes 集群访问该数据库。
创建数据库schema optconf(优化配置库) 和 optdata(优化数据库)。
mysql> source ~/setup/cluster-optimizer/sql/create_database.sql
注意:请关注数据丢失风险。若mysql数据库中已经存在
optconf库和optdata库,则上述脚本会先删除库,然后创建新库。
创建新的用户名和密码,并为其设置相应权限。脚本中用户名是optimizer,密码是Optimizer~,您可以按照您的需求调整。
mysql> source ~/setup/cluster-optimizer/sql/create_user.sql
创建文件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是端口,user和password分别是用户名和密码。
通过如下命令安装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
重启应用,检查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
}
},
...
}
同时,也检查是否有数据库相关报错。若没有相关报错,则证明已使用新的数据库。
下一步,您可以添加一个集群,查看其相关优化建议。详见:
本页面描述了安装商业版本的详细步骤.
打开命令行控制台,通过下述命令将安装脚本克隆到本地。
git clone https://github.com/wiseinf/setup.git
1,若使用Gitee仓库地址,则需将上述命令中的
https://github.com/wiseinf/setup.git替换为https://gitee.com/wiseinf/setup.git。2,后续步骤假设已将
setup库克隆到用户主目录,若未克隆到用户主目录,则需要根据实际情况调整命令中的文件路径。
调整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
调整Cluster Optimizer配置文件中的数据库信息。编辑文件~/setup/cluster-optimizer/yaml/optimizer.yaml中的ConfigMapoptimizer-conf,添加下述配置项。
license:
certificate: {获取的授权证书}
signature: {获取的授权签名}
通过如下命令部署Deployment optimizer:
kubectl apply -f ~/setup/cluster-optimizer/yaml/optimizer.yaml
注意: 1、若
Deploymentoptimizer的Pod没有重启,请通过kubectl delete pod -l app=optimizer -n wiseinf-system删除Deploymentoptimizer的Pod,然后重新创建。` 2、若期望采用已部署的数据库,请参见使用已部署数据库。
检查日志输出,确认Deployment optimizer的Pod状态为Running。
打开浏览器,访问地址http://localhost:8000/init,可以访问商业版本的初始化页面。在页面中输入用户名称、密码、邮箱、手机号等信息,并点击确定按钮,即可完成系统初始化工作。
访问地址http://localhost:8000/user/login,输入用户名和密码,即可登录系统。
至此,您已经将系统升级为商业版本。
若您希望使用已部署用户数据库,使用新的用户名和密码来访问Cluster Optimizer,请参考如下步骤:
在命令行控制台执行mysql命令登录到Mysql数据库,其中127.0.0.1为Mysql数据库主机地址,您需要替换成您使用的实际地址。
mysql -h127.0.0.1 -uroot
注意: 如果您使用远程数据库,请确保可以从 Kubernetes 集群访问该数据库。
创建数据库schema user(用户库)。
mysql> source ~/setup/cluster-optimizer/sql/create_user_database.sql
注意:请关注数据丢失风险。若mysql数据库中已经存在
user库,则上述脚本会先删除库,然后创建新库。
创建新的用户名和密码,并为其设置相应权限。脚本中用户名是optimizer,密码是Optimizer~,您可以按照您的需求调整。
mysql> source ~/setup/cluster-optimizer/sql/create_user_user.sql
调整Cluster Optimizer配置文件中的数据库信息。编辑文件~/setup/cluster-optimizer/yaml/optimizer.yaml中的ConfigMapoptimizer-conf,将配置项user下的dataSource.name值中的用户名、用户密码、数据库地址和端口调整为Mysql数据库的相应信息。
重启应用,检查Cluster Optimizer的日志输出(如下所示),查看数据库配置信息是否与您的预期一致。
{
...
"user": {
"dataSource": {
"name": "optimizer:Optimizer~@tcp(127.0.0.1:3306)/optconf?createDatabaseIfNotExist=true\u0026charset=utf8mb4\u0026parseTime=true\u0026loc=Local",
"maxOpenConns": 10
}
},
...
}
同时,也检查是否有数据库相关报错。若没有相关报错,则证明已使用新的数据库。
下一步,您可以添加一个集群,查看其相关优化建议。详见:
本节描述导入阿里云集群的详细步骤。
获取阿里云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": {}
}
]
}
阿里云Kubernetes集群Kubeconfig。集群版本1.22及以上,建议使用ACK集群。具体请参见容器服务Kubernetes版。
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
Prometheus监控或者Thanos监控。该监控用于给集群中的节点、容器等提供监控数据。
选择设置菜单,选择云账户标签页即可进入云账户管理页面。默认情况下,该页面将分页展示平台管理的所有云账户,包括名称以及相应的云服务商,同时也提供了操作栏,方便用户进行相应的操作,如下图所示。
云账户管理主页面
Wiseinf Inc.
在云账户管理页面,点击新增按钮,即可添加云账户,其界面如下所示。在此界面中,用户依次输入云账户名称、选择相应的云服务商、输入Access Key和Access Key Secret,点击确定按钮,即可完成云账户添加。添加完参数后,用户也可以点击测试连通性按钮,测试该云账户是否正确。平台目前支持阿里云,可从云服务商下拉框处进行选择。Access Key和Access Key Secret为访问该云服务的账号信息,请从相应的云服务商处获取。
添加云账户界面
Wiseinf Inc.
选择
集群管理主页面
设置菜单,选择集群标签进入集群管理页面。默认情况下,该页面将分页展示平台管理的所有集群,包括名称、集群ID集群地域、Access Token名称,对应的云服务商以及Prometheus地址,同时也提供了操作栏,方便用户进行相应的操作,如下图所示。
Wiseinf Inc.
点击导入集群按钮即弹出导入对话框,可在此导入集群。导入集群分为5个步骤,目前仅支持阿里云集群。
设置阿里云访问凭据界面如下图所示。在阿里云访问凭据界面,通过使用已有凭据来设置阿里云访问凭据,此处选择
导入集群界面-设置阿里云访问凭据
添加阿里云账号中添加的阿里云账号,如下图所示。
Wiseinf Inc.
设置完阿里云访问凭据后,点击下一步按钮,即可进入连接Kubernetes集群页面,如下图所示。平台支持连接2种类型的Kubernetes集群,包括托管集群和自建集群。连接托管集群页面如下图所示。此处我们选择托管集群,平台通过云账户自动获取用户集群,用户通过集群下拉框来选择相应的集群、输入描述字段、选择是否使用API Server私网地址、选择是否自动刷新KubeConfig以及KubeConfig生命周期,最后输入节点组标签即可。
连接Kubernetes集群页面
Wiseinf Inc.
连接Prometheus页面如下图所示。用户在此页面输入信息后,点击下一步按钮进入查看配置页面。输入信息明细如下表所示。
连接Prometheus页面
Wiseinf Inc.
| 参数 | 描述 |
|---|---|
| 是否Thanos | 若后端集群为Thanos,则应勾选此项。 |
| Prometheus地址 | Prometheus地址,必须可访问。 |
| 限制访问速率 | 若需要现在平台对Prometheus的访问速率,则应勾选此项。 |
| 最大并发数 | 平台访问Prometheus的最大并发数。 |
| 集群标签 | 集群标签用于从Prometheus或者Thanos中筛选该集群的监控指标 |
| 集群标签值 | 集群标签值用于从Prometheus或者Thanos中筛选该集群的监控指标 |
查看配置页面如下图所示,该页面显示了阿里云访问凭据、连接Kubernetes集群和连接Prometheus集群的详细参数,方便用户确认。当用户完成确认后,点击导入按钮,即可进入完成页面。
查看配置页面
Wiseinf Inc.
完成页面如图下图所示,页面将显示提交情况。点击完成,即完成集群导入。
完成页面
Wiseinf Inc.
导入集群完成后,等待一段时间(等待优化策略完成调度和执行),即可查看该集群多个维度的优化建议,包括:
本节描述导入AWS EKS集群的详细步骤。
需要提供一个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": "*"
}
]
}
一个Kubernetes集群,版本1.22及以上,推荐使用EKS集群.
需要提供一个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
集群所对应的Prometheus/Thanos地址。
应用需要能够访问EKS集群和Prometheus/Thanos。
从
云账户管理
设置 --> 云账号进入云账号管理页面,如下图。
Wiseinf Inc.
单击
添加云账号
新增按钮添加云帐户。 可以输入名称,选择Amazon AWS作为云提供商,然后输入Access Key和Access Key Secret,最后单击确认。
Wiseinf Inc.
输入
Access Key和Access Key Secret后,您还可以通过单击底部测试连通性按钮来测试访问凭据是否能够正常连接到云提供商。
从设置 --> 集群进入集群管理页面,如下图。
集群管理
Wiseinf Inc.
单击导入集群按钮,然后单击AWS云提供商徽标以开始从AWS导入集群。 它包含五个步骤:
在连接AWS步骤中,选择使用已有凭据,选择添加云帐户部分中创建的云帐户,如下图。
导入集群:连接到 AWS
Wiseinf Inc.
然后单击下一步按钮转到连接kubernetes步骤。
在
导入集群:连接kubernetes集群
连接kubernetes步骤中,选择Managed cluster,如下图。
Wiseinf Inc.
地域,然后选择集群,然后输入以下配置项:
| 配置项 | 描述 |
|---|---|
描述 |
集群描述 |
使用私有API Server私有地址 |
是否使用私有API Server地址。 |
Kubeconfig |
连接到集群的Kubeconfig。 |
自动刷新Kubeconfig |
是否自动刷新kubeconfig。 |
节点组标签 |
用于标识节点所属的节点组。 对于EKS,默认值为eks.amazonaws.com/nodegroup。 |
注意:鉴于平台不使用AWS客户端来获取用户身份验证信息,如果您的
Kubeconfig配置项中获取用户身份信息依赖于aws get token命令,则必须启用自动刷新 Kubeconfig。这确保了平台动态获取用户身份验证详细信息。
然后单击下一步按钮转到连接Metrics服务步骤。
在连接Metrics服务步骤中,输入以下配置项,如下所示。
| 配置项 | 描述 |
|---|---|
是否Thanos |
若Metrics Server是 Thanos,则应选中此项。 |
Metrics服务地址 |
Metrics服务器地址,目前支持Prometheus和Thanos。 |
限制访问速率 |
是否取用到Metrics服务地址的访问速率限制。 |
最大并发数 |
指定访问Metrics服务地址的最大并发数。 |
集群标签 |
用作标签名称,用于从Metrics服务过滤集群的指标。 |
集群标签值 |
用作标签值,用于从Metrics服务过滤集群的指标。 |
导入集群:连接Metrics服务
Wiseinf Inc.
然后单击下一步按钮转到查看配置步骤。
在
导入集群:查看配置
查看配置步骤中,显示连接AWS、连接Kubernetes、连接Metrics服务的配置。您可以检查配置是否符合预期。
Wiseinf Inc.
导入按钮转到完成步骤。
在完成步骤中,会显示提交状态,如下图。 当提交状态显示集群已导入时,您可以点击完成按钮。
导入集群:完成
Wiseinf Inc.
导入集群后,您可以查看集群多个方面的优化建议,包括:
查看平台中连接的集群。
点击平台左侧菜单栏的集群,显示集群概览页,如下图所示。
集群概览页
Wiseinf Inc.
主展示区将展示平台管理的集群列表。包括集群(集群名称和集群ID)、集群地域、Access Token名称、云服务商、Prometheus地址、健康状态等信息。
在商业版本中,额外提供了集群状态和操作栏,如下图所示:
集群概览页:商业版
Wiseinf Inc.
集群状态用户展示集群相应状态,便于用户了解集群状态。主要包括:
集群操作栏用户对集群进行操作,包括:
集群休眠通过合理的管理集群中的节点,来降低集群的资源占用,节约成本,假设集群在周一至周五晚上9点开始休眠,周一至周五早上8点开始唤醒(也就是结束休眠),则机器成本节约可高达54.8%。设置集群休眠可以设置集群的休眠时间和唤醒时间。在休眠时间,将集群中的负载的状态进行存储,同时逐步释放集群中的节点资源。在唤醒时间,系统逐步恢复集群中的节点资源,同时恢复负载的原有状态。集群休眠特别适用于开发、测试等线下环境。
点击操作栏中的设置集群休眠,弹出对话框如下所示:
设置集群休眠
Wiseinf Inc.
在是否启用休眠选项中选择启用,然后设置具体的休眠时间和唤醒时间,点击确定按钮即可。默认休眠时间是周一至周五晚上9点,默认唤醒时间是周一至周五早上8点。
若想取消集群休眠,在是否启用休眠选项中选择不启用,点击确定按钮即可。
集群休眠时将使用用户提供的集群访问账号来操作集群。您需要设置集群访问账号,具体请参见设置集群访问账号。
注意:
休眠时间和唤醒时间间隔必须大于2小时。
鼠标移至...,点击立即休眠按钮,即可立即将集群休眠。
鼠标移至...,点击立即唤醒按钮,即可立即将集群唤醒。
鼠标移至...,点击日志按钮,即可查看集群休眠或唤醒相关日志。
描述了一站式云原生集群优化平台(Cluster Optimizer)提供的节点组优化操作。
点击平台左侧菜单栏的节点组菜单,则显示节点组页,如下图所示。节点组页分为3个区:
节点组页
Wiseinf Inc.
用户选择具体的集群后,列表区显示分为5栏:
节点组页-选择完集群
Wiseinf Inc.
点击上图中的调整链接,可打开调整节点组对话框,如下图所示。
调整节点组对话框
Wiseinf Inc.
注意:当前仅展示调整节点组的相关操作。后续将提供自动化动作,可在用户确认完设置之后自动化进行调整。
描述了节点相关信息及优化建议。
点击平台左侧菜单栏的节点菜单,则显示节点页,如下图所示。
节点页
Wiseinf Inc.
节点页分为3个区:
选择集群的节点页如下所示:
节点页-选择集群
Wiseinf Inc.
列表区显示分为5栏:
点击调整链接可打开调整节点对话框,对话框中展示了详细的调整信息和推荐的调整方案,如下图。
调整节点页
Wiseinf Inc.
注意:当前仅展示调整节点的相关操作。后续将提供自动化动作,可在用户确认完设置之后自动化进行调整。
描述了GPU节点相关信息及优化建议。
点击平台左侧菜单栏的GPU节点菜单,则显示GPU节点页,如下图所示。
GPU节点
Wiseinf Inc.
GPU节点分为3个区域:
选择集群后,GPU节点列表区将显示该集群下满足条件的GPU节点列表,如下所示:
Node: cluster selected
Wiseinf Inc.
The list area is divided into five columns:
列表区显示分为5栏:
点击操作栏中的调整链接可打开调整节点对话框,如下图所示。
Node: Adjust node
Wiseinf Inc.
注意:当前仅展示调整GPU节点的相关操作。后续将提供自动化动作,可在用户确认完设置之后自动化进行调整。
描述了磁盘相关信息及优化建议。
点击平台左侧菜单栏的磁盘菜单,则显示磁盘页,如下图所示。
磁盘页
Wiseinf Inc.
磁盘页分为3个区:
选择集群后的磁盘页如下所示:
磁盘页-选择集群
Wiseinf Inc.
列表区显示分为4栏:
点击调整链接可打开调整磁盘大小对话框,其中展示了磁盘详细的调整信息和推荐的调整方案,如下图。
调整磁盘页
Wiseinf Inc.
描述了Persistent Volume相关信息及优化建议。
点击平台左侧菜单栏的Persistent Volume菜单,则显示Persistent Volume页,如下图所示。
Persistent Volume页
Wiseinf Inc.
Persistent Volume页分为3个区:
选择集群后的Persistent Volume页如下所示:
Persistent Volume页-选择集群
Wiseinf Inc.
列表区显示分为5栏:
未使用PV和低利用率PV两大优化策略,对于未使用PV策略来说,其PV用量为空。选择策略名称栏是未使用PV的行,点击该行操作栏中的删除链接可打开删除Persistent Volume对话框,其中展示了Persistent Volume详细信息和推荐方案。
在社区版中对话框展示如下图所示。
删除Persistent Volume对话框
Wiseinf Inc.
在商业版中对话框展示如下图所示。
删除Persistent Volume对话框
Wiseinf Inc.
点击对话框中的确定按钮,则创建任务删除该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的费用。
描述了应用详情以及优化建议。
点击平台左侧菜单栏的应用菜单,则显示应用页,如下图所示。
应用
Wiseinf Inc.
应用页分为3个区:
集群选择区选择集群后,平台默认聚合所有策略的结果,以列表方式展示,如下图所示。
应用:选择集群
Wiseinf Inc.
若策略名称为资源推荐,则列表区如上图所示。列表区显示分为6栏,分别是:
点击调整链接可打开调整资源额度对话框,其中展示应用详情、推荐值及相应调整语句。
在社区版中展示如下图所示。
应用:调整资源额度对话框
Wiseinf Inc.
在商业版中展示如下图所示。
应用:调整资源额度对话框
Wiseinf Inc.
在商业版本中,点击确定按钮,将自动创建任务,自动化的进行资源调整。
若策略名称为未设置资源配额,则列表区展示如下图所示:
应用:选择未设置资源配额策略
Wiseinf Inc.
列表区显示分为6栏,分别是:
点击上图中的调整链接可打开设置应用资源额度对话框,其中展示应用详情、推荐值及相应调整语句。
在社区版中展示如下图所示。
应用:设置应用资源额度对话框
Wiseinf Inc.
在商业版中展示如下图所示。
应用:调整资源额度对话框
Wiseinf Inc.
在商业版本中,点击确定按钮,将自动创建任务,自动化的进行资源调整。
若策略名称为内存溢出,则列表区展示如下图所示:
应用:选择内存溢出策略
Wiseinf Inc.
列表区显示分为6栏,分别是:
点击调整链接可打开调整应用内存大小对话框,其中展示应用详情、推荐内存限制值及相应调整语句。
在社区版中展示如下图所示。
应用:调整应用内存大小对话框
Wiseinf Inc.
在商业版中展示如下图所示。
应用:调整资源额度对话框
Wiseinf Inc.
在商业版本中,点击确定按钮,将自动创建任务,自动化的进行资源调整。
描述任务管理。
点击顶部右侧的任务图标,如下图所示。
任务管理页
Wiseinf Inc.
则显示任务管理页,如下图所示。
任务管理页
Wiseinf Inc.
任务管理页分为2个区:
在查询区中,策略名称目前提供未使用PV、应用资源推荐、未使用资源配额、内存溢出等4项。任务状态包括运行中、运行成功和运行失败。
列表区显示分为6栏:
任务的创建由相应的策略负责,请参见:
描述个人账户设置相关操作。
点击顶部左侧导航栏的用户头像,如下图所示。在展开的菜单上点击个人设置,即可进入个人设置页面。
个人设置菜单
Wiseinf Inc.
在个人设置页面,点击个人账户标签,即可查看和更新个人信息,如下图所示。
个人设置页面
Wiseinf Inc.
具体字段名和描述请参见下表。
| 字段名 | 描述 |
|---|---|
| 名称 | 用户名称, 必选 |
| 姓 | 用户姓,可选 |
| 名 | 用户名,可选 |
| 电子邮箱 | 用户电子邮箱,必选 |
| 密码 | 用户登录密码,必选 |
| 确认密码 | 确认用户登录密码,必选 |
| 手机号 | 用户手机号,必选 |
| 用户角色 | 目前,系统提供管理员和用户两种角色,默认为用户,必选 |
| 区域设置 | 目前支持中文和英文区域设置。 |
按照字段名输入相应信息,点击确定按钮,即可修改个人信息。
翻译:
本节介绍了管理访问密钥的相关操作。
要查看和管理您的访问密钥,请按照以下步骤操作:
个人设置 以进入个人设置页面。访问密钥 标签,查看和管理您的访问密钥,如下所示。
访问密钥列表
Wiseinf Inc.
下表详细描述了该部分可用的字段:
| 字段名称 | 描述 |
|---|---|
| Access Key ID | 访问密钥的 ID。 |
| Access Key Secret | 访问密钥的密钥。 |
| 状态 | 访问密钥的状态,如启用、禁用和删除。 |
| 创建时间 | 访问密钥的创建时间。 |
| 操作 | 可用于管理访问密钥的操作。 |
要创建新的访问密钥,请点击 访问密钥 表格右上角的 新增 按钮。系统将自动生成访问密钥,并将其列入表中。
禁用访问密钥:
操作 列中的 禁用 按钮。注意:禁用访问密钥将导致任何使用该密钥的任务失败。
要启用访问密钥,请点击 操作 列中的 启用 按钮。
删除访问密钥:
操作 列中的 删除 按钮。注意:删除访问密钥将导致任何使用该密钥的任务失败。
要显示或隐藏访问密钥密钥,点击 Access Key Secret 列中的 显示 或 隐藏 按钮。
描述管理个人集群访问账户的相关操作。
点击顶部左侧导航栏的用户头像,如下图所示。在展开的菜单上点击个人设置,即可进入个人设置页面。
在个人设置页面,点击集群访问账户标签,即可查看和管理集群访问账户,如下图所示。
集群访问账户列表
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.
删除集群访问账户之前,将弹出删除确认对话框,确认后执行删除操作。
描述用户管理的相关操作。
从设置 --> 用户进入用户管理页面,如下图。
用户管理页
Wiseinf Inc.
用户管理页面将以列表的形式展示用户。主要包括5栏:
点击用户管理页面上方的增加按钮,将弹出添加用户对话框,如下图。
添加用户对话框
Wiseinf Inc.
具体字段名和描述请参见下表。
| 字段名 | 描述 |
|---|---|
| 名称 | 用户名称, 必选 |
| 姓 | 用户姓,可选 |
| 名 | 用户名,可选 |
| 电子邮箱 | 用户电子邮箱,必选 |
| 密码 | 用户登录密码,必选 |
| 确认密码 | 确认用户登录密码,必选 |
| 手机号 | 用户手机号,必选 |
| 用户角色 | 目前,系统提供管理员和用户两种角色,默认为用户,必选 |
按照字段名输入相应信息,点击确定按钮,即可添加用户。
点击用户管理页面列表中的编辑按钮,将弹出编辑用户对话框,如下图。
编辑用户对话框
Wiseinf Inc.
具体字段名和描述同添加用户一致,不在赘述。
点击用户管理页面的删除按钮,将删除用户。
删除用户
Wiseinf Inc.
删除用户之前,将弹出删除确认对话框,确认后执行删除操作。
描述如何管理通知渠道,包括查看,添加、更新或者删除通知渠道。
从设置 --> 通知渠道进入通知渠道管理页面,如下图。
通知渠道管理页
Wiseinf Inc.
通知渠道管理页面将以列表的形式展示通知渠道。主要包括5栏:
点击通知渠道管理页面上方的新增按钮,选择通知渠道类型,并填写通知渠道信息,如下图。
添加通知渠道对话框
Wiseinf Inc.
具体字段名和描述请参见下表。
| 字段名 | 描述 |
|---|---|
| 名称 | 通知渠道名称 |
| 渠道类型 | 通知渠道类型,目前仅支持Email |
| 主机 | Email SMTP主机名,例如 smtp.wiseinf.com |
| 端口 | Email SMTP端口,例如 25, 465 |
| 启用SSL | 是否启用SSL,默认为不启用 |
Email地址,例如 admin@wiseinf.com |
|
| 发送者名称 | 发送者名称,例如 Wiseinf |
| 密码 | Email SMTP密码 |
| 参数列表 | 用户自定义参数列表,为键值对方式,该参数列表会传递到通知渠道的模板中,可通过{{.param.参数名}}的方式在模板中引用。 |
按照字段名输入相应信息,点击确定按钮,即可添加通知渠道。
具体上述字段的取值,您可以咨询您的邮件服务商,或者是邮件系统管理员。
更新通知渠道,点击通知渠道管理页面列表中的编辑按钮,将更新通知渠道信息,如下图。
编辑通知渠道对话框
Wiseinf Inc.
具体字段名和描述同添加渠道一致,不在赘述。
点击通知渠道管理页面列表中的的删除按钮,将删除通知渠道,如下图。
编辑通知渠道对话框
Wiseinf Inc.
删除通知渠道之前,将弹出删除确认对话框,用户确认后执行删除操作。
注意:当该通知渠道被通知规则所使用时,会提示删除不成功。应该首先删除使用该通知渠道的通知规则后,然后再删除该通知渠道。
描述管理通知规则的详细信息。
从设置 --> 通知规则进入通知规则管理页面,如下图。
通知规则管理页
Wiseinf Inc.
通知规则管理页面将以列表的形式展示通知渠道。主要包括5栏:
点击通知规则管理页面上方的增加按钮,将弹出添加通知规则对话框,如下图。
添加通知规则对话框
Wiseinf Inc.
具体字段名和描述请参见下表。
| 字段名 | 描述 |
|---|---|
| 名称 | 通知渠道名称 |
| 接收者 | 通知接收者地址,比如 admin@wiseinf.com |
| 通知渠道 | 可通过下拉框选择具体的通知渠道名 |
| 调度时间 | 设置该规则的具体调度时间。 |
| 优化策略 | 选择具体的优化策略 |
| 集群 | 选择需要关注的集群 |
| 名称空间 | 输入名称空间名,空值将匹配所有名称空间 |
| 部门 | 输入部门名,空值将匹配所有部门名称 |
| 组 | 输入组名,空值将匹配所有组名 |
| 用户 | 输入用户名,空值将匹配所有用户名 |
| 模板ID | 模板ID名,默认值为default |
| 参数列表 | 用户自定义参数列表,为键值对方式,该参数列表会传递到通知渠道的模板中,可通过{{.param.参数名}}的方式在模板中引用。通知渠道参数列表中的同名参数将覆盖。 |
按照字段名输入相应信息,点击确定按钮,即可添加通知规则。
更新通知渠道,点击通知渠道管理页面列表中的编辑按钮,将弹出添加通知规则对话框,如下图。
编辑通知规则对话框
Wiseinf Inc.
具体字段名和描述同添加通知规则一致,不在赘述。
点击通知渠道管理页面的删除按钮,将删除通知规则。
删除通知规则
Wiseinf Inc.
删除通知规则之前,将弹出删除确认对话框,用户确认后执行删除操作。
描述了云原生集群优化平台(Cluster Optimizer)提供的集群优化操作。
集群优化操作主要包括:
描述了调整节点池的操作。
想了解更多细节,请参考:编辑节点池
描述Cluster Optimizer的配置参数。
描述云原生集群优化平台的命令行参数。
通过 --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。
描述云原生集群优化平台配置文件的配置参数。
云原生集群优化平台必须依赖于配置文件才能运行。可通过命令行参数--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.name和maxOpenConns,下面分别进行阐述。
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.name和maxOpenConns,其含义与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表示是否启用该优化策略,默认值是true。cron设置该策略的调度参数。parameters为策略提供配置,不同的策略,其参数存在差异,下面分别说明。
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]* |
Node Recommendation| 参数名 | 默认值 | 描述 |
|---|---|---|
duration |
24小时 | 时间范围,取值是Duration。 |
step |
24小时 | 时间范围步长,取值是Duration。 |
resolution |
2分钟 | 查询分辨率,取值是Duration。 |
cpuStep |
1 | CPU最小步长,单位核 |
memoryStep |
1 | 内存最小步长,单位GB |
cpuMaxUsage |
0.6 | 节点最大CPU利用率 |
memoryMaxUsage |
0.8 | 节点最大内存利用率 |
Underutilized Node| 参数名 | 默认值 | 描述 |
|---|---|---|
duration |
24小时 | 时间范围,取值是Duration |
step |
24小时 | 每批范围,取值是Duration |
resolution |
2分钟 | 查询分辨率 |
cpuAvgThreshold |
0.2 | CPU平均利用率阈值 |
cpuMaxThreshold |
0.6 | CPU最大利用率阈值 |
memoryAvgThreshold |
0.3 | 内存平均利用率阈值 |
memoryMaxThreshold |
0.6 | 内存最大利用率阈值 |
Underutilized GPU Node。| 参数名 | 默认值 | 描述 |
|---|---|---|
duration |
24 | 时间范围,取值是Duration,默认值24小时 |
step |
24 | 每批范围,取值是Duration,默认值24小时 |
resolution |
2 | 查询分辨率,单位分钟 |
gpuAvgThreshold |
0.2 | GPU平均利用率阈值 |
gpuMaxThreshold |
0.8 | GPU最大利用率阈值 |
Underutilized Disk| 参数名 | 默认值 | 描述 |
|---|---|---|
duration |
24 | 时间范围,取值是Duration,默认值24小时 |
step |
24 | 每批范围,取值是Duration,默认值24小时 |
resolution |
2 | 查询分辨率,单位分钟 |
threshold |
0.3 | 磁盘利用率阈值,低于此阈值,我们认为利用率低。 |
Unused PV| 参数名 | 默认值 | 描述 |
|---|---|---|
boundDuration |
1 | 持久化存储卷绑定周期,默认值1小时。若在持久化存储卷绑定周期未绑定且未关联Persistent Volume Claim,则认为该存储卷未被使用。 |
Underutilized PV| 参数名 | 默认值 | 描述 |
|---|---|---|
duration |
24 | 时间范围,取值是Duration,默认值24小时 |
step |
24 | 每批范围,取值是Duration,默认值24小时 |
resolution |
2 | 查询分辨率,单位分钟 |
threshold |
0.3 | PV利用率阈值,低于此阈值,我们认为利用率低。 |
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 | 节点最大内存利用率 |
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 | 节点最大内存利用率 |
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
其中,accessKeyID和accessKeySecret是腾讯云短信服务的密钥,分别对应云API密钥上申请的标识身份的SecretId及其对应的SecretKey。
signName是短信签名,template是短信模板ID,extra是额外参数,在腾讯云短信服务中,extra是应用ID,分为对应于发送短信接口中的SignName、TemplateId和SmsSdkAppId.
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 |
包含离线提供的许可证加密签名。此签名用于验证许可证证书的完整性和真实性,确保其未被篡改。 |
翻译:
本节提供了集群优化器 API 的参考信息。
集群优化器 API 是一个强大的工具,允许用户通过编程方式与云原生集群优化流程进行交互和自动化操作。通过提供 RESTful 端点,该 API 使用户能够将集群优化器与第三方应用集成、自动化任务执行,并检索有关资源利用率和成本节约机会的详细报告。
REST API 是集群优化器的基础架构。集群优化器提供了一个 REST API,允许您执行以下操作:
注意:
- 集群优化器 API 仅在商业版(版本 1.3.1 及以上)中可用。
- 集群优化器 API 处于 alpha 阶段,未来可能会更改接口。
本节描述了 Cluster Optimizer API 认证的详细步骤。
通过 HTTP API 进行身份验证对于保护资源和确保只有授权用户和服务可以访问数据至关重要。
Cluster Optimizer API 通过 HTTP 头 Authorization 提供身份验证。示例如下:
GET /api/resource HTTP/1.1
Host: api.example.com
Authorization: Bearer <Access_Token>
要使用 Access Key 和 Access Key Secret 生成 Access Token,通常使用签名算法(如 HMAC)来创建唯一的安全密钥,用于 API 请求的身份验证。以下是生成 API 密钥的详细步骤:
您通常会获得 Access Key(公开标识符)和 Access Key Secret(私有标识符)。Access Key 用于标识客户端,Access Key Secret 用于安全地签署和验证 API 请求。
在生成签名的 API 密钥之前,您需要创建一个消息,将几个元素通过 : 作为分隔符组合:
例如(在 Go 语言中):
message := fmt.Sprintf("%s:%d:%s", accessKeyID, timestamp, nonce)
在此示例中,accessKeyID 是客户端的访问密钥 ID,timestamp 是以纳秒为单位的时间戳,nonce 是一个随机字符串。
接下来使用 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 Secret 和 HMAC-SHA256 算法对消息进行哈希处理来生成 signature。
生成签名后,您可以通过组合 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
}
您可以使用生成的访问令牌以及 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:
描述使用Cluster Optimizer的常用场景和最佳实践。
描述通过Cluster Optimizer设置周期性的优化建议通知机制,方便通过邮件获取相应的优化建议。
在Kubernetes集群运营过程中,我们经常需要定期获取关键指标或信息,并将这些信息通过邮件或其他通知方式传达给相关用户。周期性的通知机制可以使得用户能够根据收到的信息进行必要的调整和优化操作。
集群优化平台能够自动监测集群中可能出现的问题和潜在优化点,如节点利用率低、应用内存溢出、未使用的Persistent Volume等,并生成包含详细信息和推荐参数的优化建议,通过邮件通知用户。例如,当检测到某个应用内存溢出时,系统会自动收集相关信息,并将这些信息发送给该应用的负责人或责任人。这不仅提高了问题响应的效率,也确保了集群资源的高效利用和应用的稳定运行。通过此方式,用户可以更加主动地管理和维护集群和集群中的应用,提升整体运营效能。
用户想通过邮件获取常见的优化建议信息,例如:节点利用率低、应用内存溢出、Persistent Volume未被使用等,并针对这些优化建议信息执行相应的操作。 本文将以配置节点组优化建议为例,概述如何配置Cluster Optimizer,使其能够提供周期性的优化建议通知。
假设我们期望将集群中的节点组优化建议在每日早上8点通过邮件通知用户Jay(邮箱地址是jay@wiseinf.com),具体前置条件和配置流程如下。
假设用户有如下需求:
Jay(邮箱地址是jay@wiseinf.com)集群优化平台通过如下两个组件来为用户提供通知:
下面将描述通过集群优化平台配置通知渠道和通知规则,使其能够满足上述用户需求。
配置通知渠道:从设置 --> 通知渠道进入通知渠道管理页面,在通知渠道页面,点击新增按钮,弹出添加通知渠道对话框。在通知渠道对话框中,输入相应信息,然后点击确定按钮,如下图所示。
通知渠道设置
Wiseinf Inc.
其中,通知渠道名称设置为email,主机地址设置为smtp.wiseinf.com、端口设置为465、用户名设置为optimizer@wiseinf.com、密码等,其中SMTP服务器主机地址、端口、用户名、密码等信息是前置条件中获取的SMTP服务器相关信息,需要根据实际情况填写。
注意:通知渠道对话框配置项说明请参见[添加渠道]/docs/user-guide/management/channel/#添加渠道
配置通知规则: 从设置 --> 通知规则进入通知规则管理页面,在通知渠道页面,点击新增按钮,弹出添加通知规则对话框。在通知规则对话框中主要包括如下信息:通知接收者信息、关注的优化建议、通知渠道和匹配规则。
请输入相应信息,然后点击确定按钮,如下图所示。
通知规则设置
Wiseinf Inc.
其中,接收者设置为jay@wiseinf.com,通知渠道选择步骤1中创建的email通知渠道,调度时间设置为每日早上8点,优化策略选择节点组推荐,集群选择前置条件中导入的集群,即可,如下图所示。
注意:通知规则对话框配置项说明请参见[添加通知规则]/docs/user-guide/management/rule/#添加通知规则
完成上述配置后,可通过邮件定时接受相应的邮件,邮件内容如下图所示。
节点组优化邮件内容
Wiseinf Inc.
从中可知集群中节点组当前的实例类型、自动扩缩容、节点最大值和最小值,优化后的实例类型、自动扩缩容、节点最大值和最小值。用户可以根据这些设置来指导节点组的优化。例如,图中当前的实例类型为r5a.4xlarge,可考虑调整为r6a.large、r5a.large等。集群优化平台推荐节点实例时将考虑多种因素:包括节点的价格、节点区域的可用性、节点的架构、集群节点组的CPU、内存用量等。同时,节点组推荐了节点组的节点最大值和最小值,利用推荐值可在动态负载更有效利用自动扩缩容的能力,最大限度的满足集合应用稳定性的情况下,有效降低成本。
集群优化平台提供了一系列的能力,便于用户便捷的获取优化推荐通知。
集群优化平台提供了一些列的优化策略,包括低利用率节点、低利用率磁盘、Persistent Volume识别、应用资源推荐、内存溢出等。 集群优化平台中通知规则提供了一系列的匹配规则,用户可以根据需要选择不同的匹配规则,包括对资源所有者包括部门、组、用户)的匹配、名称空间匹配。 用户可使用个性化自定义模板,实现个性化的邮件通知。