Kubernetes集群节点规划如表2-1所示。
表2-1 Kubernetes集群节点规划
集群节点运行的组件如图2-1所示。
图2-1 集群节点运行的组件
在上述环境中,我们选择Docker作为Kubernetes的容器运行时。因此,除了部署Kubernetes组件,还需部署Docker相关服务。
同时,需要确保这些服务器满足以下条件。
可以访问互联网,因为在部署过程中会联网下载容器镜像。
服务器之间的网络必须互通。
当服务器处于一个防火墙环境中时,需要开放相关端口,Kubernetes涉及的端口如表2-2所示。
表2-2 Kubernetes涉及的端口
在搭建Kubernetes集群之前,需要对操作系统进行一系列配置,以满足环境要求。根据表2-1,对所有节点执行以下操作。
Iptables默认会生成一些规则。Iptables配置不正确,则会影响节点之间的通信。建议先清空这些规则。清空Iptables默认规则:
[root@localhost ~]# iptables -F
SELinux是Linux的一种安全机制,但它使用起来复杂并且存在兼容性问题,因此通常选择关闭它。临时关闭SELinux:
[root@localhost ~]# setenforce 0
该命令为临时生效。为了确保该命令在重启系统后继续有效,需要将配置文件“/etc/selinux/config”中的“SELINUX”字段值设置为“disabled”。
Swap是一种虚拟内存技术,它允许系统将部分内存数据写入硬盘的特定分区中,从而释放更多物理内存。由于硬盘读写性能相比物理内存低,因此使用Swap会影响系统处理性能。Kubelet组件默认要求关闭Swap,以提高系统的稳定性和可靠性。关闭Swap交换分区:
[root@localhost ~]# swapoff -a
该命令为临时生效。为了确保重启系统后关闭Swap继续有效,需要注释系统表文件“/etc/fstab”中文件系统类型为“swap”的行。
根据表2-1,设置主机名:
[root@localhost ~]# hostnamectl set-hostname <主机名>
某些Kubernetes网络插件可能使用网络桥接(Bridge),为了确保网络桥接的数据包经过Iptables处理,需要启用相关的内核参数:
[root@localhost ~]# sysctl net.bridge.bridge-nf-call-ip6tables=1 [root@localhost ~]# sysctl net.bridge.bridge-nf-call-iptables=1
该命令为临时生效。为了确保该命令在重启系统后继续有效,需要将这两个内核参数保存到“/etc/sysctl.d”目录下名为“k8s.conf”的文件中,该文件包含以下内容:
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1
在所有节点上安装并启动Docker。
但Docker新版软件包未被包含在系统默认软件源中,需要额外配置Yum软件源,如下载阿里云Yum软件源文件:
[root@localhost ~]# wget https://mirrors.aliyun.com/docker-ce/linux/ centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
安装指定版本Docker:
[root@localhost ~]# yum install -y docker-ce-24.0.0
启动并设置开机启动项:
[root@localhost ~]# systemctl start docker [root@localhost ~]# systemctl enable docker