K8S安装

发布于 2022-10-08  21534 次阅读


内容纲要

本次安装的版本是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
最后更新于 2022-10-08