訪問kubernetes api

###kubernetes api介紹 做用: 將各類資源對象的數據都經過該api接口被提交到後端的持久化存儲etcd中; 一個api的頂層元素由kind丶apiVersion丶metadata丶spec和status這5部分組成 1.kindnode

有三大類別: 對象(object)丶列表(list)丶簡單類別(simple)

2.apiVersionjson

表示API的版本號, 當前版本默認只支持v1

3.metadata : 資源對象的元數據定義,後端

在kubernetes中的每一個資源對象都必須包含3中Metadata
namespace: 對象所屬的命名空間
name: 對象的名稱
uid: 系統爲每一個對象都生成的惟一id
其它重要的元數據

labels: 標籤
annotations: 用戶可定義的註解
resourceVersion:  用於識別資源內部版本號的字符串
creationTimestamp: 系統記錄建立對象時的時間戳
deletionTimestamp: 系統記錄刪除對象時的時間戳
selfLink: 經過api訪問資源自身的URL

4.spec: 用戶對須要管理的對象進行詳細描述的主體部分都在spec, 他會被kubernetes持久化到etcd中保存, 系統經過spec的描述來建立或更新對象, 以達到用戶指望的對象運行狀態 5.status: 用於記錄對象在系統中的當前狀態信息api

###訪問api 1.本地監聽網絡

kubectl proxy
curl http://127.0.0.1:8001/api

2.網絡監聽curl

kubectl proxy --address='192.168.1.52'  --accept-hosts='^*$' --port=8001 
啓動kubectl proxy,使用網卡IP,從其餘機器訪問, --accept-hosts='^*$' 表示接受全部源IP,不然會顯示不被受權
curl  http://192.168.1.52:8001/api/

3.直接訪問post

kubectl create sa test
kubectl create clusterrolebinding sa-test-cluster-admin --clusterrole='cluster-admin' --serviceaccount=default:test
TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='test')].data.token}"|base64 -d)
curl --header "Authorization: Bearer $TOKEN" --insecure  -X GET https://192.168.1.52:6443/api/v1/nodes

4.經過postman訪問 注意: 使用sa須要關閉ssl驗證 jsonp

參考文檔: https://www.jianshu.com/p/0a5976ce1ce4ui

相關文章
相關標籤/搜索