k8s环境搭建 环境初始化
k8s环境初始化配置
·
k8s环境搭建 环境初始化
环境初始化
这里以三台主机为例,一台master节点,两台node节点
-
检查操作系统版本,kubeadm要求版本在7.5以上
cat /etc/redhat-release
-
主机名解析,编辑三台服务器在 /etc/hosts 文件下,添加一下内容
#主机名解析
cat >> /etc/hosts <<EOF
#你每台主机的IP地址 和你自己设置的主机名或者域名
IP1 master
IP2 node1
IP3 node2
EOF
- 时间同步
#时间同步
#k8s要求集群中节点时间必须精确一致,这里直接使用chronyd 同步网络时间
systemctl start chronyd
systemctl enable chronyd
- 关闭防火墙,k8s和docker运行过程中会产生大量的iptables规则,为了让系统不混淆,直接关闭规则
#关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
- 禁用selinux
selinux时linux下的安全服务,如果不关闭可能在部署集群时,产生各种各样的问题
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config
- 禁用swap分区
swap分区是指虚拟内存分区,作用是物理内存使用完之后,将磁盘空间虚拟成内存使用,启用swap分区会对系统性能产生负面影响
注释掉/etc/fstab
[root@vm1 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu May 18 03:22:16 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=f4523fee-7f93-4a46-b24c-e66979053a29 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
sed -i '/\/dev\/mapper\/centos-swap/s/^/#/' /etc/fstab
- 修改linux内核参数,添加网桥过滤和地址转发功能
编辑/etc/sysctl.d/kubernetes.conf ,添加配置
echo "net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1 " >> /etc/sysctl.d/kubernets.conf
#重新加载配置
sysctl -p
#加载网桥过滤
modprobe br_netfilter
#查看模块是否加载成功
lsmod | grep br_netfilter
- 配置ipvs功能
k8s中service有两种代理模型,一种基于ipatbels,另一种基于ipvs,ipvs性能明显高于iptables,如果使用,需要手动载入ipvs模块
#配置ipvs功能
#安装ipset和ipvsadmin
yum install ipset ipvsadmin -y &>/dev/null
#添加需要加载的模块写入脚本
cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
#为脚本添加可执行权限
chmod u+x /etc/sysconfig/modules/ipvs.modules
#执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
#查看模块是否加载成功
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
整合脚本
#!/bin/bash
#设置你的主机名或者域名
echo "请输入你要设置的主机名或者域名 :"
read vm_name
hostnamectl set-hostname --static $vm_name
#安装vim编辑器
yum install -y vim
#主机名解析
cat >> /etc/hosts <<EOF
#你每台主机的IP地址 和你自己设置的主机名或者域名 这几行都是可以你自己设置的
IP1 master
IP2 node1
IP3 node2
EOF
#时间同步
#k8s要求集群中节点时间必须精确一致,这里直接使用chronyd 同步网络时间
systemctl start chronyd
systemctl enable chronyd
#关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
#关闭selinux
sed -i '/SELINUX/{s/enforcing/disabled/}' /etc/selinux/config
#禁用swap分区
sed -i '/\/dev\/mapper\/centos-swap/s/^/#/' /etc/fstab
#修改linux内核参数,添加网桥过滤和地址转发功能
echo "net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1 " > /etc/sysctl.d/kubernets.conf
#重新加载配置
sysctl -p
#加载网桥过滤
modprobe br_netfilter
#查看模块是否加载成功
if ! lsmod | grep br_netfilter &>/dev/null; then
echo "模块 br_netfilter 未成功加载"
else
echo "模块 br_netfilter 已成功加载"
fi
#配置ipvs功能
#安装ipset和ipvsadmin
yum install ipset ipvsadmin -y
#添加需要加载的模块写入脚本
cat <<EOF > /etc/sysconfig/modules/ipvs.modules
#!/bin/bash
modprobe -- ip_vs
modprobe -- ip_vs_rr
modprobe -- ip_vs_wrr
modprobe -- ip_vs_sh
modprobe -- nf_conntrack_ipv4
EOF
#为脚本添加可执行权限
chmod u+x /etc/sysconfig/modules/ipvs.modules
#执行脚本文件
/bin/bash /etc/sysconfig/modules/ipvs.modules
#查看模块是否加载成功
echo "ipvs.modules 模块载入情况 : "
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
#步骤完成后,需要重新启动linux系统
echo "脚本执行完毕,是否重启 [y/n] ?"
read choice
if [ "$choice" == "y" ] ; then
echo "重启"
reboot
else
echo "稍后请你自行重启"
fi
执行脚本时,赋予脚本权限并下载一个插件规范shell脚本的格式以免出错,再执行
yum install -y dos2unix
dos2unix [脚本名]
Gitee地址:
更多推荐
已为社区贡献12条内容
所有评论(0)