Joh*_*han 4 google-cloud-platform kubernetes google-kubernetes-engine
背景
我们使用 Jenkins 将新版本的 Kubernetes (k8s) 复制控制器部署到我们的测试或生产集群。测试和生产(k8s)集群位于不同的(谷歌云平台)项目下。我们在 Jenkins 上为 gcloud SDK 配置了两个配置文件,一个用于测试 (test-profile),一个用于生产 (prod-profile)。我们在 Jenkins 中定义了一个托管脚本,用于为我们的复制控制器执行滚动更新。问题是我无法找到一种方法来控制我想要将kubectl rolling-update
命令定位到哪个项目(您可以指定哪个集群,但不能指定哪个项目)。所以现在我们对测试服务器进行滚动更新的脚本看起来像这样:
gcloud config configurations activate test-profile && kubectl rolling-update ...
Run Code Online (Sandbox Code Playgroud)
虽然这可行,但如果两个作业在不同环境下同时运行,可能会非常危险。假设作业 1 的目标是测试环境,作业 2 的目标是生产环境。如果在作业 1 执行其任务之前,作业 2 将活动配置文件切换为“prod-profile”rolling-update
命令之前将活动配置文件切换到“prod-profile”,则作业 1 将定位到错误的项目,并且在最坏的情况下更新错误的复制控制器(如果集群具有相同的名称)。
问题
有没有办法指定 kubectl 命令所针对的项目(例如在滚动更新期间)可以安全地同时运行?
Tim*_*kin 11
您可以将--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
Run Code Online (Sandbox Code Playgroud)
与
$ 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4250 次 |
最近记录: |