k8s系列文章3: kubeadm搭建k8s集群(上)

作者: 特斯拉的交流电很直 | 来源:发表于2021-02-28 23:53 被阅读0次

    k8s系统由一组可执行程序组成,用户可以通过Github上的k8s项目页下载编译好的二进制包,或者下载源代码并编译后进行安装。

    1. 系统要求

    1)CPU和内存:Master:至少2core和4GB内存;Node:至少4core和16GB内存;推荐Master节点4core16GB内存,Node根据需要运行的容器数量进行配置。
    2)Linux操作系统:Kernel版本要求在3.1以上;推荐CentOS 7。
    3)etcd:3.0版本及以上;推荐使用3.3版本。
    4)Docker:18.03版本;推荐使用18.09版本。
    注意事项:CentOS系统默认启动了防火墙服务,但k8s系统在Master和各个工作的Node之间会有大量的网络通信。如果是安全的内部网络环境,推荐关闭防火墙,如下:

    systemctl disable firewalld
    systemctl stop firewalld
    
    同时,建议让容器能够读取主机内容:
    setenforce 0
    

    2. 使用kubeadm工具安装k8s集群

     k8从1.4版本开始引入了命令行工具kubeadm,以便于简化集群的安装过程。同时解决k8s集群的高可用问题。

    2.1. 安装kubeadm和相关工具

     首先要配置yum源,官方的yum源的地址是:

    https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
    

     访问官方的yum源,需要能够可续上网。否则建议配置国内的源:

    http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    

     yum源的配置文件:/etc/yum.repos.d/kubernetes.repo,编辑内容:

    [kubernetes]
    name=Kubernetes Repository
    baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    enabled=1
    gpgcheck=0
    

     配置好yum源后,执行yum install命令安装kubeadm和相关工具:

    yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
    

     默认情况下,安装的是最新版本的k8s,如果想安装特定的版本,需要一次安装kubelet,kubeadm和kubectl。如下:

    yum install -y kubelet-1.14.0-0
    yum install -y kubeadm-1.14.0-0
    yum install -y kubectl-1.14.0-0
    

     下载完成后,启动docker服务和kubelet,同时设置为开起自启动(如果安装过docker则不需要,总之在这一步之后保证docker可用,docker version查看docker状态。如果显示docker版本,则说明docker已经可用):

    systemctl enable docker && systemctl start docker
    systemctl enable kubelet && systemctl start kubelet
    

    2.2 kubeadm config

      kubeadm 将配置文件以configMap的形式保存到集群之中,便于后续的查询和升级工作。为此,kubeadm config子命令提供了对这一组功能的支持:

    kubeadm config upload from-file        //由配置文件上传到集群中生成ConfigMap
    kubeadm config upload from-flags       //由配置参数生成ConfigMap
    kubeadm config view                    //查看当前集群中的配置值
    kubeadm config print init-defaults     //输入kubeadm init默认参数文件的内容
    kubeadm config print join-defaults     //输出kubeadm join默认参数文件的内容
    kubeadm config migrate                 //在新旧版本之间进行配置转换
    kubeadm config images list             //列出所需的镜像列表
    kubeadm config images pull             // 拉取镜像到本地
    

      自定义文件,按需生成合适的配置。例如,将下面的文件保存为init-config.yaml备用。其中配置镜像仓库的地址,以及pod的地址范围:

    apiVersion: kubeadm.k8s.io/v1beta1
    kind: ClusterConfiguration
    imageRepository: docker.io/dustise
    kubernetesVersion: v1.14.0
    networking:
        podSubnet: "192.168.0.0/16"
    

    2.3 下载kubernetes的相关镜像

      如果不能科学上网,则需要从国内的镜像站点获得镜像加速支持,建议修改Docker的配置文件,增加Registry Mirror参数,将镜像配置写入参数中。如下:

    echo '{"registry-mirrors":["https://registry.docker-cn.com"]}' > /etc/docker/daemon.json
    

      然后重启docker服务:

    systemctl restart docker
    

      重启docker成功后,使用config images pull子命令下载所需镜像,例如:

    kubeadm config images pull --config=init-config.yaml
    

      运行后将会执行下载镜像的步骤。之后,就可以进行安装了。

    2.4 运行kubeadm init命令安装Master

      自此,准备工作已经就绪,执行kubeadm init命令可以一键安装k8s的Master。
      需要注意的是,kubeadm的安装过程不涉及网络插件(CNI)的初始化,因此kubeadm初步安装完成的集群不具备网络功能,任何pod包括自带的CoreDNS都无法正常工作。而网络插件的安装往往对kubeadm init命令的参数有一定的要求。
    接下来执行kuberadm init命令,使用前面创建的配置文件进行集群控制面的初始化:

    kubeadm init --config=init-config.yaml
    

      如果到这一步发现了如下的报错:

    Error swap: running with swap on is not supported.please disable swap
    

      发生上述错误是因为kubeadm推荐关闭交换空间的使用,而我们在之前并没有完成这一步。可以通过下面的步骤完成:

    # 执行完下面的命令后,进行/etc/fstab文件,删除对swap的加载,将有swap哪一行注释掉即可
    swapoff -a
    

    重新运行初始化命令,控制台将输出以下内容:


    控制台输出.jpg

      到这一步,则Master节点的安装已经成了大半,然后按照k8s的提示,复制配置文件到普通用户的home目录下:

    mkdir -p $HOME/.kube
    sudo cp -i /etc/kubernetes/admin.conf  $HOME/.kube/config
    sudo chown $(id -u):$(id -g) $HOME/.kube/config
    

      此时Master的节点就安装结束了。但是还缺少工作的Node和容器网络的配置。需要注意的是,kubeadm init命令执行完成的最后几行会提示重要的信息,其中包括加入节点的操作和需要用到的token信息,记录下来后面安装Node的时候需要用到。
      至此,Master节点的安装就大功告成了,下一篇文章继续安装工作节点Node。

    相关文章

      网友评论

        本文标题:k8s系列文章3: kubeadm搭建k8s集群(上)

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