安装 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

Referer

maksim
Maksim(一笑,吡罗),PHPer,Goper
OωO
开启隐私评论,您的评论仅作者和评论双方可见