部署控制節點
本部分將會在三臺控制節點上部署 Kubernetes 控制服務,並配置高可用的集群架構。並且還會創建一個用於外部訪問的負載均衡器。每個控制節點上需要部署的服務包括:Kubernetes API Server、Scheduler 以及 Controller Manager 等。
事前準備
以下命令需要在每臺控制節點上面都運行一遍,包括 controller-0、controller-1 和 controller-2。可以使用 gcloud 命令登錄每個控制節點。例如:
gcloud compute ssh controller-0可以使用 tmux 同時登錄到三點控制節點上,加快部署步驟。
部署 Kubernetes 控制平面
創建 Kubernetes 配置目錄
sudo mkdir -p /etc/kubernetes/config下載並安裝 Kubernetes Controller 二進制文件
wget -q --show-progress --https-only --timestamping \
"https://storage.googleapis.com/kubernetes-release/release/v1.18.6/bin/linux/amd64/kube-apiserver" \
"https://storage.googleapis.com/kubernetes-release/release/v1.18.6/bin/linux/amd64/kube-controller-manager" \
"https://storage.googleapis.com/kubernetes-release/release/v1.18.6/bin/linux/amd64/kube-scheduler" \
"https://storage.googleapis.com/kubernetes-release/release/v1.18.6/bin/linux/amd64/kubectl"
chmod +x kube-apiserver kube-controller-manager kube-scheduler kubectl
sudo mv kube-apiserver kube-controller-manager kube-scheduler kubectl /usr/local/bin/配置 Kubernetes API Server
使用節點的內網 IP 地址作爲 API server 與集群內部成員的廣播地址。首先查詢當前節點的內網 IP 地址:
生成 kube-apiserver.service systemd 配置文件:
配置 Kubernetes Controller Manager
生成 kube-controller-manager.service systemd 配置文件:
配置 Kubernetes Scheduler
生成 kube-scheduler.service systemd 配置文件:
啓動控制器服務
請等待 10 秒以便 Kubernetes API Server 初始化。
開啓 HTTP 健康檢查
Google Network Load Balancer 將用在在三個 API Server 之前作負載均衡,並可以終止 TLS 並驗證客戶端證書。但是該負載均衡僅支持 HTTP 健康檢查,因而這裏部署 nginx 來代理 API Server 的 /healthz 連接。
/healthzAPI 默認不需要認證。
驗證
將輸出結果
驗證 Nginx HTTP 健康檢查
將輸出
記得在每臺控制節點上面都運行一遍,包括
controller-0、controller-1和controller-2。
Kubelet RBAC 授權
本節將會配置 API Server 訪問 Kubelet API 的 RBAC 授權。訪問 Kubelet API 是獲取 metrics、日誌以及執行容器命令所必需的。
這裏設置 Kubeket
--authorization-mode爲Webhook模式。Webhook 模式使用 SubjectAccessReview API 來決定授權。
創建 system:kube-apiserver-to-kubelet ClusterRole 以允許請求 Kubelet API 和執行許用來管理 Pods 的任務:
Kubernetes API Server 使用客戶端憑證授權 Kubelet 爲 kubernetes 用戶,此憑證用 --kubelet-client-certificate flag 來定義。
綁定 system:kube-apiserver-to-kubelet ClusterRole 到 kubernetes 用戶:
Kubernetes 前端負載均衡器
本節將會建立一個位於 Kubernetes API Servers 前端的外部負載均衡器。 kubernetes-the-hard-way 靜態 IP 地址將會配置在這個負載均衡器上。
本指南創建的虛擬機內部並沒有操作負載均衡器的權限,需要到創建這些虛擬機的那臺機器上去做下面的操作。
創建外部負載均衡器網絡資源:
驗證
查詢 kubernetes-the-hard-way 靜態 IP 地址:
發送一個查詢 Kubernetes 版本信息的 HTTP 請求
結果爲
Last updated