本人菜鸡,首先明确搭建k8s前为什么要做初始化。由于centos停止维护,我们的业务在ubantu系统上不断尝试,所以需要我们不断来探索ubantu和centos的区别和兼容性。你们公司是从centos准备转什么系统,业务是否会有瓶颈,兼容性是否可以。咱们可以交流下
我总结的原因是以下原因:
1.关闭防火墙,主要是为了保证内部正常通信
2.关闭swap分区,虽然不是强制要求,但是官方文档上建议这样做。我也确确实实遇到过这个问题,因为我的swap分区开着,直接导致我的node节点出现了noready的状态。
3.开启时间同步,开启时间同步是为了保证etcd集群间的正常通讯。你如果不做她会给你报etcd集群间时间差异过大的错误。(我的脚本中并没有写这一步,自己可以做,建议用nfs时间同步。)
4.修改内核,为了确保网络通信的正确性、安全性和效率。(我的脚本只修改了基础的内核,如有需要,可以自行修改一下)
5.做内核优化(例如修改最大打开文件个数)
下面是我写的一个脚本,写作不易,如果脚本对大家有帮助,希望大家可以点个赞!
root@waware:~#vim k8sc.sh
这里进去,如果你直接复制粘贴可能会乱。
按住shift键,然后点:
输入set paste然后再输入个a或者i就可以正常输入了
#!/bin/bash
keywords=("pool ntp.ubuntu.com" "pool 0.ubuntu.pool.ntp.org" "pool 1.ubuntu.pool.ntp.org" "pool 2.ubuntu.pool.ntp.org")
###########关闭防火墙
# 检查ufw的状态
ufw_status=$(ufw status | grep 'Status: active')
if [ -n "$ufw_status" ]; then
# 如果防火墙是开启的,则执行关闭命令
sudo ufw disable
if [ $? -eq 0 ]; then
echo -e "\033[1;32m防火墙已成功关闭,处于永久关闭状态\033[0m"
else
echo -e "\033[1;31m关闭防火墙时发生错误,请检查您的系统状态或权限\033[0m"
fi
else
# 如果防火墙已经是关闭的,则输出消息
echo -e "\033[1;32m防火墙处于永久关闭状态\033[0m"
fi
##################关闭swap分区
if grep -q '^[^#].*swap' /etc/fstab; then
sed -i '/swap/s/^/#/' /etc/fstab
echo -e "\033[1;32mSWAP分区已永久关闭\033[0m"
if grep -q '^[^#].*swap' /etc/fstab; then
echo -e "\033[1;31mSWAP分区关闭失败\033[0m"
else
echo -e "\033[1;32mSWAP处于永久关闭状态\033[0m"
fi
else
echo -e "\033[1;32mSWAP分区处于永久关闭状态\033[0m"
fi########################关闭selinux
# 检查/etc/selinux/config文件是否存在
if [ ! -f /etc/selinux/config ]; then
echo -e "\033[1;32mSELinux配置文件不存在!selinux处于永久关闭状态\033[0m"
else
# SELinux配置文件存在,检查是否已设置为disabled
grep '^SELINUX=disabled' /etc/selinux/config
if [ $? -ne 0 ]; then
# SELinux没有设置为disabled,尝试将其设置为disabled
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo setenforce 0
# 设置后需要重启系统才能使更改生效
if [ $? -ne 0 ]; then
echo -e "\033[1;31mSELinux关闭失败\033[0m"
else
echo -e "\033[1;32mSELinux已永久关闭\033[0m"
fi
else
echo -e "\033[1;32mSELinux已永久关闭\033[0m"
fi
fi########################设置文件打开的最大个数
ulimit -SHn 65535
cat >> /etc/security/limits.conf <<EOF
root soft nofile 65535
root hard nofile 65535
root soft nproc 65535
root hard nproc 65535
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
EOF################################修改内核
cat <<EOF | tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOFmodprobe overlay
modprobe br_netfilter
cat <<EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF#################################加载内核参数
apt -y install ipvsadm ipset sysstat conntrack &> /dev/null &cat > /etc/profile.d/ipvs.modules <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
chmod 755 /etc/profile.d/ipvs.modules
##这些内核只满足基本的k8s的搭建,如果有需要可以自行研究
bash /etc/profile.d/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
root@waware:~# bash 2.sh
如果输出下面的这种,只要不报红色字体或者错误就证明你的初始化再做个时间同步就好了。