kubectl
调用多个命令
集群,我应该下载相关的配置文件到一个新的
位置(例如进入
~/gcloud/config
KUBECONFIG
或者在以下情况下显式使用--kubeconfig选项更好吗
调用kubectl来指定集群的配置?
这可能取决于您认为更简单、更方便的方法,以及是否需要考虑安全和访问管理问题。
-
根据我们的经验,融合了各种
kubeconfig
文件对于多集群操作非常有用,以便在一组集群(上下文和命名空间)上执行维护任务和事件管理,简化故障排除问题,基于比较K8s服务、POD、卷、命名空间、rs等的配置、清单、资源和状态的可能性。
-
然而,当涉及自动化和部署(使用Jenkins、Spinnaker或Helm等工具)时,很可能需要单独的
库贝Config
文件可能是个好主意。可以合并混合方法
基于除法的文件
服务层
-&燃气轮机;使用文件划分开发环境(dev、qa、stg、prod)集群或
对于团队
-&燃气轮机;企业(teamA、teamB、teamN)中的角色和责任也可以在良好的备选方案中理解。
-
对于多群集合并
考虑的文件场景
kubectx
kubens
,这是非常强大的工具
kubectlt
这让您可以看到当前的上下文(集群)和命名空间,同样可以在它们之间切换。
简言之,与多个独立用户交互的最佳方式是什么
-
考虑到项目中最重要的因素,可能应该分析权衡。有一个合并的
文件似乎更简单,即使将其与
~/.kube/config
默认情况下使用
--context kubectl
旗帜另一方面,如果限制
库贝Config
必须将其隔离并使用
--kubeconfig=file1
-
对于每种情况和场景,可能都没有最好的方法,知道如何配置
库贝Config
不过,了解其优先级将有所帮助。
-
在本文中->
https://www.nrmitchi.com/2019/01/managing-kubeconfig-files/
你会发现一个互补且有价值的观点:
-
为您提供访问凭据将提供新的
使用。而您可以将配置合并到
困难(必须明确删除上下文、集群和
issue
在Kubernetes追踪这一点。然而
将每个提供的配置文件分开,只需加载所有
对于它们,删除要容易得多(只需删除文件)。对我来说,这个
似乎是一种更易于管理的方法。
-
我更喜欢将所有单独的配置文件保存在~/下。通过利用$KUBECONFIG环境变量选项的多路径特性,我们可以实现这一点。
如果您正在使用
库贝克特
,这是在确定
文件已使用。
-
使用
--kubeconfig
-
使用
库贝Config
环境变量(如果指定)
-
$HOME/.kube/config
有了它,您可以轻松地覆盖
根据使用的文件
库贝克特
#
# using --kubeconfig flag
#
kubectl get pods --kubeconfig=file1
kubectl get pods --kubeconfig=file2
#
# or
# using `KUBECONFIG` environment variable
#
KUBECONFIG=file1 kubectl get pods
KUBECONFIG=file2 kubectl get pods
#
# or
# merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG= $HOME/.kube/config:file2:file3 kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2
这个
--minify
标志只允许我们提取有关该上下文的信息,并且
--flatten
标志允许我们保持凭据未经修改。
您可以保存AKS(Azure容器服务)、AWS EKS(K8s的弹性容器服务)或GKE(谷歌容器引擎)群集上下文以分离文件并设置
env var引用两个文件位置。
gcloud
命令,它通常会修改默认值
~/.库贝/配置
文件但是,您可以设置
$KUBECONFIG
G云
要将群集凭据保存到文件,请执行以下操作:
KUBECONFIG=c1.yaml gcloud container clusters get-credentials "cluster-1"
正如我们之前提到的
使用多个
kubeconfigs
同时处理多个上下文非常有用。
为此,您需要一个合并的
库贝Config
文件在本节中
“合并kubeconfig文件”
到单个文件中,但您也可以将其合并
内存中
.
通过在中指定多个文件
环境变量,可以临时缝合
库贝克特
#
# Kubeconfig in-memory merge
#
export KUBECONFIG=file1:file2
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2
#
# For your example
# merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG= $HOME/.kube/config:file2: kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2
合并kubeconfig文件
自从
库贝Config
文件,但是
可以帮助您合并这些文件:
#
# Merging your kubeconfig file w/ $HOME/.kube/config (w/ cp backup)
#
cp $HOME/.kube/config $HOME/.kube/config.backup.$(date +%Y-%m-%d.%H:%M:%S)
KUBECONFIG=$HOME/.kube/config:file2:file3 kubectl config view --merge --flatten > \
~/.kube/merged_kubeconfig && mv ~/.kube/merged_kubeconfig ~/.kube/config
kubectl get pods --context=cluster-1
kubectl get pods --context=cluster-2