k8s部署-操作系统环境准备

k8s部署-操作系统环境准备

说明

因为内容确实比较多,所以单独用一篇来写 操作系统的环境准备还是有必要的

有些是非必须的, 有些是为了私有化部署的内容, 选择性使用;

虚拟机准备

之前部署使用过虚拟机, 恢复虚拟机快照, 并设置内存大小为 3G, 操作系统为 centos7;
不过目前环境没有再在用;

1
2
3
4
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

1
2
3
4
5
6
7
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

内网 日志 服务器

集中日志存储, 避免来回多主机查看系统日志

1
2
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 包;

防火墙

此处为了方便直接停了, 实际可以不停止, 信任相关主机段地址, 或者开放个别端口也可以的;

1
2
3
4
5
systemctl stop firewalld.service
systemctl disable firewalld.service

systemctl stop iptables
systemctl disable iptables

selinux

此处是直接关了, 早期兼容性不好; 目前看文档说是 k8s 和 selinux 的兼容性已经很好了, 但不确定运行时和 selinux的兼容性, 所以如果启用了, 需要注意观察;

1
2
3
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 能看到桥接的流量

1
2
3
4
5
6
7
cat > /etc/modules-load.d/k8s.conf <<EOF
overlay
br_netfilter
EOF

modprobe overlay
modprobe br_netfilter

这里的配置主要目的是将二层的流量转到 iptables, 因为默认 iptable 只处理三层的包;

1
2
3
4
5
6
7
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 模块, 没有升级是另外一个名字

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
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

1
2
echo 'export PATH=$PATH:/opt/k8s/bin' >> ~/.bash_profile
source ~/.bash_profile

重启主机

可选, 实际没必要
reboot

Licensed under CC BY-NC-SA 4.0
转载或引用本文时请遵守许可协议,知会作者并注明出处
不得用于商业用途!
最后更新于 2023-03-23 00:00 UTC