如何从 pod 运行 pgbench,而无需每次都输入密码 [Kubernetes] [CloudNativePG]

问题描述 投票:0回答:2

我是 Kubernetes 的用户,我正在将 CloudNativePG Operator 版本 1.20.1 与 PostgreSQL 一起使用。目前,我正在使用 pgbench 工具对集群进行测试。然而,当我从 Kubernetes 所在的控制台执行该工具时,它遇到了严重的延迟问题。

为了解决这个问题,我想到了从相邻集群执行 pgbench,这会产生更好的结果。然而,当我尝试在不手动输入密码的情况下执行基准测试时,我遇到了挑战。这变得至关重要,因为我需要在多个集群上执行相同的基准测试,并且我想使用 bash 文件或任何其他合适的方法来自动化该过程。

我想用来运行工作台的命令如下:

kubectl exec <pod-where I launch the bench> -- bash -c "pgbench -h <Host> -p <port> -U pgbench_user -j 1 -c 20 -T 20 pgbench_db"

此命令背后的目的是使用 kubectl exec 在特定 pod 中运行 pgbench 工具。不过,由于我还没有解决密码认证问题,所以一直没能成功执行这个命令。

我尝试研究 .pgpass 文件的用法来自动执行 pgbench,而无需手动输入密码。但是,我在尝试在主目录中创建 .pgpass 文件时遇到了问题。系统提示我无法在那里创建文件。

我目前正在探索替代方法或解决方法来自动执行 pgbench,而无需手动输入密码。

谢谢你

postgresql kubernetes pgbench cloudnative-pg
2个回答
1
投票

推荐的方法是使用

cnpg
kubectl
插件来生成一个使用秘密运行 pgbench 的 Job 对象,甚至使用
--dry-run
选项。这就是自动化它们所需的全部内容,包括自定义数据库和用户。

请参阅 https://cloudnative-pg.io/documentation/current/benchmarking/ 了解详细信息。


0
投票

只需在您的命令之前通过

PGPASSWORD
即可。 示例:

kubectl exec <your_pod> -- bash -c "PGPASSWORD='<pgbench_user_pwd>' pgbench -h <Host> -p <port> -U pgbench_user -j 1 -c 20 -T 20 pgbench_db"

或者,如果您直接登录客户端 Pod,请执行以下操作:

PGPASSWORD='<pgbench_user_pwd>' pgbench -h <Host> -p <port> -U pgbench_user -j 1 -c 20 -T 20 pgbench_db
© www.soinside.com 2019 - 2024. All rights reserved.