上文講述了機器及基本配置, 本文講述機器的初始化。 整體步驟於網絡整理, 並於多次搭建成功後整理腳本, 博文中均爲拆解腳本。
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