天天看點

K8s API快速入門

前言

上一篇文章​​《Docker Restful API快速入門》​​介紹了有關Docker API的快速入門,今天這個文章給大家介紹一下K8s API的入門。

K8s API快速入門

下載下傳K8s的API, k8s的API是OPENAPI的标準,可以從github.com/gohutool/docker.ui項目進行下載下傳, 檔案名k8s.swagger.json

K8s API快速入門

導入方法

打開Postman,點選File-》Import

K8s API快速入門
K8s API快速入門

如圖這裡就已經成功的導入了K8s的API至Postman裡, 接下來,我們測試一個響應的API, 檢視Pods

K8s API快速入門

執行出現錯誤

K8s API快速入門
[root@CENTOS-01 ~]# curl --insecure https://192.168.56.114:6443/api/v1/namespaces/ns-test/pods      
K8s API快速入門

這個錯誤是由于沒有輸入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"
        }
    ]
}      
K8s API快速入門
[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      
K8s API快速入門

複制TOKEN,如圖中所辨別的,就是root使用者對應的TOKEN; 把這裡TOKEN複制後,在POSTMAN進行設定。

K8s API快速入門
K8s API快速入門

現在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      
K8s API快速入門

權限已經成功授權。

進行最後的測試

[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      

結束語

繼續閱讀