天天看點

Kubernetes API server工作原理

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

繼續閱讀