环境:
Ubuntu 20.04.2 LTS \n \l
生产环境的集群搭建推荐使用Kubeadm,
Kubeadm工具的出发点很简单,就是尽可能简单的部署一个生产可用的Kubernetes集群。实际也确实很简单,只需要两条命令:
# 创建一个 Master 节点
$ kubeadm init
# 将一个 Node 节点加入到当前集群中
$ kubeadm join <Master 节点的 IP 和端口 >
1-环境准备:
我的三台虚拟机服务器
172.30.10.175 master
172.30.10.25 node1
172.30.10.164 node2
1:设置系统主机名以及 Host 文件的相互解析
查看主机名: hostname
修改主机名:vim /etc/hostname
重启系统:reboot
分别在三个虚拟机执行上面的命令主机名分别为:master,node1,node2
添加host解析:
编辑etc/hosts文件
cat <<EOF>> /etc/hosts
172.30.10.175 master
172.30.10.25 node1
172.30.10.164 node2
EOF
在三台服务器分别执行上面这个
验证
随便找一台服务器,ping 以下主机名测试
ping node1
ping node2
2:时间同步
kubernets要求集群中的时间节点必须精确一致;
3:禁用iptables和firewalld服务
kubernets和docker在运行中会产生大量的iptables规则(会实现一些转发和路由),为了不让系统规则跟他们混淆,直接关闭系统的规则;
关闭防火墙:
sudo ufw status 查看当前防火墙状态
sudo ufw enable 开启防火墙
sudo ufw disable 关闭防火墙
关闭iptables服务:
apt-get remove iptables
4:关闭selinux
selinux是linux系统下的一个安全服务,若是不关闭它,在安装集群的时候会产生各种奇怪的问题;
编辑/etc/selinux/config 文件,
修改SELINUXD的值为disabled
注意,修改完毕后需要重启服务器
重启:reboot
我的ubuntu 20找不到这个文件,有谁知道怎么关闭的可以讲下
查看selinux是否开启还是关闭:
getenforce
不过会提示没有这个工具,首先要安装下这个:
apt install selinux-utils
然后我安装好后,再getenforce:
root@master:/etc/selinux# getenforce
Disabled
已经是关闭状态的;
5:禁用swap分区
swap分区指的是虚拟内存分区,作用是在物理内存使用完后,将磁盘空间虚拟成内存来使用;
启用swap设备会对系统的性能产生非常负面的影响,因此kubernetes要求每个节点都要禁用swap设备,但是如果因为某些原因确实不能关闭swap分区,就需要在集群安装过程中通过明确的参数进行配置说明;
禁用swap分区:
vim /etc/fstab
注释掉最后一行的swap
然后重启:
reboot
然后free -m
可以看到swap的空间为0了
6:调整linux中的内核参数
修改linux的内核参数,添加网桥过滤和地址转发功能
1:添加一个文件,编辑内容如下:
vim /etc/sysctl.d/kubernetes.conf
添加如下配置:
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
修改完后需要重新加载配置:
sysctl -p /etc/sysctl.d/kubernetes.conf
或者
sysctl -p
2:加载网桥过滤模块:
modprobe br_netfilter
查看是否加载成功:
lsmod |grep br_netfilter
7:配置ipvs功能
在kubernetes中service(做服务端口接口暴露的,负载均衡,反向代理)有两种代理模型,一种是基于iptables的,一种是基于ipvs的,
两者比较的话,ipvs的性能明显要高一些,但是如果要使用它,需要手动载入ipvs模块;
apt install ipvsadm ipset -y
# ipvs作为kube-proxy的转发机制,开启ipvs模块支持
modprobe ip_vs && modprobe ip_vs_rr && modprobe ip_vs_wrr && modprobe ip_vs_sh
# 开机启用的ipvs
cat <<EOF >> /etc/modules
ip_vs_rr
ip_vs_wrr
ip_vs_sh
ip_vs
EOF
查看是否安装成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
上面的那些安装完成后,最好重启下三台服务器;
参考:
kubeadm部署1.17.3[基于Ubuntu18.04] - 云原生之道 - 博客园