做爲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的原創文章,請關注公衆號"汪子熙":