Kubernetes API server工做原理

做爲Kubernetes的使用者,天天用得最多的命令就是kubectl XXX了。api

kubectl其實就是一個控制檯,主要提供的功能:app

1. 提供Kubernetes集羣管理的REST API接口,包括認證受權、數據校驗以及集羣狀態變動;工具

2. 提供其餘模塊之間的數據交互和通訊的樞紐(其餘模塊經過API Server查詢或修改數據,只有API Server才直接操做etcd)url

也就是說,咱們在終端裏輸入的每一個kubectl命令,實際上都是一個發往Kubernetes API server的Restful API調用。spa

咱們能夠作個實驗:操作系統

kubectl get secret -v=9, 經過-v=9設置最高級別的trace:命令行

從輸出觀察到爲了取回全部的secret而進行的API server的調用url:https://xxxx/api/v1/namespaces/<own namespace>/secrets?limit=500:orm

這個HTTP請求的格式在Kubernetes官網能查到。router

那麼kubectl命令怎麼知道應該把請求發送到哪一個API server呢?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請求和響應的負載。

要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":

相關文章
相關標籤/搜索