首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes:在apply命令中指定集群上下文

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

Stack Overflow用户
提问于 2020-08-19 06:56:52
回答 3查看 3.2K关注 0票数 8

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

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

也就是说,这是不令人满意的

代码语言:javascript
复制
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选项指定该文件。

代码语言:javascript
复制
kubectl apply ./deploy-to-cluster-1.yml --kubeconfig ./config-cluster-1
kubectl apply ./deploy-to-cluster-2.yml --kubeconfig ./config-cluster-2

这个工作,但它看起来真的很麻烦。

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

有更好的方法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-19 10:59:46

似乎有--context=...选项。

代码语言:javascript
复制
kubectl options

The following options can be passed to any command:
...
      --context='': The name of the kubeconfig context to use

至少在v1.18.6版本中

票数 18
EN

Stack Overflow用户

发布于 2020-08-19 11:04:51

kubectl采用--context选项:

代码语言:javascript
复制
kubectl --context cluster-1-context apply -f ./deploy-to-cluster-1.yml

在资源YAML文件中没有指定或强制执行此操作的方法;仍然可能发生意外。

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

代码语言:javascript
复制
export KUBECONFIG=./cluster-1-config.yml
kubectly apply -f ./deploy-to-cluster-1.yml

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

票数 6
EN

Stack Overflow用户

发布于 2020-08-19 07:44:29

有更好的方法吗?

您可以使用库贝克斯工具以比kubectl更简单的方式在上下文之间来回切换。

代码语言:javascript
复制
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".

正如它今天所突出的那样,没有办法将上下文指定为部署yaml的一部分。为此,您可以在kubernetes GitHub repo中提交一个特性请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63481545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档