安装 K8S 前各节点准备工作
Docker & K8S 458 字
安装 K8S 各节点准备工作
配置要求
- 一台兼容的 Linux 主机。Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令。
- 每台机器 2 GB 或更多的 RAM(如果少于这个数字将会影响你应用的运行内存)。
- CPU 2 核心及以上。
- 集群中的所有机器的网络彼此均能相互连接(公网和内网都可以)。
- 节点之中不可以有重复的主机名、MAC 地址或 product_uuid。请参见这里了解更多详细信息。
- 开启机器上的某些端口。请参见这里了解更多详细信息。
- 禁用交换分区。为了保证 kubelet 正常工作,你必须禁用交换分区。
安装 kubeadm | KubernetesFQDN 设置
vim /etc/hosts
# master 节点
192.168.1.10 k8sm1.maksim.website k8sm1
192.168.1.11 k8sm2.maksim.website k8sm2
192.168.1.12 k8sm3.maksim.website k8sm3
# worker 节点
192.168.1.20 k8sw3.maksim.website k8sw3
192.168.1.21 k8sw3.maksim.website k8sw3
192.168.1.22 k8sw3.maksim.website k8sw3
192.168.1.23 k8sw3.maksim.website k8sw3
# 在各个节点上设置
hostnamectl set-hostname k8sm1
安装依赖软件
# 备份原来的yum源
$ > sudo yum install wget net-tools nfs-utils lrzsz gcc gcc-c++ make cmake libxml2-devel openssl-devel curl curl-devel unzip sudo ntp libaio-devel wget vim ncurses-devel autoconf automake zlib-devel python-devel epel-release openssh-server socat ipvsadm conntrack ntpdate -y
关闭firewalld防火墙
systemctl stop firewalld && systemctl disable firewalld
安装iptables
# 安装iptables
yum install iptables-services -y
# 禁用iptables
service iptables stop && systemctl disable iptables
时间同步
$ > ntpdate cn.pool.ntp.org
# 6.2 编辑计划任务,每小时做一次同步
$ > crontab -e
* */1 * * * /usr/sbin/ntpdate cn.pool.ntp.org
$ > service crond restart
关闭selinux,各个节点操作
设置永久关闭,这样重启机器selinux也处于关闭状态
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
上面文件修改之后,需要重启虚拟机,可以强制重启:
reboot -f
关闭交换分区,各个节点操作
这个当内存不足时,linux会自动使用swap,将部分内存数据存放到磁盘中,这个这样会使性能下降,为了性能考虑推荐关掉,而在安装 k8s 的时候,如果开启了交换分区,k8s 会进行报错。
# 临时关闭
$ > swapoff -a
# 永久禁用,打开/etc/fstab注释掉swap那一行。
$ > sed -i 's/.*swap.*/#&/' /etc/fstab
设置网桥包经IPTables,core文件生成路径,配置永久生效
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 >/proc/sys/net/bridge/bridge-nf-call-ip6tables
echo """
vm.swappiness = 0
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
""" > /etc/sysctl.conf
sysctl -p
开启ipvs
不开启ipvs将会使用iptables,但是效率低,所以官网推荐需要开通ipvs内核
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_modules="ip_vs ip_vs_lc ip_vs_wlc ip_vs_rr ip_vs_wrr ip_vs_lblc ip_vs_lblcr ip_vs_dh ip_vs_sh ip_vs_fo ip_vs_nq ip_vs_sed ip_vs_ftp nf_conntrack"
for kernel_module in \${ipvs_modules}; do
/sbin/modinfo -F filename \${kernel_module} > /dev/null 2>&1
if [ $? -eq 0 ]; then
/sbin/modprobe \${kernel_module}
fi
done
EOF
# 执行
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep ip_vs