配置 host

修改 host 解析域名, 为了方便后面集群节点间的直接调用。
也就是配置主机名解析,在实际上的企业中,推荐使用内部DNS服务器。
ifconfig查看 IP 地址,将对应的 IP 地址写入文件:

  1. vim /etc/hosts
  2. # 内容 根据自己的ip配置
  3. 192.168.88.130 master1
  4. 192.168.88.128 node1
  5. 192.168.88.129 node2
  6. # 保存
  7. wq

ping 测试一下是否成功:

  1. ping node1
  2. ping node2
  3. ping master1

image.png

时间同步

因为 Kubernetes 需要我们所以的服务器时间必须保持一致:

  1. # 启动chronyd服务
  2. systemctl start chronyd
  3. # 设置开机自启
  4. systemctl enable chronyd
  5. # 查看时间
  6. date
  7. # 重启
  8. reboot
  9. # 查看时间
  10. date

image.png

禁用 iptables 和 firewalld

Kubernetes 和 docker 在运行时会产生大量 iptables 规则,为了不让系统规则和它们混淆,直接关闭系统的规则。

iptables 是 Linux 防火墙工作在用户空间的管理工具,是 netfilter/iptables IP 信息包过滤系统是一部分,用来设置、维护和检查 Linux 内核的 IP 数据包过滤规则。

下载 iptables-services:
image.png

  1. # 关闭firewalld服务
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. # 关闭iptables
  5. systemctl stop iptables
  6. systemctl disable iptables

image.png
image.png

禁用 selinux

selinux 是 linux 系统下的一个安全服务,如果不关闭它,在安装集群中会产生各种各样的奇葩问题 。

  1. # 编辑 /etc/selinux/config 文件,修改SELINUX的值为disabled
  2. # 注意修改完毕之后需要重启linux服务
  3. SELINUX=disabled

image.png

禁用 swap 分区

swap 分区指的是虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间虚拟成内存来使用,启用 swap 设备会对系统的性能产生非常负面的影响,因此kubernetes 要求每个节点都要禁用 swap 设备,但是如果因为某些原因确实不能关闭 swap 分区,就需要在集群安装过程中通过明确的参数进行配置说明。

  1. # 编辑分区配置文件/etc/fstab,注释掉swap分区一行
  2. # 注意修改完毕之后需要重启linux服务
  3. UUID=455cc753-7a60-4c17-a424-7741728c44a1 /boot xfs defaults 0 0
  4. /dev/mapper/centos-home /home xfs defaults 0 0
  5. # /dev/mapper/centos-swap swap swap defaults 0 0

注释掉。

修改 Linux 的内核参数

  1. # 修改linux的内核参数,添加网桥过滤和地址转发功能
  2. # 编辑/etc/sysctl.d/kubernetes.conf文件,添加如下配置:
  3. net.bridge.bridge-nf-call-ip6tables = 1
  4. net.bridge.bridge-nf-call-iptables = 1
  5. net.ipv4.ip_forward = 1
  6. # 重新加载配置
  7. [root@master ~]# sysctl -p
  8. # 加载网桥过滤模块
  9. [root@master ~]# modprobe br_netfilter
  10. # 查看网桥过滤模块是否加载成功
  11. [root@master ~]# lsmod | grep br_netfilter

image.png
存在 br_netfilter 模块,表示加载成功。

配置 ipvs 功能

在 kubernetes 中 service 有两种代理模型,一种是基于 iptables 的,一种是基于 ipvs 的。两者比较的话,ipvs 的性能明显要高一些,但是如果要使用它,需要手动载入 ipvs 模块。

  1. # 1 安装ipset和ipvsadm
  2. [root@master ~]# yum install ipset ipvsadmin -y
  3. # 2 添加需要加载的模块写入脚本文件
  4. [root@master ~]# cat <<EOF > /etc/sysconfig/modules/ipvs.modules
  5. modprobe -- ip_vs
  6. modprobe -- ip_vs_rr
  7. modprobe -- ip_vs_wrr
  8. modprobe -- ip_vs_sh
  9. modprobe -- nf_conntrack_ipv4
  10. EOF
  11. # 3 为脚本文件添加执行权限
  12. [root@master ~]# chmod +x /etc/sysconfig/modules/ipvs.modules
  13. # 4 执行脚本文件
  14. [root@master ~]# /bin/bash /etc/sysconfig/modules/ipvs.modules
  15. # 5 查看对应的模块是否加载成功
  16. [root@master ~]# lsmod | grep -e ip_vs -e nf_conntrack_ipv4

image.png

检查环境

  1. [root@master ~]# getenforce
  2. Disabled

image.png

  1. [root@master ~]# free -m
  2. total used free shared buff/cache available
  3. Mem: 1819 191 1452 9 175 1477
  4. Swap: 0 0 0