訪問kubernetes api


kubernetes api介紹

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

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

2.apiVersion

表示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

1.本地監聽

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


2.網絡監聽

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.直接訪問

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驗證

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM