2.3 以二进制文件方式安装Kubernetes安全高可用集群

通过kubeadm能够快速部署一个Kubernetes集群,但是如果需要精细调整Kubernetes各组件服务的参数及安全设置、高可用模式等,管理员就可以使用Kubernetes二进制文件进行部署。

本节基于Kubernetes 1.19版本,以二进制文件方式对如何配置、部署一个启用了安全机制、3节点高可用的Kubernetes集群进行说明。对于测试环境,可以适当进行简化,将某些组件部署为单点。

2.3.1 Master高可用部署架构

在Kubernetes系统中,Master节点扮演着总控中心的角色,通过不间断地与各个工作节点(Node)通信来维护整个集群的健康工作状态,集群中各资源对象的状态则被保存在etcd数据库中。如果Master不能正常工作,各Node就会处于不可管理状态,用户就无法管理在各Node上运行的Pod,其重要性不言而喻。同时,如果Master以不安全方式提供服务(例如通过HTTP的8080端口号),则任何能够访问Master的客户端都可以通过API操作集群中的数据,可能导致对数据的非法访问或篡改。

在正式环境中应确保Master的高可用,并启用安全访问机制,至少包括以下几方面。

◎ Master的kube-apiserver、kube-controller-mansger和kube-scheduler服务至少以3个节点的多实例方式部署。

◎ Master启用基于CA认证的HTTPS安全机制。

◎ etcd至少以3个节点的集群模式部署。

◎ etcd集群启用基于CA认证的HTTPS安全机制。

◎ Master启用RBAC授权模式(详见6.2节的说明)。

Master的高可用部署架构如图2.1所示。

图2.1 Master的高可用部署架构

在Master的3个节点之前,应通过一个负载均衡器提供对客户端的唯一访问入口地址,负载均衡器可以选择硬件或者软件进行搭建。软件负载均衡器可以选择的方案较多,本文以HAProxy搭配Keepalived为例进行说明。主流硬件负载均衡器有F5、A10等,需要额外采购,其负载均衡配置规则与软件负载均衡器的配置类似,本文不再赘述。

本例中3台主机的IP地址分别为192.168.18.3、192.168.18.4、192.168.18.5,负载均衡器使用的VIP为192.168.18.100。

下面分别对etcd、负载均衡器、Master、Node等组件如何进行高可用部署、关键配置、CA证书配置等进行详细说明。

2.3.2 创建CA根证书

为etcd和Kubernetes服务启用基于CA认证的安全机制,需要CA证书进行配置。如果组织能够提供统一的CA认证中心,则直接使用组织颁发的CA证书即可。如果没有统一的CA认证中心,则可以通过颁发自签名的CA证书来完成安全配置。

etcd和Kubernetes在制作CA证书时,均需要基于CA根证书,本文以为Kubernetes和etcd使用同一套CA根证书为例,对CA证书的制作进行说明。

CA证书的制作可以使用openssl、easyrsa、cfssl等工具完成,本文以openssl为例进行说明。下面是创建CA根证书的命令,包括私钥文件ca.key和证书文件ca.crt:

主要参数如下。

◎ -subj:“/CN”的值为Master主机名或IP地址。