部署控制節點

本部分將會在三臺控制節點上部署 Kubernetes 控制服務,並配置高可用的集群架構。並且還會創建一個用於外部訪問的負載均衡器。每個控制節點上需要部署的服務包括:Kubernetes API Server、Scheduler 以及 Controller Manager 等。

事前準備

以下命令需要在每臺控制節點上面都運行一遍,包括 controller-0controller-1controller-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 連接。

/healthz API 默認不需要認證。

驗證

將輸出結果

驗證 Nginx HTTP 健康檢查

將輸出

記得在每臺控制節點上面都運行一遍,包括 controller-0controller-1controller-2

Kubelet RBAC 授權

本節將會配置 API Server 訪問 Kubelet API 的 RBAC 授權。訪問 Kubelet API 是獲取 metrics、日誌以及執行容器命令所必需的。

這裏設置 Kubeket --authorization-modeWebhook 模式。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 請求

結果爲

下一步:部署 Kubernetes Worker 節點

Last updated