KubernetesAPIserver工作原理

JerryWangSAP發表於2018-11-21

作為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請求和響應的負載。

本文來自雲棲社群合作伙伴“汪子熙”,瞭解相關資訊可以關注微信公眾號”汪子熙”。