tft每日頭條

 > 科技

 > kubeadm組件作用

kubeadm組件作用

科技 更新时间:2024-11-20 11:51:15

我們通過 client go 連接k8s apiserver的時候需要借助kubeconfig 文件,kubeconfig 文件通常包含了 context(上下文)列表,每個context 又會引用 cluster 和 user。然後通過 current-context 指定當前kubeconfig 使用哪個context。

kubeadm組件作用(如何生成一個kubeconfig文件)1

如果我們需要生成一個kubeconfig。可以通過下面的命令,

首先創建一個serviceaccount

kubectl -n kube-system create serviceaccount kommander-cluster-admin

然後通過RBAC 為 serviceaccount 綁定權限,在這裡我直接綁定了 cluster-admin ,如果你需要指定特定的角色,自行修改。

cat << EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kommander-cluster-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kommander-cluster-admin namespace: kube-system EOF

k8s 會默認為每個seviceaccount 創建一個default的secret 。我們先獲取第一個USER_TOKEN_NAME,然後獲取token 的值 USER_TOKEN_VALUE。如下:

export USER_TOKEN_NAME=$(kubectl -n kube-system get serviceaccount kommander-cluster-admin -o=jsonpath='{.secrets[0].name}') export USER_TOKEN_VALUE=$(kubectl -n kube-system get secret/${USER_TOKEN_NAME} -o=go-template='{{.data.token}}' | base64 --decode) export CURRENT_CONTEXT=$(kubectl config current-context) export CURRENT_CLUSTER=$(kubectl config view --raw -o=go-template='{{range .contexts}}{{if eq .name "'''${CURRENT_CONTEXT}'''"}}{{ index .context "cluster" }}{{end}}{{end}}') export CLUSTER_CA=$(kubectl config view --raw -o=go-template='{{range .clusters}}{{if eq .name "'''${CURRENT_CLUSTER}'''"}}"{{with index .cluster "certificate-authority-data" }}{{.}}{{end}}"{{ end }}{{ end }}') export CLUSTER_SERVER=$(kubectl config view --raw -o=go-template='{{range .clusters}}{{if eq .name "'''${CURRENT_CLUSTER}'''"}}{{ .cluster.server }}{{end}}{{ end }}')

最後生成kubeconfig文件

cat << EOF > kommander-cluster-admin-config apiVersion: v1 kind: Config current-context: ${CURRENT_CONTEXT} contexts: - name: ${CURRENT_CONTEXT} context: cluster: ${CURRENT_CONTEXT} user: kommander-cluster-admin namespace: kube-system clusters: - name: ${CURRENT_CONTEXT} cluster: certificate-authority-data: ${CLUSTER_CA} server: ${CLUSTER_SERVER} users: - name: kommander-cluster-admin user: token: ${USER_TOKEN_VALUE} EOF

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved