访问 API 有两种方式
- 通过 API 客户端库
- 常规请求方式
API 客户端调用
常规请求方式
了解即可
- 创建
ServiceAccount
及RoleBinding
apiVersion: v1
kind: ServiceAccount
metadata:
name: api-operator
namespace: default
---
# 这里使用的是 ClusterRoleBinding,请根据实际需求创建 role 及绑定 sa
# kubectl create clusterrolebinding api-operator-admin --clusterrole=cluster-admin --serviceaccount=default:api-operator
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: api-operator-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: api-operator
namespace: default
- 获取 Token 及证书
# 获取 secret 名称
SECRET_NAME=`kubectl get sa api-operator -o jsonpath='{.secrets[0].name}'`
# 获取 secret 中的 token 及证书并 base64 解码
TOKEN=`kubectl get secrets $SECRET_NAME -o jsonpath='{.data.token}' | base64 -d`
kubectl get secret ${SECRET_NAME} -o jsonpath="{.data.ca\.crt}" | base64 -d > api-operator-admin.crt
-
获取当前 K8s 集群的 api-server,有两种方式,如下:
- 直接查看
kube-config
文件 - 通过命令获取
# 若集群存在多台 master 取任一一个即可 API_SERVER=kubectl -n default get endpoints kubernetes --no-headers | awk '{print $2}' | cut -d "," -f 1
- 直接查看
请求示例,更多 API 请查阅 kubernetes-api 文档
curl -s $API_SERVER/api/v1/namespaces/default/pods/ --header "Authorization: Bearer $TOKEN" --cacert api-operator-admin.crt'