尝试使用kubectl
切换上下文时,我遇到了一些非常奇怪的行为。
我的配置文件声明了两个上下文;一个指向内部集群,另一个指向Amazon EKS集群。
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: <..>
server: <..>
name: in-house
- cluster:
certificate-authority-data: <..>
server: <..>
name: eks
contexts:
- context:
cluster: in-house
user: divesh-in-house
name: in-house-context
- context:
cluster: eks
user: divesh-eks
name: eks-context
current-context: in-house-context
preferences: {}
users:
- name: divesh-eks
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: aws-iam-authenticator
args:
- "token"
- "-i"
- "eks"
env: null
- name: divesh-in-house
user:
client-certificate-data: <..>
client-key-data: <..>
我还使用aws-iam-authenticator
对EKS集群进行身份验证。
我的问题是-只要使用内部群集,一切都可以正常工作。但是,当我执行kubectl config use-context eks-context
时,会观察到以下行为。
kubectl get pods -n production
)都向我显示Please enter Username:
提示。我假设aws-iam-authenticator
应该已经为我管理了身份验证。我可以确认手动运行身份验证器(aws-iam-authenticator token -i eks
)对我来说很好。执行kubectl config view
省略了divesh-eks
用户,因此输出看起来像
users:
- name: divesh-eks
user: {}
通过执行kubectl config use-context in-house-context
切换回内部群集会修改我的配置文件并删除divesh-eks-user
,因此该配置文件现在包含
users:
- name: divesh-eks
user: {}
我的同事们似乎没有面对这个问题。
有想法吗?
答案 0 :(得分:0)
该配置的exec
部分已在1.10(https://github.com/kubernetes/kubernetes/pull/59495)中添加
如果您使用的kubectl版本早于该版本,它将无法识别exec插件(导致提示输入凭据),并且如果您使用它进行kubeconfig更改,则当该持久化时,将删除exec字段。变化