关闭防火墙
ufw disable
网络设置
/etc/sysctl.d/k8s.conf
cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
vm.swappiness = 0
EOF
modprobe br_netfilter
sysctl -p /etc/sysctl.d/k8s.conf
/etc/sysctl.d/k8s.conf 是一个文件,它包含了一些 Linux 内核参数的配置,这些配置对于 Kubernetes 集群的运行是必须的。在这个文件中,管理员可以配置网络、内存、文件系统等方面的参数,以便使集群的性能和可靠性得到优化和提高。
- net.bridge.bridge-nf-call-ip6tables:允许桥接网络调用 IPv6 的 iptables
- net.bridge.bridge-nf-call-iptables:允许桥接网络调用 iptables
- net.ipv4.ip_forward:允许 IP 转发功能
- net.ipv4.tcp_tw_recycle:启用 TCP 时间戳选项,提高 TCP 连接的效率
- vm.swappiness:定义系统交换分区使用的程度,减少交换分区的使用可以提高性能
- vm.overcommit_memory:允许系统过度分配内存,防止应用程序由于内存限制而崩溃
- fs.inotify.max_user_watches:提高 inotify 监视文件数的限制,以避免无法监视新文件
mkdir -p /etc/sysconfig/modules/
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
chmod 755 /etc/sysconfig/modules/ipvs.modules && sh /etc/sysconfig/modules/ipvs.modules && lsmod | grep -e ip_vs -e nf_conntrack_ipv4
/etc/sysconfig/modules/ipvs.modules是一个用于Linux系统的模块加载文件,它包含了在启动时自动加载IPVS模块的命令。IPVS是Linux内核中的一种网络负载均衡技术,需要在系统中加载相应的内核模块才能使用。
该文件的作用是在系统启动时自动加载IPVS模块,而不需要手动执行命令进行加载。它通过在/usr/lib/modules-load.d/目录下创建一个名为ipvs.conf的文件,将IPVS模块添加到系统启动时自动加载的模块列表中。这样,在下次系统重启后,IPVS模块将自动加载并可用于进行负载均衡。
其中,modprobe命令用于加载指定的内核模块,--选项表示指定的参数是内核模块的名称,ip_vs、ip_vs_rr、ip_vs_wrr和ip_vs_sh是IPVS负载均衡中常用的内核模块。
使用该文件可以避免在每次系统重启后手动加载IPVS模块的繁琐操作,使得负载均衡配置更加方便和稳定。
关闭swap分区
/sbin/swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
echo "vm.swappiness=0" >> /etc/sysctl.conf
/sbin/sysctl -p
在 Kubernetes 集群中,关闭 swap 分区是为了保证系统的稳定性和安全性。Swap 分区是一种内存缓存,用于在物理内存不足时缓解压力,但它的效率比物理内存要低得多。在 Kubernetes 中,容器的内存是由 cgroups 进行限制和分配的,如果使用了 swap 分区,可能会导致内存分配不准确,影响容器的运行。此外,关闭 swap 分区还可以避免因为 swap 导致系统负载过高、运行缓慢、死机等问题。因此,在安装 Kubernetes 时,需要关闭 swap 分区。
安装docker
tee -a /etc/apt/sources.list <<EOF
# kubeadm及kubernetes组件安装源
deb https://mirrors.aliyun.com/kubernetes/apt kubernetes-xenial main
该源https://mirrors.aliyun.com/kubernetes/apt是阿里云提供的 Kubernetes 软件包的 APT 软件源,用于在 Ubuntu/Debian 系统上安装 Kubernetes。该源提供了 Kubernetes 的主要组件和工具的软件包,包括 kubelet、kubeadm、kubectl、kubernetes-cni 等
cat apt-key.gpg | sudo apt-key add -
sudo apt-get update
sudo apt-get install -y \
apt-transport-https \
ca-certificates \
curl \
git \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
case "$(lsb_release -r --short)" in
*16.04* ) sudo apt-get install -y docker-ce=5:19.03.13~3-0~ubuntu-xenial docker-ce-cli=5:19.03.13~3-0~ubuntu-xenial containerd.io ;;
*18.04* ) sudo apt-get install -y docker-ce=5:19.03.13~3-0~ubuntu-bionic docker-ce-cli=5:19.03.13~3-0~ubuntu-bionic containerd.io ;;
*20.04* ) sudo apt-get install -y docker-ce=5:19.03.13~3-0~ubuntu-focal docker-ce-cli=5:19.03.13~3-0~ubuntu-focal containerd.io ;;
* ) exit ;;
安装nvidia docker
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-docker2
sudo systemctl restart docker
安装k8s工具
sudo apt-get update -y && apt-get install -y --allow-unauthenticated kubelet=1.16.3-00 kubeadm=1.16.3-00 kubectl=1.16.3-00
cat <<EOF | sudo tee /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS="--cgroup-driver=systemd"
EOF
systemctl enable kubelet
pull镜像
images=(kube-scheduler:${k8s_version}
kube-proxy:${k8s_version}
kube-controller-manager:${k8s_version}
kube-apiserver:${k8s_version}
pause:3.1
etcd:3.3.15-0)
for imagename in ${images[@]}; do
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/$imagename
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/$imagename k8s.gcr.io/$imagename
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/$imagename
done
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.2
docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.2 k8s.gcr.io/coredns:1.6.2
docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:1.6.2
docker pull calico/cni:v3.9.0
docker pull calico/node:v3.9.0
docker pull calico/pod2daemon-flexvol:v3.9.0
docker pull calico/kube-controllers:v3.9.0
网友评论