作為Kubernetes的使用者,每天用得最多的指令就是kubectl XXX了。
kubectl其實就是一個控制台,主要提供的功能:
1. 提供Kubernetes叢集管理的REST API接口,包括認證授權、資料校驗以及叢集狀态變更;
2. 提供其他子產品之間的資料互動和通信的樞紐(其他子產品通過API Server查詢或修改資料,隻有API Server才直接操作etcd)
也就是說,我們在終端裡輸入的每個kubectl指令,實際上都是一個發往Kubernetes API server的Restful API調用。
我們可以做個實驗:
kubectl get secret -v=9, 通過-v=9設定最進階别的trace:
從輸出觀察到為了取回所有的secret而進行的API server的調用url:
https://xxxx/api/v1/namespaces/ namespace>/secrets?limit=500:
這個HTTP請求的格式在Kubernetes官網能查到。
那麼kubectl指令怎麼知道應該把請求發送到哪個API server呢?
運作指令kubectl config view, 顯示内容裡的server:後面的位址就是API server的url。
kubectl config view顯示的内容來自配置檔案: ~/.kube/config:
其實Kubernetes的kubectl工作原理和CloudFoundry的指令行工具cf一樣。
設定作業系統的環境變量CF_TRACE = true
然後執行任意的cf 指令,能看到這些指令實際上也是發送一個HTTP請求到SAP Cloud Platform的某個endpoint上。
例子:cf logs connectvity-demo-approuter --recent
然後就能看到為了完成這個指令所發送的HTTP請求和響應的負載。
本文來自雲栖社群合作夥伴“汪子熙”,了解相關資訊可以關注微信公衆号"汪子熙"。