###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