kubernetes - kubectl "error: You must be logged in to the server (Unauthorized)" 使用 kubectx,而直接使用相同的配置则没有错误
问题描述
当我尝试:
在此处的示例中配置几个与此类连接的 KUBECONFIG 环境条目时,我遇到了一个奇怪的行为:
export KUBECONFIG=/Users/user/Work/company/project/setup/secrets/dev-qz/users/admin.conf:/Users/user/Work/company/project/setup/secrets/dev-wer/users/admin.conf:/Users/user/Work/company/project/setup/secrets/test-wer/users/admin.conf:/Users/user/Work/company/project/setup/secrets/test/users/admin.conf:/Users/user/Work/company/project/setup/secrets/dev-jg/users/admin.conf:/Users/user/Work/company/project/setup/secrets/preprod/users/admin.conf:/Users/user/Work/company/project/setup/secrets/dev/users/admin.conf:/Users/user/Work/company/project/setup/secrets/dev-fxc/users/admin.conf:/Users/user/Work/company/project/setup/secrets/cluster-setup/users/admin.conf:/Users/user/Work/company/project/setup/secrets/test-fxc/users/admin.conf:/Users/user/Work/company/project/setup/secrets/test-jg/users/admin.conf:/Users/user/Work/company/project/setup/secrets/test-qz/users/admin.conf
这就是正在发生的事情:如果我选择kubectx
集群(不是列表中的每个集群,而是任何一个集群),当我尝试时kubectl get po
我会收到:error: You must be logged in to the server (Unauthorized)
。但是,如果尝试到达同一个集群,将其直接传递给 kubectl 命令,--kubeconfig=<path to the config>
它就可以工作。我对此很苦恼,只想知道其他人是否也面临这种问题以及如何解决
解决方案
最终我发现了问题。@mario 向我建议的 flatten 命令帮助我更好地调试情况。
基本上,in memory
orin file
合并完成了它应该做的事情:创建一个 kubeconfig,其中包含每个 kubeconfig 文件的所有 uniq 参数。除非一个或多个 kubeconfig 具有标识相同组件的相同标签,否则这非常有效。在这种情况下,last
按顺序获胜。因此,如果您有以下示例:
grep -Rn 'name: kubernetes-admin$' infra/secrets/*/users/admin.conf
infra/secrets/cluster1/users/admin.conf:16:- name: kubernetes-admin
infra/secrets/cluster2/users/admin.conf:17:- name: kubernetes-admin
infra/secrets/cluster3/users/admin.conf:16:- name: kubernetes-admin
cluster1
并且cluster2
不会工作,而cluster3
会完美地工作,顺便说一句,由于订单。这个问题的解决方案是通过重命名标识用户的标签来避免非 uniq 字段(对于上面的示例)。一旦完成此更改,一切都会完美运行。
推荐阅读
- javascript - 无法将选项添加到多个 optgroup
- python-3.x - 使用否定范围对 DataFrame 索引进行 Dask 过滤器
- asp.net - 使用带有 await 的任务扩展方法时,异步操作仍处于挂起状态
- c# - 当 ID 自动递增时,如何在 Visual Studio 中将其他值插入数据库
- c++ - 如何在 Visual Studio 中打开 .cpp 文件并使其正确显示带有西里尔字符的字符串文字?
- excel - VBA函数验证单元格内容是否为日期,返回真/假
- android - 启动屏幕后的android ionic 4白屏
- c - C: 为什么我的程序中的输出数字不在标准 RGB 范围内:0-255?
- python - 通过比较来自两个不同列的日期来过滤 DataFrame
- javascript - 如何将多个 Jquery ID 传递给一个函数?