Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 是否为特定项目和集群运行单个kubectl命令?_Google Cloud Platform_Kubernetes_Google Kubernetes Engine - Fatal编程技术网

Google cloud platform 是否为特定项目和集群运行单个kubectl命令?

Google cloud platform 是否为特定项目和集群运行单个kubectl命令?,google-cloud-platform,kubernetes,google-kubernetes-engine,Google Cloud Platform,Kubernetes,Google Kubernetes Engine,背景 我们正在使用Jenkins将Kubernetes(k8s)复制控制器的新版本部署到我们的测试或prod集群。测试和生产(k8s)集群位于不同的(谷歌云平台)项目下。我们在Jenkins上为我们的gcloud SDK配置了两个配置文件,一个用于测试(测试配置文件),另一个用于prod(prod配置文件)。我们在Jenkins中定义了一个托管脚本,用于执行复制控制器的滚动更新。问题在于,我无法找到一种方法来控制我要将kubectl滚动更新命令作为目标的项目(您可以指定哪个集群,但不能指定哪个项

背景

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

gcloud config configurations activate test-profile && kubectl rolling-update ...
虽然这是可行的,但如果两个作业在不同的环境中同时运行,则可能会非常危险。假设作业1以测试环境为目标,作业2以产品为目标。如果作业2在作业1执行其
滚动更新
命令之前将活动配置文件切换为“产品配置文件”,作业1将以错误的项目为目标,在更坏的情况下更新错误的复制控制器(如果集群具有相同的名称)

问题


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

您可以使用
gcloud config set project yourProject
设置项目属性。请参见您可以使用
gcloud config set project yourProject
设置项目属性。请参见您可以将
--cluster=
--context=
标志传递给kubectl以设置单个运行。例如,如果我的~/.kube/config“foo”和“bar”中有两个集群:

vs

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

vs


嗯,不确定这是否能解决问题,因为集群在不同的项目中运行。所以我想同时指定集群和项目。指定集群包括主集群——在这里我看不到任何需要了解GCE的东西。您可以在不同的项目、不同的云提供商或裸机上混合使用集群。嗯,不确定这是否能解决问题,因为集群在不同的项目中运行。所以我想同时指定集群和项目。指定集群包括主集群——在这里我看不到任何需要了解GCE的东西。您可以在不同的项目、不同的云提供商或裸机上混合使用集群。
$ 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