我有多个kubernetes集群,希望确保当我kubectl apply部署时,我的目标是正确的集群。
我已经在根/.kube/config文件中的上下文中配置了所有集群,但在运行每个apply命令之前,我不希望依赖于将当前上下文状态切换到正确的上下文。
也就是说,这是不令人满意的
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中的一个字段,它允许您将部署指定(或限制)到特定的上下文/集群名称,但是我已经阅读了很多相关文档,但找不到任何这样的选项。
有更好的方法吗?
发布于 2020-08-19 10:59:46
似乎有--context=...选项。
kubectl options
The following options can be passed to any command:
...
--context='': The name of the kubeconfig context to use至少在v1.18.6版本中
发布于 2020-08-19 11:04:51
kubectl采用--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文件的标准工具倾向于默认为单个共享全局文件,而将其分开可能有点棘手。)
发布于 2020-08-19 07:44:29
有更好的方法吗?
您可以使用库贝克斯工具以比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".正如它今天所突出的那样,没有办法将上下文指定为部署yaml的一部分。为此,您可以在kubernetes GitHub repo中提交一个特性请求。
https://stackoverflow.com/questions/63481545
复制相似问题