K8S

应用版本多,环境乱七八糟?利用kubeadm快速构建k8s环境

应用版本多,环境乱七八糟?利用kubeadm快速构建k8s环境

Posted by LY on September 4, 2020

欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏

csdn:雷园的csdn博客

个人博客:雷园的个人博客

简书:雷园的简书

今日头条:来自底层程序员的仰望

应用版本多,环境乱七八糟?利用kubeadm快速构建k8s-1.18.5环境

开头说几句

  1. 最近接收了许多新的任务,在这个过程中也有很多的收获,希望把这些收获分享给大家。
  2. 本篇我们就来说说及其火热的k8s,希望大家可以有所收获!!!

为什么需要构建k8s集群环境

  1. 如题,无论我们的产品2b还是2c,通常来说我们都会有多个不同的版本已满足不同的需求。
  2. 以我的经验来说,我们通常会有开发环境(dev)、测试环境(test)、演示环境(show)、生产环境(product)。
  3. 有以上但不仅限于此,我们主要是体现“多”。
  4. 这么多环境部署及维护起来是相当费劲的,之前我们有使用docker来维护各个版本,但是还是要操作许多的命令。

为什么使用kubeadm来构建

  1. kubeadm是官方提供给我们的快捷部署方式,当然部署方式并不仅限于。
  2. 此部署方式不建议使用与生产环境。

正式开始

  1. 废话不多说了我们这就开始吧!!!

  2. 先来说说我们的硬件要求,我这边资源还算充足,开了六台虚拟机(CentOS7 4C 8G)用来搭建集群。

    IP 域名 节点角色
    192.168.2.130 k8s-master.imlcl.store Master
    192.168.2.131 k8s-node5.imlcl.store Worker
    192.168.3.131 k8s-node1.imlcl.store Worker
    192.168.3.132 k8s-node2.imlcl.store Worker
    192.168.3.133 k8s-node3.imlcl.store Worker
    192.168.3.134 k8s-node4.imlcl.store Worker
  3. 只用做公司内部的开发、测试环境使用,所以没有添加多个Master保证高可用,大家可以自行分配。

  4. 小伙伴们如果资源不足的话两个节点一主一从也是可以的,但是配置最少也要4c8g。

  5. 这里我使用了自己域名下的字域名进行解析,大家如果没有域名可以使用hosts配置实现。

开始安装
  1. 无论docker还是kubernetes的镜像都是在国外网站,而且国内阿里的镜像还没有更新到1.18.5,这里我为大家下载好了所有需要的东西,S我就可以。

  2. 首先我们下载安装所需的软件包,然后对系统进行简单的配置:

    # 关闭防火墙
    $ systemctl stop firewalld && systemctl disable firewalld
    #关闭selinux
    $ sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0
    #关闭swap设置
    $ swapoff -a
    $ yes | cp /etc/fstab /etc/fstab_bak
    $ cat /etc/fstab_bak |grep -v swap > /etc/fstab
    #解决流量路由不正确问题
    $ cat <<EOF >  /etc/sysctl.d/k8s.conf
    vm.swappiness = 0
    net.bridge.bridge-nf-call-ip6tables = 1
    net.bridge.bridge-nf-call-iptables = 1
    net.ipv4.ip_forward = 1
    EOF
    # 使配置生效
    $ modprobe br_netfilter
    $ sysctl -p /etc/sysctl.d/k8s.conf
    
  3. 所有机器配置完成后,我们就需要开始安装所需的软件了

    # 安装docker
    $ yum -y install docker 
    $ systemctl enable docker && systemctl start docker
    # 配置阿里k8s源
    $ cat >> /etc/yum.repos.d/k8s.repo << EOF
    [kubernetes]
    name=kuberbetes repo
    baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
    gpgcheck=0
    EOF
    #安装kubelet/kubeadm/kubectl
    $ yum -y install kubelet kubeadm kubectl
    $ systemctl enable kubelet && systemctl start kubelet
    
  4. 如果上述还算顺利,那我们的机器中就安装好了kubelet kubeadm kubectl docker,接下来我们把软件包中的相关镜像导入进来:

    # k8s基础组件
    $ docker load -i k8s-imagesV1.18.5.tar
    # k8s web页面组件,为后面我们的构建dashboard服务作准备
    $ docker load -i dashboard.tar
    # k8s网络组件
    $ docker load -i flannel.tar
    
安装主节点:Master 192.168.2.130
  1. 修改kubelet配置默认cgroup driver

    $ cat > /var/lib/kubelet/config.yaml <<EOF
    apiVersion: kubelet.config.k8s.io/v1beta1
    kind: KubeletConfiguration
    cgroupDriver: systemd
    EOF
    # 重启kubelet
    $ systemctl restart kubelet
    
  2. 测试我们的环境是否OK

    $ kubeadm init phase preflight
    
  3. 测试OK后,我们需要对Master节点进行初始化:

    $ kubeadm init --kubernetes-version=v1.18.5 --apiserver-advertise-address k8s-master.imlcl.store --pod-network-cidr=10.244.0.0/16
    
  4. 配置master认证

    $ echo 'export KUBECONFIG=/etc/kubernetes/admin.conf' >> /etc/profile
    $ source /etc/profile
    
  5. 此时不出意外我们的Master节点已经安装完成,不过我们还没有初始化网络组件,无法使我们的node节点加入到集群里。

  6. 之前我们已经把flannel网络组件导入到了docker中,现在我们对其进行初始化,flannel的配置文件有点多,同样我给大家总结到了软件包中(kube-flannel.yml)

    $ kubectl apply -f kube-flannel.yml
    
  7. 现在我们可以看一下集群的状态了kubectl get nodes,可以看到我们Master的状态已经为Ready

加入从节点作为worker
  1. 首先我们要到Master节点获取我们的集群加入口令

    $ kubeadm token create --print-join-command
    ## out
    kubeadm join 192.168.2.130:6443 --token 5lcb30.hbomixs71d0ck14l     --discovery-token-ca-cert-hash sha256:b52d85d8fb4e27a53433813f85f46b47632b27fec3ac5323d240e97a9e9b1413
    
  2. 下面这句就是我们要用的口令了,这时候我们只需要打开我们的各个worker节点,挨个执行这个口令即可自动加入集群

    $ kubeadm join 192.168.2.130:6443 --token 5lcb30.hbomixs71d0ck14l     --discovery-token-ca-cert-hash sha256:b52d85d8fb4e27a53433813f85f46b47632b27fec3ac5323d240e97a9e9b1413
    
  3. 这个口令是有一天的有效期,如果后面需要加入节点,就需要重新获取口令啦。

最后说几句

  1. 到这里为止呢,我们的kubernetes集群算是构建完成了。
  2. 很简单吧,这是因为我们使用了kubeadm,仅试用与开发、测试环境。
  3. 今天我们就说这么多,下一篇我们来说说如何安装和配置官方的Dashboard页面。
  4. 大家有任何问题都可以在评论区说出来大家一起讨论。
  5. 希望大家有所收获!!!
  6. 谢谢各位大佬!!!