万事开头确实难,开过去就好了。

        由于最近刚接触学习云原生相关知识,来到K8S集群环节,在安装环境时就卡住了,安装过程中屡屡报错,因为使用的系统为Linux CentOS7.5版的,网上的教程总有一些小问题,不能一次解决。好在功夫不负有心人,经过一阵东查西找,东拼西凑,参考众多博主的经验分享,终于摸索着把实验环境给搭起来了,下面是我的详细步骤分享。

一、节点准备(所有命令均在'root'用户下执行)
    1、在虚拟机中安装2个CentOS系统,并分别命名为k8smaster、k8snode1,并安装好docker(没有安装,可参考最下面的安装步骤)
        分别在k8smaster和k8snode1中执行:
        hostnamectl set-hostname k8smaster
        hostnamectl set-hostname k8snode1
    2、查询记录2个节点的IP地址备用,我的为:k8smaster:192.168.189.132  k8snode1:192.168.189.133
        ifconfig
    3、关闭防火墙
        systemctl stop firewalld
        systemctl disable firewalld
    4、关闭 selinux
        setenforce 0
        sed -i 's/enforcing/disabled/' /etc/selinux/config
    5、关闭swap
        swapoff -a
        sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
    6、重启系统后查看swap是否为0
        systemctl reboot
        free -m
    7、清空防火墙规则
        sudo iptables -F && sudo iptables -X && sudo iptables -F -t nat && sudo iptables -X -t nat
        sudo iptables -P FORWARD ACCEPT
    8、设置时间同步(如果同步不成功,可多执行几次)
        yum install ntpdate -y
        ntpdate time.windows.com
    9、给机器添加hosts,执行如下命令,ip修改成自己的,参考第2步
        cat > /etc/hosts <<EOF
        192.168.56.132 k8smaster
        192.168.56.133 k8snode1
        EOF
    10、添加网桥过滤和地址转发功能,将桥接的IPv4流量传递到iptables
        cat > /etc/sysctl.d/k8s.conf <<EOF
        net.bridge.bridge-nf-call-ip6tables = 1
        net.bridge.bridge-nf-call-iptables = 1
        EOF
        sysctl --system
    11、添加k8s yum源
        cat <<EOF > /etc/yum.repos.d/kubernetes.repo
        [kubernetes]
        name=Kubernetes
        baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
        enabled=1
        gpgcheck=1
        repo_gpgcheck=1
        gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
        EOF
    12、列出版本清单
        yum list kubelet --showduplicates | sort -r
        (如果无法获取清单,则依次执行yum clean all 和 yum makecache 两条命令,重新建立yum缓存,然后再执行上面的命令)
    13、安装指定版本,这里安装1.20.0
        yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0
    14、查看kubelet、kubeadm、kubectl版本号是否一致为1.20.0,如果一致,进行下一步,不一致,则删除重新安装。
        '注意:以下命令在版本号不一致的情况下执行,一致则跳过,直接进行第15步:
        yum remove -y kubelet kubeadm kubectl
        yum list kubelet --showduplicates | sort -r
        yum install -y kubelet-1.20.0 kubeadm-1.20.0 kubectl-1.20.0

#k8s版本号一致核实

    15、设置开机启动kubelet
        systemctl enable kubelet && systemctl start kubelet

二、仅在k8smaster的操作('注意:该部分操作与第三部分,按照小序号顺序执行)
    1、在k8smaster机器执行初始化,获取部署命令('第一个ip是k8smaster的ip,改成自己机器的,后两个ip网段不动')。
        kubeadm init --kubernetes-version=1.20.0 \
        --apiserver-advertise-address=192.168.189.132 \
        --image-repository registry.aliyuncs.com/google_containers \
        --service-cidr=10.10.0.0/16 --pod-network-cidr=10.122.0.0/16

    '注:===这里会获得如下token和hash,不需要在k8smaster中执行,存档备用,在k8snode1中执行。如果新增node节点,需执行该相同命令==='
        kubeadm join 192.168.189.132:6443 --token 26mrvu.er4snn5696egyhl9 \
            --discovery-token-ca-cert-hash sha256:7c08300abe69648d219fb943e1fdee130f3f8f0a3f2a8960fdd56fc28573507d

#在k8smaster机器上执行初始化操作,获取token、hash值等部署命令

    2、配置使用kubectl命令工具,在第1步获取
        mkdir -p $HOME/.kube
        sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
        sudo chown $(id -u):$(id -g) $HOME/.kube/config
    4、安装 Pod 网络插件Calico
        kubectl apply -f https://docs.projectcalico.org/v3.18/manifests/calico.yaml
    5、将k8smaster节点的admin.conf发送到k8snode1节点(如有多个node节点,只需修改节点名称)
        scp /etc/kubernetes/admin.conf root@k8snode1:/etc/kubernetes/admin.conf
        根据提示,输入yes确认后,输入k8snode1的密码确认。

三、仅在k8snode1节点的操作('注意:该部分操作与第二部分,按照小序号顺序执行)
    3、以下指令是在上面第二部分第1步获取,执行后将k8snode1节点加入进k8smaster节点的集群里
        kubeadm join 192.168.189.132:6443 --token 26mrvu.er4snn5696egyhl9 \
            --discovery-token-ca-cert-hash sha256:7c08300abe69648d219fb943e1fdee130f3f8f0a3f2a8960fdd56fc28573507d

四、验证安装结果,在k8smaster中执行
    1、查看各节点状态,'Ready'为正常:
        kubectl get nodes



    2、查看集群运行状态,'Running'为正常:
        kubectl -n kube-system get pod

        至此,K8S环境搭建完成,希望对同样在学习的你能有所帮助。

===以下为docker引擎安装===

'※国内环境需修改CentOS默认下载源
1、备份原地址
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、下载阿里云的源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo


'※安装和卸载docker
'安装docker,顺序执行以下命令:
yum -y update
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast

yum list docker-ce --showduplicates | sort -r
yum install -y docker-ce-3:19.03.9-3.el7.x86_64
systemctl start docker && systemctl enable docker
docker version    #确认doker是否安装成功出现Client和Server两个引擎即可
cd /etc/docker
vim daemon.json   #新建daemon.json,添加阿里云镜像加速器。

{
  "registry-mirrors": ["https://tow5pelk.mirror.aliyuncs.com"]
}

#上面的镜像加速器地址需自行申请,
#申请地址:阿里云(https://cr.console.aliyun.com/#/accelerator)
#申请后,将自己的加速器添加到daemon.json中。


#保存daemon.json后,重载docker:
systemctl daemon-reload
systemctl restart docker

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐