gpt4 book ai didi

google-cloud-platform - 为特定项目和集群运行单个 kubectl 命令?

转载 作者:行者123 更新时间:2023-12-05 01:02:32 25 4
gpt4 key购买 nike

背景

我们正在使用 Jenkins 将新版本的 Kubernetes (k8s) 复制 Controller 部署到我们的测试或生产集群。 test 和 prod (k8s) 集群位于不同的(谷歌云平台)项目下。我们在 Jenkins 上为我们的 gcloud SDK 配置了两个配置文件,一个用于测试(test-profile),一个用于生产(prod-profile)。我们在 Jenkins 中定义了一个托管脚本,它为我们的复制 Controller 执行滚动更新。问题是我无法找到一种方法来控制我想将 kubectl rolling-update 命令定位到哪个项目(您可以指定哪个集群,但不能指定哪个项目)。所以现在我们对测试服务器进行滚动更新的脚本看起来像这样:

gcloud config configurations activate test-profile && kubectl rolling-update ...

虽然这可行,但如果两个作业同时在不同的环境中运行,则可能会非常危险。假设作业 1 以测试环境为目标,作业 2 以产品为目标。如果 job2 在 job 1 执行其 rolling-update 命令之前将事件配置文件切换到“prod-profile”,job 1 将定位到错误的项目,并且在更坏的情况下更新错误的复制 Controller (如果集群有同名)。

问题

有没有办法指定 kubectl 命令所针对的项目(例如在滚动更新期间)可以安全地并发运行?

最佳答案

您可以将 --cluster=--context= 标志传递给 kubectl 以设置单次运行。例如,如果我的 ~/.kube/config “foo”和“bar”中有两个集群:

$ kubectl --cluster=foo get pods
NAME READY STATUS RESTARTS AGE
foo-ht1qh 1/1 Running 0 3h
foo-wf8f4 1/1 Running 0 3h
foo-yvgpd 1/1 Running 0 3h

$ kubectl --cluster=bar get pods
NAME READY STATUS RESTARTS AGE
bar-de4h7 1/1 Running 0 9h
bar-c4g03 1/1 Running 0 9h
bar-2sprd 1/1 Running 0 9h

关于google-cloud-platform - 为特定项目和集群运行单个 kubectl 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33942709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com