1

对于kube-prometheus-stack,我们将越来越多的仪表板配置添加到/grafana/dashboards文件夹中,以拥有越来越多的预置仪表板。

然后在一天之内,我们做到了:

kube-prometheus-stack>helm -n monitoring upgrade prometheus ./ -f ./values-core.yaml 

并得到:

Error: UPGRADE FAILED: create: failed to create: Secret "sh.helm.release.v1.prometheus.v16" is invalid: data: Too long: must have at most 1048576 bytes

克服这些限制的设计方法是什么?需要向图表添加越来越多的预配置仪表板。

kubectl version
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.0", GitCommit:"e19964183377d0ec2052d1f1fa930c4d7575bd50", GitTreeState:"clean", BuildDate:"2020-08-26T14:30:33Z", GoVersion:"go1.15", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.5", GitCommit:"aea7bbadd2fc0cd689de94a54e5b7b758869d691", GitTreeState:"clean", BuildDate:"2021-09-15T21:04:16Z", GoVersion:"go1.16.8", Compiler:"gc", Platform:"linux/amd64"}
4

1 回答 1

1

Secret ... is invalid: data: Too long: must have at most 1048576 bytes

这是众所周知的 Kubernetes 机密限制(目前为 1.23 版)。k8s官方文档说:

个人机密的大小限制为 1MiB。这是为了阻止创建会耗尽 API 服务器和 kubelet 内存的非常大的机密。但是,创建许多较小的秘密也可能会耗尽内存。由于机密而对内存使用进行更全面的限制是一项计划中的功能。

因此,首先,检查是否有一些unnecessary files/dirs存储在您的图表目录和remove它们中。我确定您已经删除了所有不必要的文件。

为了解决这些问题,Helm 引入了一个SQL 存储后端

如果您的发布信息超过 1MB(在这种情况下,由于 Kubernetes 的内部限制,它不能存储在 Secrets 中),使用这样的存储后端特别有用。

要启用 SQL 后端,您需要部署 SQL 数据库并将环境变量设置HELM_DRIVERsql. DB 详细信息由环境变量设置HELM_DRIVER_SQL_CONNECTION_STRING

您可以按如下方式在 shell 中设置它:

export HELM_DRIVER=sql
export HELM_DRIVER_SQL_CONNECTION_STRING=postgresql://helm-postgres:5432/helm?user=helm&password=changeme

注意:目前仅支持 PostgreSQL。

如果您想从默认后端切换到 SQL 后端,则必须自己进行迁移。您可以使用以下命令检索发布信息:

kubectl get secret --all-namespaces -l "owner=helm"

你可以在这个 Helm 网页上查看一些建议。

于 2022-02-18T15:55:41.753 回答