本系列文檔介紹使用二進制部署最新 kubernetes v1.14.2 集羣的所有步驟,而不是使用 kubeadm 等自動化方式來部署集羣。本文檔主要適合於那些有一定 kubernetes 基礎,想通過一步步部署的方式來學習和了解系統配置、運行原理的人。
環境信息:
-
OS 系統: Centos7.6 ( core )
-
kubernetes版本:v1.14.2
-
ETCD數據庫:v3.3.13
-
Network插件:Flanneld 0.11.0
-
Docker 版本: 18.09.6-ce
-
K8s插件:CoreDns,Heapster,Influxdb,Grafana,Dashboard,Efk,Metrics-server
- Docker倉庫:Harbor
架構概覽:
組件訪問策略
kube-apiserver:
-
基於Keepalived+ Haproxy 四層透明代理實現高可用;
-
開啓非安全端口 8080 和關閉匿名訪問,基於token訪問;
-
在安全端口 6443 接收 https 請求;
-
嚴格的認證和授權策略 (x509、token、RBAC);
-
開啓 bootstrap token 認證,支持 kubelet TLS bootstrapping;
- 使用 https 訪問 kubelet、etcd,加密通信;
kube-controller-manager:
-
3 節點高可用;
-
開啓安全端口,在安全端口 10252 接收 https 請求;
-
使用 kubeconfig 訪問 apiserver 的安全端口;
-
自動 approve kubelet 證書籤名請求 (CSR),證書過期後自動輪轉;
- 各 controller 使用自己的 ServiceAccount 訪問 apiserver;
kube-scheduler:
- 3 節點高可用;
- 使用 kubeconfig 訪問 apiserver 的安全端口;
kubelet:
- 使用 kubeadm 動態創建 bootstrap token,而不是在 apiserver 中靜態配置;
- 使用 TLS bootstrap 機制自動生成 client 和 server 證書,過期後自動輪轉;
- 在 KubeletConfiguration 類型的 JSON 文件配置主要參數;
- 關閉只讀端口,在安全端口 10250 接收 https 請求,對請求進行認證和授權,拒絕匿名訪問和非授權訪問;
- 使用 kubeconfig 訪問 apiserver 的安全端口;
kube-proxy:
- 使用 kubeconfig 訪問 apiserver 的安全端口;
- 在 KubeProxyConfiguration 類型的 JSON 文件配置主要參數;
- 使用 ipvs 代理模式;