zoukankan      html  css  js  c++  java
  • k8s-CentOs7.x 搭建集群(1)(kubelet 1.19.2)

    前言

    公司准备将所有应用迁移.NetCore,并部署于k8s。借此契机来记录下k8s的学习过程。

    一、创建三台CentOs7.x虚拟机

    192.168.124.201

    192.168.124.202

    192.168.124.203

    二、配置Hosts与静态ip映射

    vim /etc/hosts
    

    192.168.124.201 k8s-master

    192.168.124.202 k8s-node1

    192.168.124.203 k8s-node2

    三、关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    

    四、关闭SELinux

    sed -i 's/enforcing/disabled/' /etc/selinux/config
    setenforce 0
    

    五、配置内核参数,将桥接的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
    

    六、关闭swap分区=>K8S中不支持swap分区

    vim /etc/fstab
    
    #注释下面语句
    #/dev/mapper/centos-swap swap                    swap    defaults        0 0
    
    #执行以下命令
    echo vm.swappiness=0 >> /etc/sysctl.conf
    sudo reboot
    #验证Swap行均为o
    
    free -m
    

    7、安装docker

    配置yum 的阿里云包源

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

    查看所有docker版本

    yum list docker-ce --showduplicates | sort -r
    

    image-20201011140957397

    本次选择docker版本 docker-ce-18.06.3

    sudo yum install docker-ce-18.06.3.ce
    

    配置开机启动docker

    systemctl start docker 
    systemctl enable  docker
    

    8、安装Kubeadm、kubelet、kubectl

    配置阿里云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=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
    

    Kubeadm、kubelet、kubectl 三者的版本需要统一

    查看kubelet版本

    yum list kubelet --showduplicates | sort -r
    

    image-20201011145323209

    选择 kubelet 版本1.19.2,执行下面命令,安装指定版本的kubelet、kubeadm、kubectl安装

    yum install -y kubelet-1.19.2-0.x86_64 --nogpgcheck kubeadm-1.19.2-0.x86_64 --nogpgcheck
    kubectl-1.19.2-0.x86_64 --nogpgcheck kubernetes-cni-0.8.7 –disableexcludes=kubernetes
    
    systemctl enable kubelet && systemctl start kubelet
    

    下面 9-10的步骤只需要在Master节点执行-------------------------------------------------------------------------------------------------

    9、初始化Kubernetes Master

    --apiserver-advertise-address 为Master的IP

    kubeadm init 
    --apiserver-advertise-address=192.168.124.201 
    --image-repository registry.aliyuncs.com/google_containers 
    --kubernetes-version v1.19.2 
    --service-cidr=10.1.0.0/16 
    --pod-network-cidr=10.244.0.0/16
    

    此过程利用kubeadm帮我们去安装k8s需要的镜像以及相关插件。

    初始化成功会有如下提示:

    image-20201011150648338

    标红的为node节点加入集群命令,忘了也可以重新生成。下面再介绍相关命令。

    初始化成功后,为顺利使用kubectl,执行以下命令:

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

    执行kubectl get nodes,查看master节点状态:

    image-20201011150914015

    master 状态为NotReady

    通过如下命令查看kubelet状态:

    journalctl -xef -u kubelet -n 20
    

    image-20201011151332555

    提示未安装cni 网络插件。

    10、安装flannel网络插件(CNI)

    该镜像在国外,有可能出现ImagePullError等错误,下面提供几种方法解决:

    首先先查看该flannel的yml文件引用了那些镜像,把yml下载下来:

    wget https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

    查看flannel镜像版本

    cat kube-flannel.yml |grep image|uniq
    

    1602504419(1)

    可以看到镜像版本为image: quay.io/coreos/flannel:v0.13.0-rc2,该镜像非常新,如果该镜像全网都没有,那么就按照下面方法①解决,如果存在,就按照方法②执行。

    解决方法:

    ①如果你自己有阿里云、腾讯云等服务器,那么直接在自己的服务器上拉取该镜像,下载下来,再在你的虚拟机还原该镜像。

    先拉取镜像:

    docker pull image: quay.io/coreos/flannel:v0.13.0-rc2
    

    将镜像保存为flannel.tar包:

    docker save -o flannel.tar quay.io/coreos/flannel:v0.13.0-rc2
    

    通过FTP将flannel.tar传输到本地的虚拟机

    通过下面命令加载镜像:

    docker load -i flannel.tar
    

    查看本地镜像,红色框所示,所需镜像已加载成功:

    image-20201012202231466

    执行以下命令安装flannel即可:

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

    ②修改该yml文件,将镜像版本修改为已有的版本,可在https://github.com/coreos/flannel/releases上查看flannel相关镜像包。

    将flannel:v0.12.0-amd64.docker 下载到本地:

    image-20201012203320418

    修改yml文件镜像源:

    sed -i 's/flannel:v0.13.0-rc2/flannel:v0.12.0-amd64/' kube-flannel.yml 
    

    参考①中,传输镜像到虚拟机装载

    同样,执行以下命令安装flannel即可:

    kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
    

    输入命令kubectl get pods -n kube-system,等待所有插件为running状态

    pod插件

    待所有pod status为Running的时候,再次执行kubectl get nodes:

    image-20201011225443861

    如上图所示,master状态变为,表明Master节点部署成功!

    11、部署k8s-node1、k8s-node2集群

    1、在k8s-node1、k8s-node2等两台虚拟机中重复执行上面1-8的步骤,安装好docker、kubelet、kubectl、kubeadm。

    2、node节点加入集群

    在上面第九步初始化master节点成功后,输出了下面的kubeadm join命令:

    image-20201011150648338

    该命令就是node加入集群的命令,分别在k8s-node1、k8s-node2上执行该命令加入集群。

    image-20201012210045225

    如果忘记该命令,可以通过以下命令重新生成:

    kubeadm token create --print-join-command
    

    3、在master节点执行下面命令查看集群状态:

    kubectl get nodes
    

    image-20201012211308952

    如上图所示,所有节点都为ready,集群搭建成功。

  • 相关阅读:
    java代码连接数据库
    phpcms v9 读取地区联动菜单缓存文件
    PHPCMS V9二次开发便捷自定义后台入口文件夹
    phpcms v9中模板标签使用及联动菜单
    Phpcms v9系统类库与函数库调用方法
    phpcms v9 二次开发
    phpcms v9开源开发框架基础mvc解读
    phpcms插件开发初步规范
    phpcms v9二次开发之模型类的应用(1)
    phpcms v9二次开发之模型类的应用(2)
  • 原文地址:https://www.cnblogs.com/roluodev/p/13805621.html
Copyright © 2011-2022 走看看