我们正在使用kubernetes python客户端(4.0.0)与google的kubernetes引擎(master + nodepools运行k8s 1.8.4)一起定期调度kubernetes上的工作负载.我们用于创建pod,附加到日志和报告pod的结束状态的脚本的简化版本如下所示:
config.load_kube_config(persist_config=False)
v1 = client.CoreV1Api()
v1.create_namespaced_pod(body=pod_specs_dict, namespace=args.namespace)
logging_response = v1.read_namespaced_pod_log(
name=pod_name,
namespace=args.namespace,
follow=True,
_preload_content=False
)
for line in logging_response:
line = line.rstrip()
logging.info(line)
status_response = v1.read_namespaced_pod_status(pod_name, namespace=args.namespace)
print("Pod ended in status: {}".format(status_response.status.phase))
Run Code Online (Sandbox Code Playgroud)
一切都很好,但是我们遇到了一些身份验证问题.身份验证通过默认的gcp身份验证提供程序进行,我通过kubectl container cluster get-credentials在调度程序上手动运行来获取初始访问令牌.在某些随机时间范围内,某些API调用会导致API服务器发出401响应.我的猜测是,只要访问令牌过期,脚本就会尝试获取新的访问令牌.但是,在调度程序上并发运行多个脚本,导致多次获取新的API密钥,其中只有一个仍然有效.我尝试了多种方法来解决问题(使用persist_config=True,重新加载配置后重试401,...)没有任何成功.由于我不完全清楚gcp身份验证和kubernetes python客户端配置是如何工作的(并且两者的文档都相当稀缺),所以我有点不知所措.
我们应该使用其他身份验证方法而不是gcpauth-provider吗?这是kubernetes python客户端中的错误吗?我们应该使用多个配置文件吗?
kubernetes google-kubernetes-engine kubernetes-python-client
我们目前正在调查使用多个列族对我们的 bigtable 查询性能的影响。我们发现将列拆分为多个列族并不会提高性能。有没有人有过类似的经历?
关于我们的基准设置的更多细节。此时,我们生产表中的每一行都包含大约 5 列,每列包含 0.1 到 1 KB 的数据。所有列都存储在一个列族中。执行行键范围过滤器(平均返回 340 行)并应用列正则表达式拟合器(每行仅返回 1 列)时,查询平均需要 23.3 毫秒。我们创建了一些测试表,其中每行的列/数据量增加了 5 倍。在测试表 1 中,我们将所有内容都保留在一个列族中。正如预期的那样,这将同一查询的查询时间增加到 40.6 毫秒。在测试表 2 中,我们将原始数据保留在一个列族中,但将额外的数据放入另一个列族中。当查询包含原始数据的列族(因此包含与原始表相同的数据量)时,查询时间平均为 44.3ms。所以当使用更多的列族时,性能甚至会下降。
这与我们预期的完全相反。例如,这在 bigtable 文档中提到(https://cloud.google.com/bigtable/docs/schema-design#column_families)
将数据分组到列族允许您从单个族或多个族中检索数据,而不是检索每一行中的所有数据。尽可能紧密地对数据进行分组,以便在最频繁的 API 调用中仅获取您需要的信息,但仅此而已。
有人对我们的发现有解释吗?
(编辑:添加了更多细节)
单行内容:
表一:
CF1
表二:
我们正在执行的基准测试是使用 go 客户端。调用API的代码基本如下:
filter = bigtable.ChainFilters(bigtable.FamilyFilter(request.ColumnFamily),
bigtable.ColumnFilter(colPattern), bigtable.LatestNFilter(1))
tbl := bf.Client.Open(table)
rr := bigtable.NewRange(request.RowKeyStart, request.RowKeyEnd) …Run Code Online (Sandbox Code Playgroud)