本部分将会在三台控制节点上部署 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 初始化。
Google Network Load Balancerarrow-up-right 将用在在三个 API Server 之前作负载均衡,并可以终止 TLS 并验证客户端证书。但是该负载均衡仅支持 HTTP 健康检查,因而这里部署 nginx 来代理 API Server 的 /healthz 连接。
/healthz API 默认不需要认证。
将输出结果
验证 Nginx HTTP 健康检查
将输出
记得在每台控制节点上面都运行一遍,包括 controller-0、controller-1 和 controller-2。
Kubelet RBAC 授权
本节将会配置 API Server 访问 Kubelet API 的 RBAC 授权。访问 Kubelet API 是获取 metrics、日志以及执行容器命令所必需的。
这里设置 Kubeket --authorization-mode 为 Webhook 模式。Webhook 模式使用 SubjectAccessReviewarrow-up-right API 来决定授权。
创建 system:kube-apiserver-to-kubelet ClusterRolearrow-up-right 以允许请求 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 节点 。