zoukankan      html  css  js  c++  java
  • 部署k8s集群(二)

                    k8s   adm方式部署详解步骤

    本章详解K8sadm方式部署(也可参考官方部署文档 https://docs.rancher.cn/    目前rancher提供的解决方案rke是最快的部署方式,官网有非常详细的解释)

    本章部署步骤细致,更加详细了解部署过程

    本章字体颜色分类

    •        棕色是输入的命令语句
    •        绿色是编辑文本内容
    •        红色是标红重要路径
    •        黑色是旁白

    废话不多说,开始***************************************************************************************************

    一,先准备三台虚拟机(这里我是以我虚拟机来演示)

    centos7.6 k8s-master01 192.168.30.145
    centos7.6 k8s-node01 192.168.30.144
    centos7.6 k8s-node02 192.168.30.143

    在VM创建虚拟机时,将内存给到2G以上(这里我是2G),cpu内核总数给到4以上,如图:

     最后,一定要各机之间可以联通,且都能够ping通网络!!!

    ========================================================================================================


    以上准备工作做完后,开始为部署k8s初始化这三个节点机器
    每台主机修改主机名并做好映射(/etc/hosts)
    #hostnamectl set-hostname k8s-master01/node01/node02
    安装依赖包
    #yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git
    设置防火墙关闭和设置空规则
    #systemctl stop firewalld && systemctl disable firewalld
    #yum -y install iptables-services && systemctl start iptables && systemctl enable iptables && iptables -F && service iptables save
    关闭selinux
    #swapoff -a &&sed -i '/ swap / s/^(.*)$/#1/g' /etc/fstab
    #setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/'  /etc/selinux/config
    调整内核参数
    #cat  > kubernetes.conf  << EOF
    net.bridge.bridge-nf-call-iptables=1
    net.bridge.bridge-nf-call-ip6tables=1
    net.ipv4.ip_forward=1
    net.ipv4.tcp_tw_recycle=0
    vm.swappiness=0
    vm.overcommit_memory=1
    vm.panic_on_oom=0
    fs.inotify.max_user_instances=8192
    fs.inotify.max_user_watches=1048576
    fs.file-max=52706963
    fs.nr_open=52796963
    net.ipv6.conf.all.disable_ipv6=1
    net.netfilter.nf_conntrack_max=2310720
    EOF
    #cp kubernetes.conf  /etc/sysctl.d/
    调整系统时区
    #timedatectl set-timezone Asia/Shanghai
    #timedatectl set-local-rtc 0
    #systemctl restart rsyslog
    #systemctl restart crond
    关闭系统不需要服务
    #systemctl stop postfix && systemctl disable postfix


    设置rsyslogd和systemd journald
    #mkdir /var/log/journal   
    #mkdir /etc/systemd/journald.conf.d
    #cat  /etc/systemd/journald.conf.d/99-proph et.conf   (内容如图:)


    #systemctl restart systemd-journald(如图)

     
    7.6升级内核(3.10内核不稳定,不利于接下了的操作,如图)

     所以升级到4以上内核
    #rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    #yum --enablerepo=elrepo-kernel install -y kernel-lt
    #grub2-set-default 'CentOS Linux (4.4.240-1.el7.elrepo.x86_64) 7 (Core)'

    切换完后,每个节点重启(reboot)一下机器,让系统自动识别并使用新内核

     以上初始化就完了,总结一下,要注意各机之间的互通,和可以通网,防火墙要关闭和空规则,还有要注意要关闭swap,调整内核参数。各各节点按以上步骤做完,系统的初始化就做完了,下一步就是开始部署k8s集群(一台主,两台节点)


    ===========================================================================================================
                                                                                  开始部署k8s
    部署调度(所有节点)
    #modprobe br_netfilter
    #cat > /etc/sysconfig/modules/ipvs.modules <<EOF
    #!/bin/bash
    modprobe -- ip_vs
    modprobe -- ip_vs_rr
    modprobe -- ip_vs_wrr
    modprobe -- ip_vs_sh
    modprobe -- nf_conntrack_ipv4
    EOF
    #chmod 755 /etc/sysconfig/modules/ && bash /etc/sysconfig/modules/ipvs.modules
    #lsmod | grep -e ip_vs -e nf_conntrack_ipv4

     
    ********************每个节点安装docker前需要的软件包********************************

    #yum install -y yum-utils   device-mapper-persistent-data lvm2
    *********************导入阿里云镜像仓库并安装docker-ce*************************
    #yum-config-manager
        --add-repo 
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    #yum update -y && yum install -y docker-ce
    这里安装时间比较长(大约624个包)慢慢等待即可..........

    安装完后如图:


    ************创建docker目录***********
    #mkdir /etc/docker
    ********************配置daemon*(如图)*************

    创建docker-server目录

    #mkdir -p /etc/systemd/system/docker.service.d
    重启docker
    #systemctl daemon-reload && systemctl restart docker && systemctl enable docker

    ********************************************安装kubeadm(主从配置)********************************
    构建kubeadm源厂(如图):

    安装

    #yum -y install  kubeadm-1.15.1 kubectl-1.15.1   kubelet-1.15.1
    #systemctl enable kubelet.service

    ***********************master节点先导入镜像(kubeadm-basic.images.tar.gz)*********
    #tar -zxvf kubeadm-basic.images.tar.gz   
    编辑一个导入脚本
    cat > image.sh <<EOF
    #!/bin/bash
    ls /root/kubeadm-basic.images > /tmp/image.txt
    cd /root/kubeadm-basic.images

    for i in $( cat /tmp/image.txt )
    do
            docker load -i $i
    done
    rm -rf /tmp/image.txt
    EOF

    *****************初始化节点*****************************
    #kubeadm config print init-defaults > kubeadm-config.yaml

    #vim  kubeadm-config.yaml                        (如图)

     

     

    修改完成后
    初始化k8s
    #kubeadm init --config=kubeadm-config.yaml --experimental-upload-certs | tee kubeadm-init.log
    完成后,可以查看一些信息(#vim  kubeadm-init.log)这个文件里包含很多信息和提示,下面的加入节点都需要参看这个Log日志里内容,根据里面的提示,来完成相应的操作!!
    下面先简单解释一下kubeadm-init.log里的内容(如图:)

    内容过多,这里的先截取重要的信息进行说明

     如图上[kubelet-start] 这一行,表明了kubelet的配置写入文件"/var/lib/kubelet/config.yaml"位置

    如图[certs]这一行,指明了安全认证ca证书的存放位置  Using certificateDir folder "/etc/kubernetes/pki"

    文件里最后几行(如图)

     这几行显示初始化成功,这里指明需要运行一下几条命令作为一个常规用户

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

    后面几行提示要给POD部署一个网路到集群

    Run "kubectl apply -f [podnetwork].yaml" with one of the options listed at:
      https://kubernetes.io/docs/concepts/cluster-administration/addons/

    ****************************加入主节点和其他工作节点*********************
    #vim kubeadm-init.log
    加入主按照提示来做
    加入其他节点提示在最后几行,复制粘贴到其他节点上运行(上一步操作)
    以上部署完成后,实时查看各节点是否运行成功(在主节点上)
    #kubectl   get  pod  -n   kube-system             -w

     添加子节点(Node)

    首先要确保node上有kubelet  kubeadm  kubeclt 已经安装,但是不要start

    此时,在主节点上,打开kubeadm-init.log文件,找到最后几行,复制粘贴到子节点,回车即可(如图)

     完成后,查看节点是否加入到集群中

    在主节点上查看

    #kubectl get nodes

     但是这里不是ready ,是因为没有配置子节点网络
    **********************************部署网络flannly*******************************

    #mkdir k8s-flannly

    #cd  k8s-flannly

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

    查看是否运行成功

    #kubectl get pod -n kube-system

    #kubectl  get nodes   

  • 相关阅读:
    Java 函数式编程—@FunctionalInterface----functional interface
    人月神话的博客
    如何度量复杂度
    泛型沉思录:创建模版与使用模版生成代码
    ioc与bean管理
    模式(思维)匹配是什么
    简析散光的成因,以及什么是散光的度数和轴位?
    概括是什么?
    思维与模型、世界观
    抽象、维度、层次与分析、综合
  • 原文地址:https://www.cnblogs.com/123456likun/p/13886248.html
Copyright © 2011-2022 走看看