生成kube config
EKS官方生成的kube config文件里,绑定了aws cli,如果机器上没装aws cli则会无法使用。此时可以通过以下命令获取token,再填充到kube config文件里:
aws eks get-token --cluster-name ${CLUSTER_NAME}
最终生成的文件如下:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ${*****}
server: ${*****}.eks.amazonaws.com
name: arn:aws:eks:${*****}
contexts:
- context:
cluster: arn:aws:eks:${*****}
user: arn:aws:eks:${*****}
name: arn:aws:eks:${*****}
current-context: arn:aws:eks:${*****}
kind: Config
preferences: {}
users:
- name: arn:aws:${*****}
user:
token: ${TOKEN}
此时通过kubectl或者k8s client就能操作eks了。唯一限制的是token有效期最大只有15分钟,需要定时刷新操作,比较麻烦。
免刷新token生成方法
通过以下方式能生成一个不受影响的Kube config:
$ kubectl -n kube-system create serviceaccount kubeconfig-sa
$ kubectl create clusterrolebinding add-on-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:kubeconfig-sa
$ TOKENNAME=`kubectl -n kube-system get serviceaccount/kubeconfig-sa -o jsonpath='{.secrets[0].name}'`
$ TOKEN=`kubectl -n kube-system get secret $TOKENNAME -o jsonpath='{.data.token}'| base64 --decode`
将生成的TOKEN填充到kube config中的${TOKEN}即可实现免刷新。