上一篇文章《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@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:
- 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:
- Annotations:
- 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

本文通过对K8s API和Postman的介绍; 介绍了如何通过Postman可以对K8s API进行查看和调试; 这个对K8s API的开发非常的高效, KubeUI在对K8s进行管理的功能,都是基于K8s API的调用,也都是使用这样的方法进行调试的。 非常的高效。