前言
上一篇文章《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