一 Kubernetes API Server原理1.1 API Server功能Kubernetes API Server的核心功能是提供Kubernetes各類資源對象(如Pod、RC、Service等)的增、刪、改、查及Watch等HTTP Rest介面,成為集群內各個功能模塊之間數據交互和通... ...
一 Kubernetes API Server原理
1.1 API Server功能
Kubernetes API Server的核心功能是提供Kubernetes各類資源對象(如Pod、RC、Service等)的增、刪、改、查及Watch等HTTP Rest介面,成為集群內各個功能模塊之間數據交互和通信的中心樞紐,是整個系統的數據匯流排和數據中心。同時還有以下一些功能特性。- 是集群管理的API入口。
- 是資源配額控制的入口。
- 提供了完備的集群安全機制。
1.2 Kubernetes API Server概述
Kubernetes API Server通過一個名為kube-apiserver的進程提供服務,該進程運行在Master上。在預設情況下,kube-apiserver進程在本機的8080埠(對應參數--insecure-port=8080)提供REST服務。同時啟動HTTPS安全埠(--secure-port=6443)來啟動安全機制,加強RESTAPI訪問的安全性。 通常可以通過命令行工具kubectl來與Kubernetes API Server交互,它們之間的介面是RESTful API。也可通過curl直接測試和驗證Kubernetes API Server所提供的介面。 insecure-port非安全方式測試:1 [root@k8smaster01 study]# curl localhost:8080/api #以JSON方式返回 2 [root@k8smaster01 study]# curl localhost:8080/api/v1 #查看Kubernetes API Server支持的資源對象種類 3 [root@k8smaster01 study]# curl localhost:8080/api/v1/pods 4 [root@k8smaster01 study]# curl localhost:8080/api/v1/services #分別查看集群對應資源列表secure-port=6443安全方式測試:
1 [root@k8smaster01 study]# curl -k --cert /opt/k8s/work/admin.pem --key /opt/k8s/work/admin-key.pem https://172.24.8.71:6443/
1 [root@k8smaster01 study]# curl -k --cert /opt/k8s/work/admin.pem --key /opt/k8s/work/admin-key.pem https://172.24.8.71:6443/api/v1/pods
1 [root@k8smaster01 study]# curl -k --cert /opt/k8s/work/admin.pem --key /opt/k8s/work/admin-key.pem https://172.24.8.71:6443/api/v1/services
1.3 API Server架構解析
API Server的架構從上到下可以分為以下幾層。- API層:主要以REST方式提供各種API介面,除了有Kubernetes資源對象的CRUD和Watch等主要API,還有健康檢查、UI、日誌、性能指標等運維監控相關的API。
- 訪問控制層:當客戶端訪問API介面時,訪問控制層負責對用戶身份鑒權,驗明用戶身份,核准用戶對Kubernetes資源對象的訪問許可權,然後根據配置的各種資源訪問許可邏輯(AdmissionControl),判斷是否允許訪問。
- 註冊表層:Kubernetes把所有資源對象都保存在註冊表(Registry)中,針對註冊表中的各種資源對象都定義了:資源對象的類型、如何創建資源對象、如何轉換資源的不同版本,以及如何將資源編碼和解碼為JSON或ProtoBuf格式進行存儲。
- etcd資料庫:用於持久化存儲Kubernetes資源對象的KV資料庫。etcd的watch API介面對於API Server來說至關重要,因為通過這個介面,API Server創新性地設計了List-Watch這種高性能的資源對象實時同步機制,使Kubernetes可以管理超大規模的集群,及時響應和快速處理集群中的各種事件。