前言
上一篇文章《Docker Restful API快速入门》介绍了有关Docker API的快速入门,今天这个文章给大家介绍一下K8s API的入门。

下载K8s的API, k8s的API是OPENAPI的标准,可以从github.com/gohutool/docker.ui项目进行下载, 文件名k8s.swagger.json
导入方法
打开Postman,点击File-》Import
如图这里就已经成功的导入了K8s的API至Postman里, 接下来,我们测试一个响应的API, 查看Pods
执行出现错误
[root@CENTOS-01 ~]# curl --insecure https://192.168.56.114:6443/api/v1/namespaces/ns-test/pods
这个错误是由于没有输入token,K8s比docker设计的更加的完善, APIServer的调用是基于K8s的RABC的认证方式;没有token标识,是用anonymous进行访问,而k8s默认anonymous是没有开启访问权限的。
接下来,使用token进行访问
建立ROOT用户,并使用TOKEN访问
[root@CENTOS-01 ~]# kubectl create sa root
[root@CENTOS-01 ~]# kubectl get sa root -o json
{
"apiVersion": "v1",
"kind": "ServiceAccount",
"metadata": {
"creationTimestamp": "2022-03-24T16:59:24Z",
"name": "root",
"namespace": "default",
"resourceVersion": "45032",
"uid": "18deddf8-08b8-4f4a-bd0f-48fb9a56ea7a"
},
"secrets": [
{
"name": "root-token-bsctg"
}
]
}
[root@CENTOS-01 ~]# kubectl describe secret root-token-bsctg
Name: root-token-bsctg
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name: root
kubernetes.io/service-account.uid: 18deddf8-08b8-4f4a-bd0f-48fb9a56ea7a
Type: kubernetes.io/service-account-token
Data
====
token: eyJhbGciOiJSUzI1NiIsImtpZCI6ImdiS1hCWGlJemxQc3U1d2FIOGNfTUctMFNUMnR6a1lPNTBHakVrTDVYaTAifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZWZhdWx0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6InJvb3QtdG9rZW4tYnNjdGciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoicm9vdCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6IjE4ZGVkZGY4LTA4YjgtNGY0YS1iZDBmLTQ4ZmI5YTU2ZWE3YSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDpkZWZhdWx0OnJvb3QifQ.i2M_aaM5QvIcFeKq_WViVzvrE8LwaOiP7F6EgmfITZJVFqg77pEns5Gx7uvQqAP2WUaFq_5kvKI5-ArWIO5pky40MyYMWOccI19HXZXlFwL9Z0_JelwMNQtoAVloVqwggm8hRjcytRhl5CDZTEUPZRs5S0EqUEytrr_C_0VCx5KDJXYlQCYdVBMWF91dLmlA92v2J3PnWZ9Kwd-ggreWGng7Orjdhjf-BXW1PdLKuicS8DLdpORA49x-BHTrGnDNZig_g3ypfRbv8Jk_TS0w_pDMq6dgEjx4hd7M6gSpAbxSeJ3eT0lLYZrgXU1obWzSy4ZgLUyIn4moELsZnsZq2A
ca.crt: 1099 bytes
namespace: 7 bytes
复制TOKEN,如图中所标识的,就是root用户对应的TOKEN; 把这里TOKEN复制后,在POSTMAN进行设置。
现在Token已经设置正确, 还需要给root这个用户,对应的APIServer的访问权限
kubectl create clusterrolebinding apiadmin \
--clusterrole cluster-admin --serviceaccount \
default:root
[root@CENTOS-01 ~]# kubectl describe clusterrolebinding apiadmin
Name: apiadmin
Labels: <none>
Annotations: <none>
Role:
Kind: ClusterRole
Name: cluster-admin
Subjects:
Kind Name Namespace
---- ---- ---------
ServiceAccount root default
权限已经成功授权。
进行最后的测试
[root@CENTOS-01 ~]# aaaa='eyJhbGciOiJSUzI1NiIsImtpZC...y4ZgLUyIn4moELsZnsZq2A'
[root@CENTOS-01 ~]# curl -H "Authorization: Bearer $aaaa" \
--insecure \
https://192.168.56.114:6443/api/v1/namespaces/ns-test/pods