2.1 系统要求
Kubernetes 系统由一组可执行程序组成,用户可以通过Kubernetes 在 Github 的项目网站下载编译好的二进制文件或镜像文件,或者下载源码并自行将其编译为二进文件。
安装 Kubernetes 对软件和硬件的系统要求如表2.1 所示。
软硬件 | 最低配置 | 推荐配置 |
---|---|---|
主机资源 | 集群规模为1~5个节点的时,要求如下。 master:至少1coreCPU和2GB内存。 node: 至少1corecpu 和 1GB 内存。 随着集群规模的增大,应相应增加主机的配置。大规模集群的硬件配置可以参考kubernetes 官网给出的建议 | Master:4core cpu 和16GB内存。 node:根据需要运行的容器数量进行配置 |
Linux操作系统 | 各种Linux发行版,包括Red Hat Linux 、centos、Fedora、ubantu等,kerner 版本要求在3.10及以上 | Centos 7.8 |
etcd | v3版本及以上 | v3 |
docker | Kubernetes 支持的 docker 版本包括1.13.1、17.03、17.06、17.09、19.03等,推荐使用19.03版本 | 19.03 |
kubernetes 需要容器运行时(container runtime interface,CRI)的支持,目前官方支持的容器运行时包括:Docker 、container、CRI-o 和 frakti等。本节以Docker作为容器运行环境,推荐的版本为Docker CE 19.03.
需要注意的是,centos 7 默认启动了防火墙服务,而Kubernetes 的Master 与工作Node之间会有大量的网络通信。安全的做法是在防火墙上配置各组件需要相互通信的端口号,具体配置如下图
组件 | 默认端口号 |
---|---|
API Server | 8080(HTTP 非安全端口号) 6443(HTTPS 安全端口号) |
Controller Manager | 10252 |
Scheduler | 10251 |
kubelet | 10250 10255 (只读端口号) |
etcd | 2379(供客户端访问) 2380(供etcd 集群内部节点之间的访问) |
集群DNS服务 | 53(UDP) 53 (TCP) |
其他组件可能还需要开通某些端口号,例如cni网络插件calico 需要179端口号;镜像库需要5000端口号等,需要根据系统要求逐个在防火墙上配置网络策略。
在安全的网络环境中,可以简单地关闭防火墙服务:
另外,建议在主机上禁用SELinux ,让容器可以读取主机文件系统。随着Kubernetes对selinux 支持的增强,可以逐步启用selinux机制,并通过kubernetes 设置容器的安全机制。
2.2 使用 Kuberadm 工具快速安装 Kubernetes集群
Kubernetes从1.4版本开始引入了命令行工具kubeadm,致力于简化 集群的安装过程,到Kubernetes 1.13版本时,kubeadm工具达到GA阶 段。本节讲解基于kubeadm的安装过程,操作系统以CentOS 7为例。
2.2.1 安装kuberadm
对kubeadm工具的安装在CentOS操作系统上可以通过yum工具一键完成。
kuberadm 还需要关闭Linux 的 swap 系统交换分区,这可以通过swapoff-a 命令实现