集群配置前检查和节点重命名设置
1、要求各节点唯一
# 确保每个节点上 MAC 地址和 product_uuid 的唯一性
ip link
# 或
ifconfig -a
# 对 product_uuid 校验
sudo cat /sys/class/dmi/id/product_uuid
2、重命名主机名
# 设置机器名称,以便在集群中辨识
sudo hostnamectl set-hostname master01
# 永久生效
sudo tee /etc/hostname <<EOF
master01
EOF
3、关闭swap
# 临时关闭,立即生效
sudo swapoff -a
# 永久关闭
# 重启后systemd机制的关系仍会启用swap
sudo vim /etc/fstab
# 注意 noauto 要求 systemd 启动时不自动挂在swap
UUID=f96e71e3-a4b7-4dbb-9576-9ef9ae498717 none swap defaults,noauto 0 0
:wq
# 其他系统,直接注释就可以
# 检查是否生效
free -m
4、防火墙端口
# 安装管理工具
sudo apt install ufw
# 启动防火墙
sudo ufw enable
# 设置控制平面的端口 作用@使用者
sudo ufw allow 6443 # Kubernetes API 服务器@所有组件
sudo ufw allow 2379:2380/tcp # etcd 服务器客户端 API@kube-apiserver, etcd
sudo ufw allow 10250 # Kubelet API@kubelet 自身、控制平面组件
sudo ufw allow 10251 # kube-scheduler@kube-scheduler 自身
sudo ufw allow 10252 # kube-controller-manager@kube-controller-manager 自身
# 工作节点设置端口 作用@使用者
sudo ufw allow 10250 # Kubelet API@kubelet 自身、控制平面组件
sudo ufw allow 30000:32767/tcp # NodePort 服务@所有组件
# Host的8472/udp端口是Flannel/Calico的VXLAN Overlay网络专用端口,即所有跨Host的容器间网络通信都走这个端口
sudo ufw allow 8472/udp
# coredns 使用端口
sudo ufw allow 53
sudo ufw allow 9153/tcp
# flanneld用到了该端口,coredns需要与之通信
sudo ufw allow 443/tcp
# deepin v20 默认未安装 SELINUX 而是采用 AppArmor 简易的权限控制代替,如果是redhat类linux系统,关闭方法如下
##### 注意:不是所有linux系统都有 selinux模块 ######
sudo setenforce 0
vim /etc/selinux/config
SELINUX=disabled
5、启用ipvs
#启用ipvs作为k8s的流量转发模块,相较于Iptables量大情况下更有优势
#从k8s的1.8版本开始,kube-proxy引入了IPVS模式,IPVS模式与iptables同样基于Netfilter,但是采用的hash表,因此当service数量达到一定规模时,hash查表的速度优势就会显现出来,从而提高service的服务性能.
# 安装软件
sudo apt-get install ipvsadm ipset
# ipvsadm 是ipvs模块的操作工具
# ipset 简介
# ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则。而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.官网:http://ipset.netfilter.org/
# 临时生效
sudo modprobe -- ip_vs
sudo modprobe -- ip_vs_rr
sudo modprobe -- ip_vs_wrr
sudo modprobe -- ip_vs_sh
sudo modprobe -- nf_conntrack
# kube-proxy 1.13 以下强制使用 nf_conntrack_ipv4,与linux kernel >= 4.19冲突,此时建议升级到 kube-proxy 1.13+
# use 'nf_conntrack' instead of 'nf_conntrack_ipv4' for linux kernel >= 4.19
# 查看linux内核版本号
uname -r
# 永久生效
sudo tee /root/k8s/ipvs.sh <<EOF
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack
EOF
sudo tee -a /etc/rc.local <<EOF
sh /root/k8s/ipvs.sh
EOF
# 如果 /etc/rc.local 不支持,就创建system.service
sudo tee /etc/systemd/system/auto_run_script.service <<EOF
[Unit]
Description=Run a Custom Script at Startup
After=default.target
[Service]
ExecStart=sh /root/k8s/ipvs.sh
[Install]
WantedBy=default.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable auto_run_script.service
6、配置hosts
192.168.1.100 api.k8s.local
192.168.1.77 master01
192.168.1.88 master02
192.168.1.99 master03
7、各节点安装时间同步软件
sudo apt install -y chrony
|