操作系统环境准备
说明
因为内容确实比较多,所以单独用一篇来写 操作系统的环境准备还是有必要的
有些是非必须的, 有些是为了私有化部署的内容, 选择性使用;
虚拟机准备
之前部署使用过虚拟机, 恢复虚拟机快照, 并设置内存大小为 3G, 操作系统为 centos7; 不过目前环境没有再在用;
virsh snapshot-revert w50 20201018
virsh setmaxmem w50 --size 3G --config
virsh setmem w50 --size 3G --config
virsh start w50通用系统环境初始化
内网 yum 源配置
先上传内网 yum 源配置文件, 再更新仓库 yum clean all && yum repolist
安装基础包
yum install -y bash-completion tcpdump
时间同步
指定内部 ntp server
yum install -y chrony
sed -i "s/^server/#server/" /etc/chrony.conf
sed -i "/3.centos/a server 10.2.2.5 iburst" /etc/chrony.conf
systemctl restart chronyd.service
systemctl enable chronyd.service内部 dns 服务器
就不再需要每个节点都维护 hosts 文件了; 注意在内网 dns 解析配置上, 把所有主机都加上, 初始化集群时需要
echo ’nameserver 10.2.1.5’ » /etc/resolv.conf
内网 日志 服务器
集中日志存储, 避免来回多主机查看系统日志
sed -i '/local7/a *.* @10.2.1.5:5140' /etc/rsyslog.conf
systemctl restart rsyslog.service私有 CA 证书更新
因为这个私有环境中业务层有大量使用 tls, 所以提前放置内部的私有CA 证书;\
/etc/pki/ca-trust/source/anchors/cwxCA.pem
update-ca-trust
操作系统配置优化
文件打开数优化 echo “* - nofile 102400” » /etc/security/limits.conf
===
k8s 环境专有的系统配置优化
更新内核
更新操作系统内核版本 kernel-core-5.4.225-200.el7.x86_64, 默认内核版本是 3.x, 可以直接使用 centos 的扩展源拉取新版本包;
更新 libseccomp
因为 el7 的包太旧, 所以这里用 el8 的包; libseccomp-2.5.2-1.el8.x86_64.rpm 包;
防火墙
此处为了方便直接停了, 实际可以不停止, 信任相关主机段地址, 或者开放个别端口也可以的;
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl stop iptables
systemctl disable iptablesselinux
此处是直接关了, 早期兼容性不好; 目前看文档说是 k8s 和 selinux 的兼容性已经很好了, 但不确定运行时和 selinux的兼容性, 所以如果启用了, 需要注意观察;
getenforce
setenforce 0
sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config关闭 swap
早期版本需要彻底关闭 swap, 目前新版本已经兼容 swap 了; 但是如果开启, 需要单独配置 kubelet, 还需要测试确认, 比较麻烦, 推荐还是关闭好了;
sysctl -w vm.swappiness=0
swapoff -a
然后把 fstab 里面的 swap 给注释了
安装 ipset 和 ipvsadm
因为后面 proxy 会采用 ipvs 模式, 所以此处提前安装 ipset 和 lvs 的用户态管理工具;
yum install -y ipset ipvsadm
配置防火墙模块
配置网桥转发 将桥接的 IPv4 流量传递到 iptables 的链; 让 iptable 能看到桥接的流量
cat > /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter这里的配置主要目的是将二层的流量转到 iptables, 因为默认 iptable 只处理三层的包;
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOF
sysctl --system载入 ipset 和 ipvsadm 模块
注意升级内核后才是 nf_conntrack 模块, 没有升级是另外一个名字
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
chmod 755 /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules配置 PATH
echo 'export PATH=$PATH:/opt/k8s/bin' >> ~/.bash_profile
source ~/.bash_profile重启主机
可选, 实际没必要 reboot