Kubernetes提供了两种方式来操控Kubernetes集群的运行:kubectl命令行和restful api。kubectl需要在终端执行,而restful api可以使用postman,shell,以及各种语言的httpClient调用。因此在一些场景,比如使用Jenkins发版时可以调用Kubernetes的api来更新pod中image,可以做到“一键发版”。调用Kubernetes的api需要使用token,本文将详细介绍在Kubernetes中如何生成admin-token,并给出一个实际调用api的例子。
- 新建
admin-role.yaml文件 admin-role.yaml文件内容为:
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: admin
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: ServiceAccount
name: admin
namespace: kube-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: admin
namespace: kube-system
labels:
kubernetes.io/cluster-service: "true"
addonmanager.kubernetes.io/mode: Reconcile
- 执行
kubectl create -f admin-role.yaml - 执行
kubectl get secrets -n kube-system查看secret - 执行
kubectl describe secret -n kube-system admin-token-chgjv可以直接拿到token - 有了
admin-token,我们就可以访问Kubernetes的restful api,这里使用postman调用。