Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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
Kubernetes:在apply命令中指定集群上下文_Kubernetes_Config - Fatal编程技术网

Kubernetes:在apply命令中指定集群上下文

Kubernetes:在apply命令中指定集群上下文,kubernetes,config,Kubernetes,Config,我有多个kubernetes集群,并希望确保当我kubectl应用部署时,我的目标是正确的集群 我在根/.kube/config文件的上下文中配置了所有集群,但我不想依赖于在运行每个apply命令之前将当前上下文有状态地切换到正确的上下文 kubectl apply ./deploy-to-cluster-1.yml --kubeconfig ./config-cluster-1 kubectl apply ./deploy-to-cluster-2.yml --kubeconfig ./con

我有多个kubernetes集群,并希望确保当我
kubectl应用部署时,我的目标是正确的集群

我在根
/.kube/config
文件的上下文中配置了所有集群,但我不想依赖于在运行每个
apply
命令之前将当前上下文有状态地切换到正确的上下文

kubectl apply ./deploy-to-cluster-1.yml --kubeconfig ./config-cluster-1
kubectl apply ./deploy-to-cluster-2.yml --kubeconfig ./config-cluster-2
i、 这是不令人满意的

kubectl config use-context cluster-1-context
kubectl apply ./deploy-to-cluster-1.yml

kubectl config use-context cluster-2-context
kubectl apply ./deploy-to-cluster-2.yml
我在上阅读了文档,我能找到的唯一方法是将特定集群的配置复制/粘贴到自定义配置文件中,并使用
apply
命令上的
--kubeconfig
选项指定该配置

kubectl apply ./deploy-to-cluster-1.yml --kubeconfig ./config-cluster-1
kubectl apply ./deploy-to-cluster-2.yml --kubeconfig ./config-cluster-2
这是可行的,但看起来确实很麻烦

对于这种常见的需求,我希望在
apply
上有一个简单的选项,或者甚至在部署
yml
中有一个字段,允许您指定(或限制)部署到特定的上下文/集群名称,但我已经阅读了大量相关文档,找不到任何这样的选项

有更好的方法吗?

有更好的方法吗

您可以使用该工具以比kubectl更容易的方式在上下文之间来回切换

USAGE:
  kubectx                   : list the contexts
  kubectx <NAME>            : switch to context <NAME>
  kubectx -                 : switch to the previous context
  kubectx -c, --current     : show the current context name
  kubectx <NEW_NAME>=<NAME> : rename context <NAME> to <NEW_NAME>
  kubectx <NEW_NAME>=.      : rename current-context to <NEW_NAME>
  kubectx -d <NAME>         : delete context <NAME> ('.' for current-context)
                              (this command won't delete the user/cluster entry
                              that is used by the context)
  kubectx -u, --unset       : unset the current context

$ kubectx minikube
Switched to context "minikube".

$ kubectx -
Switched to context "oregon".

$ kubectx -
Switched to context "minikube".

$ kubectx dublin=gke_ahmetb_europe-west1-b_dublin
Context "dublin" set.
Aliased "gke_ahmetb_europe-west1-b_dublin" as "dublin".
用法:
列出上下文
kubectx:切换到上下文
kubectx-:切换到上一个上下文
kubectx-c,--current:显示当前上下文名称
kubectx=:将上下文重命名为
kubectx=:将当前上下文重命名为
kubectx-d:删除上下文('.'表示当前上下文)
(此命令不会删除用户/群集条目
(由上下文使用)
kubectx-u,--unset:取消设置当前上下文
$kubectx minikube
切换到上下文“minikube”。
$kubectx-
切换到上下文“俄勒冈州”。
$kubectx-
切换到上下文“minikube”。
$kubectx dublin=gke_ahmetb_europe-west1-b_dublin
上下文“都柏林”集。
别名“gke_ahmetb_europe-west1-b_dublin”为“dublin”。
正如今天所强调的,没有办法将上下文指定为部署yaml的一部分。您可以在kubernetes GitHub repo中为此提交功能请求。

似乎有
--context=…
选项

kubectl options

The following options can be passed to any command:
...
      --context='': The name of the kubeconfig context to use
至少在版本
v1.18.6

中采用了
--context
选项:

kubectl--context cluster-1-context apply-f./deploy-to-cluster-1.yml
无法在资源YAML文件中指定或强制执行此操作;仍然有可能发生事故

如果您有多个
.kube/config
文件,也可以指向其中一个。标准Kubernetes SDK可以理解这一点,因此几乎所有工具都应该支持它

export KUBECONFIG=。/cluster-1-config.yml
kubectly apply-f./deploy-to-cluster-1.yml

(考虑到选择,我更喜欢这种方法,因为环境变量是shell本地变量,但
kubectl config current context
将影响我所有打开的终端窗口。配置
.kube/config
文件的标准工具倾向于默认为单个共享全局文件,不过,将其分开可能有点困难。)

谢谢,很高兴了解
kubectx
,但是
kubectl config use context
的语法不是问题,而是它的状态特性。我需要在
apply
命令中内联定义的上下文-它需要是原子的。