内容纲要
本次安装的版本是1.20,运行时为docker
1. 设置DNS或者主机名称解析
2. 设置时间同步
yum install -y chrony
systemctl enable --now chronyd
3. 关闭防火墙和selinux
4. 禁用SWAP
swapoff -a ; sed -Ei "s@(.*swap.*)@#\1@" /etc/fstab
启动转发规则
cat > /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-iptables = 1
EOF
启用ipvs内核模块
cat > /etc/sysconfig/modules/ipvs.modules <<EOF
#!/bin/bash
ipvs_mods_dir="/usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs"
for mod in \$(ls \$ipvs_mods_dir | grep -o "^[^.]*"); do
/sbin/modinfo -F filename \$mod &> /dev/null
if [ \$? -eq 0 ]; then
/sbin/modprobe \$mod
fi
done
EOF
chmod +x /etc/sysconfig/modules/ipvs.modules
bash /etc/sysconfig/modules/ipvs.modules
构建docker仓库以及docker加速器
wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
mkdir /etc/docker
tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://58f2881f09e94a2981ed846a8887596c.mirror.swr.myhuaweicloud.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
创建k8s仓库
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
安装相关程序包
yum install docker-ce-19.03.15 -y
yum install kubelet-1.20.11 kubeadm-1.20.11 kubectl-1.20.11 -y
#k8s的由于安装源的问题导致会出现仓库校验失败的问题,可以使用--nogpgcheck或者不进行gpgcheck
启动docker服务
!!!docker自1.13版起会自动设置iptables的FORWARD默认策略为DROP,这可能会影响Kubernetes集群依赖的报文转发功能,因此,需要在docker服务启动后,重新将FORWARD链的默认策略设备为ACCEPT,方式是修改/usr/lib/systemd/system/docker.service文件在“ExecStart=/usr/bin/dockerd”一行之后新增一行如下内容:ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT
sed -Ei.bak '/^ExecStart/aExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT' /usr/lib/systemd/system/docker.service
systemctl enable --now docker kubelet
初始化主节点
kubeadm init --kubernetes-version=v1.20.11 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --image-repository=registry.aliyuncs.com/google_containers
按照要求复制相应的文件,同时添加网络插件
!!构建网络插件(注意k8s 17之前的版本和之后使用的插件不一致)
kubectl apply -f oss.theever.top/data/flannel.yaml
为了方便使用构建一个k8s的命令补全
echo "$( kubectl completion bash;kubeadm completion bash; )" > /usr/share/bash-completion/kube_completion
echo 'source /usr/share/bash-completion/kube_completion' >> /etc/bashrc
source /etc/bashrc