k8s集群搭建的方式分为三种:

kubeadm、minikube,二进制包;

kubeadm:

  • 是一个工具,用于快速搭建kubernetes集群,目前应该是比较方便和推荐的,简单易用
  • kubeadm是Kubernetes 1.4开始新增的特性
  • kubeadm init 以及 kubeadm join 这两个命令可以快速创建 kubernetes 集群

minikube:

  • 一般用于本地开发、测试和学习,不能用于生产环境
  • 是一个工具,minikube快速搭建一个运行在本地的单节点的Kubernetes

二进制包:

    在官网下载相关的组件的二进制包,上面的两个是工具,可以快速搭建集群,也就是相当于用程序脚本帮我们装好了集群,前两者属于自动部署,简化部署操作,自动部署屏蔽了很多细节,使得对各个模块感知很少,遇到问题很难排查,如果手动安装,对kubernetes理解也会更全面。
    目前生产环境的主流搭建方式,已在生产环境验证,kubeadm也可以搭建生产环境

        以上类容来源于网络,我这边只用过kubeadm,其他的都是在网上查的,其实还有很多中方式,具体怎样我不清楚,有兴趣的自己尝试下,下面介绍下kubeadm的安装方式。

        前提条件:

                1.机器:三台以上物理或者虚拟机,并且机器之间能互相访问。

                2.系统centos7以上,2g 2核 及以上。

                3.能访问外网,因为要拉镜像。

                4.禁用swap分区swapoff -a ;vi /etc/fstab 注释最后一行 带swap;

        开始安装:

        1.关闭防火墙

                systemctl stop firewalld

                systemctl disable firewalld

        2. 关闭selinux

                sed -i 's/enforcing/disabled/' /etc/selinux/config  #永久

                setenforce 0  #临时

        3. 关闭swap(k8s禁止虚拟内存以提高性能)

                sed -ri 's/.*swap.*/#&/' /etc/fstab #永久

                swapoff -a #临时

                这个在前提条件里说过了

        4. 在master添加hosts

                cat >> /etc/hosts << EOF

                192.168.191.144 k8s-master1

                192.168.191.145 k8s-node1

                192.168.191.146 k8s-node2

                EOF

                改成自己的ip 所有的机器都添加

        5.设置网桥参数

                cat > /etc/sysctl.d/k8s.conf << EOF

                net.bridge.bridge-nf-call-ip6tables = 1

                net.bridge.bridge-nf-call-iptables = 1

                EOF

                sysctl --system  #生效

                6.时间同步

                        yum install ntpdate -y

                        ntpdate time.windows.com

        6.安装docker

                yum install wget -y wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo

                或者yum install docker-ce-版本 安装指定版本,因为上面的安装会安装低版本的,但是k8s的版本可能比较高,这个可以自己查看下对应系统的版本和docker、k8s的对应版本,选择安装。

                设置docker镜像源

                vi /etc/docker/daemon.json

                "registry-mirrors": ["https://registry.docker-cn.com"]

                systemctl enable docker.service

        7.设置k8s阿里yum源         

                cat > /etc/yum.repos.d/kubernetes.repo << EOF

                        [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

        8.安装kubeadm,kubelet 和 kubectl

                yum install -y kubelet-1.19.4 kubeadm-1.19.4 kubectl-1.19.4

                这里的版本最好是与docker对应,不然容易出现版本问题。

                systemctl enable kubelet.service #开启kubelet服务

        以上每台机器上都是一样的执行

        9.初始化master节点

                kubeadm init --apiserver-advertise-address=192.168.191.144 --image-repository registry.aliyuncs.com/google_containers --kubernetes-version v1.19.4 --service-cidr=10.96.0.0/12 --pod-network-cidr=10.244.0.0/16

                这里192.168.191.144是我虚拟机的ip,关于参数解释可以看这个文章:kubadm部署k8s时service-cidr网络和pod-network-cidr的地址如何定义 - 小鹰展翅 - 博客园

                然后执行:

                mkdir -p $HOME/.kube

                sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

                sudo chown $(id -u):$(id -g) $HOME/.kube/config

        10.查看节点:

                kubectl get nodes

        11.添加node

                在第九步执行完init后,控制台会打出join的命令,拷贝出来,然后在node节点上执行即可,journalctl -f -u kubelet可查看当前运行的日志

        经常出现的问题:

                systemctl daemon-reload
                systemctl restart kubelet

                重启服务

                kubeadm reset 重建

                1.running with swap on is not supported. Please disable swap

                swap没有关闭:swapoff -a 临时关闭

                vi /etc/fstab 注释最后一行

                2.unknown container “/system.slice/kubelet.service”

                      vi /usr/lib/systemd/system/kubelet.service.d/10-kubeadm.conf

                        有的可能是

                        /etc/systemd/system/kubelet.service.d/10-kubeadm.conf 这个可能是系统版本不一样,找不到就用find找一下。

                        添加:Environment="KUBELET_CGROUP_ARGS=–cgroup-driver=systemd –runtime-cgroups=/systemd/system.slice –kubelet-cgroups=/systemd/system.slice"

                3.no networks found in /etc/cni/net.d

                        未安装网络:

                        1.可以先vi  /var/lib/kubelet/kubeadm-flags.env 把前面的cni去除

                        2.也可以安装下载kube-flannel.yml,然后kubectl apply -f kube-flannel.yml

                这些网上都能找到,不会就找度娘。

                

 

Logo

开源、云原生的融合云平台

更多推荐