上文讲述了机器及基本配置, 本文讲述机器的初始化。 整体步骤于网络整理, 并于多次搭建成功后整理脚本, 博文中均为拆解脚本。
1.初始机器安装必要软件
echo "------------------------------ 安装必要软件 install ------------------------------"
yum install -y wget vim net-tools epel-release
2. 关闭防火墙
echo "------------------------------ 关闭防火墙 stop frewalld ------------------------------"
systemctl disable firewalld
systemctl stop firewalld
3. 关闭selinux
echo "------------------------------ 关闭selinux ------------------------------"
setenforce 0
sed -i 's/SELINUX=permissive/SELINUX=disabled/' /etc/sysconfig/selinux
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
4. 禁用交换分区
echo "------------------------------ 禁用交换分区 ------------------------------"
swapoff -a
sed -i 's/.*swap.*/#&/' /etc/fstab
echo "vm.swappiness = 0">> /etc/sysctl.conf
sysctl -p
5. 禁用ipv6,配置内核参数,将桥接的IPv4流量传递到iptables的链
cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward=1
EOF
sysctl --system
sysctl -p /etc/sysctl.d/k8s.conf
modprobe br_netfilter
6. 加载模块
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_ipv4
EOF
7. 修改权限
echo "----------------------- 修改权限-------------------------------"
chmod 755 /etc/sysconfig/modules/ipvs.modules && bash /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
8. 查看是否已经正确加载所需的内核模块
echo "----------------------- 查看是否已经正确加载所需的内核模块 -------------------------------"
lsmod | grep -e ip_vs -e nf_conntrack_ipv4
yum install ipset ipvsadm -y
9. 配置国内yum源
yum install -y wget
rm -rf /etc/yum.repos.d/bak
mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo
yum clean all && yum makecache && yum update -y && yum install vim tree -y
- 安装docker
registry-mirrors 镜像地址, 可自行于阿里注册使用docker镜像加速
exec-opts: native.cgroupdriver=cgroupfs/systemd
作者前几次安装均为systemd 后续出现K8Smaster启动失败问题, 查证问题后修改为cgroupfs。
并于后续新创建虚拟机搭建使用cgroupfs无错误。 集群搭建中遇到问题较多, 请具体问题具体分析并查证
echo "-----------------------安装docker-------------------------------"
sudo mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://n37ptxkx.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=cgroupfs"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"data-root": "/docker/"
}
EOF
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install -y docker-ce
systemctl enable docker
systemctl start docker
11. 设置iptables模式
echo "- 设置iptables模式 ------------"
iptables -P FORWARD ACCEPT
12. 同步时间
同步时间, 如果有内部自己的时间服务请用自己时间服务
echo "- 自己开发, 时间同步外部网络时间 ------------"
yum install ntpdate -y
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate ntp1.aliyun.com
13. 机器基本初始化结束
1) 请查看docker是否正常启动
systemctl status docker
2)查看时间是否一致, 时间问题很重要。 时间不一致会出现node节点向master注册的时候报token失效问题, 有时也会影响etcd集群问题
date