美文网首页
k8s环境安装注意事项

k8s环境安装注意事项

作者: 我是聪 | 来源:发表于2023-04-03 15:38 被阅读0次

    关闭防火墙

    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
    
    

    相关文章

      网友评论

          本文标题:k8s环境安装注意事项

          本文链接:https://www.haomeiwen.com/subject/xebdddtx.html