删除集群后如何保持.kube/config 整洁?

删除集群后如何保持.kube/config 整洁?

在 Microsoft Windows 中,我发现当我创建和删除 AKS 集群时,我的.kube/config文件正在积累我已删除的内容的上下文条目。

我尝试使用以下命令,但之后我仍然在文件中找到上下文的条目,.kube/config尽管 kubectl 不再列出上下文。

kubectl config delete-context someContextNameHere
kubectl config unset contexts.someContextNameHere

之后,使用该kubectl config get-contexts命令确实表明它们是消失了,但已删除上下文的条目仍留在.kube/config文件中。

目前,我唯一的解决方案是使用 kubectl 删除所有内容,然后删除配置文件,或者勇敢地尝试手动切出条目。

有没有办法使用 kubectl 来使这个文件不包含不需要的上下文条目?

答案1

kubectl 配置文件代表Config种,包括 3 个主要类型:clusterscontexts and用户。

删除条目时要非常小心;编辑前务必备份配置

托管的 Kubernetes 平台经常添加clustercontextuser条目,但通常不会删除它们;让文件被死条目污染比无意中删除所需的条目更容易。

另外:您是否使用创建集群的工具的逆向工具删除 AKS 集群?通常(例如 Google 这样做),删除会删除相关的 kubeconfig 条目。

Acontext结合了 a cluster、 auser以及偶尔的 a namespace

当你删除一个时cluster,你可能想要删除任何contexts引用它的内容有可能存在多个。

当你删除一个时context,你可能想要删除users它引用的任何内容可能user被多个 引用context

这是经常(但不总是) 确实,托管的 kubernetes 服务(如 AKS)会为每个创建的服务创建context一个。usercluster

因此,在强迫您阅读 TL;DR 之后……

# Backup
# E.g. cp ~/.kube/config ~/.kube/config.$(date +%y%m%d%H%M)

CLUSTER="..."
USER="..."
CONTEXT="..."

kubectl config delete-cluster ${CLUSTER}
kubectl config delete-user ${USER}
kubectl config delete-context ${CONTEXT}

这些kubectl命令对文件执行任何参照完整性检查,以便您可以轻松删除cluster或被user多个上下文引用的。

找到了这个(还没用过)kubectl插件:kubectl-config-cleanup

相关内容