在 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 个主要类型:clusters
、contexts and
用户。
删除条目时要非常小心;编辑前务必备份配置
托管的 Kubernetes 平台经常添加cluster
、context
和user
条目,但通常不会删除它们;让文件被死条目污染比无意中删除所需的条目更容易。
另外:您是否使用创建集群的工具的逆向工具删除 AKS 集群?通常(例如 Google 这样做),删除会删除相关的 kubeconfig 条目。
Acontext
结合了 a cluster
、 auser
以及偶尔的 a namespace
。
当你删除一个时cluster
,你可能想要删除任何contexts
引用它的内容但有可能存在多个。
当你删除一个时context
,你可能想要删除users
它引用的任何内容但可能user
被多个 引用context
。
这是经常(但不总是) 确实,托管的 kubernetes 服务(如 AKS)会为每个创建的服务创建context
一个。user
cluster
因此,在强迫您阅读 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