使用kubespray 一键部署

  1. 准备工作
    1. 三台节点都安装了containerd 详情见这里
    2. 操作节点具备kx上网能力,可以通过配置all.yaml 使用http 或者https 代理
    3. 节点三台
      节点数 >=3台
      CPU >=2
      Memory >=2G
      我这里本地有三台虚拟机ip分别为
      192.168.88.130
      192.168.88.131
      192.168.88.132
    4. 系统设置所有节点都使用root用户执行
      1.修改主机名
      **以下操作三个节点都需要执行**
      node-1 192.168.88.130
      node-2 192.168.88.131
      node-3 192.168.88.132
      # 查看主机名
      $ hostname
      # 修改主机名
      $ hostnamectl set-hostname <your_hostname>
      
      2.关闭防火墙
      # 关闭selinux
      $ setenforce 0
      $ sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
      # 关闭防火墙
      $ systemctl stop firewalld && systemctl disable firewalld
      
      # 设置iptables规则
      $ iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat && iptables -P FORWARD ACCEPT
      # 关闭swap
      $ swapoff -a && free –h
      
      # 关闭dnsmasq(否则可能导致容器无法解析域名)
      $ service dnsmasq stop && systemctl disable dnsmasq
      
      3.k8s参数设置
      # 制作配置文件
      $ cat > /etc/sysctl.d/kubernetes.conf <<EOF
      net.bridge.bridge-nf-call-ip6tables = 1
      net.bridge.bridge-nf-call-iptables = 1
      net.ipv4.ip_nonlocal_bind = 1
      net.ipv4.ip_forward = 1
      vm.swappiness = 0
      vm.overcommit_memory = 1
      EOF
      # 生效文件
      $ sysctl -p /etc/sysctl.d/kubernetes.conf
      
      4.移除docker 软件包  (可选操作)
      $ yum remove -y docker*
      $ rm -f /etc/docker/daemon.json
    5. 使用kubespray部署集群
      • 首先配置密钥
        # 1. 生成keygen(执行ssh-keygen,一路回车下去)
        $ ssh-keygen
        # 2. 查看并复制生成的pubkey
        $ cat /root/.ssh/id_rsa.pub
        # 3. 分别登陆到每个节点上,将pubkey写入/root/.ssh/authorized_keys
        $ mkdir -p /root/.ssh
        $ echo "<上一步骤复制的pubkey>" >> /root/.ssh/authorized_keys
      • 依赖软件下载安装(这个操作只需要在操作节点上面执行)
        首先cd 到kubespray-2.15.0目录以下操作节点上的操作都在此目录上执行
        # 安装基础软件
        $ yum install -y epel-release python36 python36-pip git
        # 下载kubespray源码
        $ wget https://github.com/kubernetes-sigs/kubespray/archive/v2.15.0.tar.gz
        # 解压缩
        $ tar -xvf v2.15.0.tar.gz && cd kubespray-2.15.0
        # 安装requirements
        $ cat requirements.txt
        $ pip3.6 install -r requirements.txt
        
        ## 如果install遇到问题可以先尝试升级pip
        ## $ pip3.6 install --upgrade pip
      • 生成配置(此操作只需要在操作节点上执行)
        # copy一份demo配置,准备自定义
        $ cp -rpf inventory/sample inventory/mycluster
        
        # 使用真实的hostname(否则会自动把你的hostname改成node1/node2...这种哦)
        $ export USE_REAL_HOSTNAME=true
        # 指定配置文件位置
        $ export CONFIG_FILE=inventory/mycluster/hosts.yaml
        # 定义ip列表(你的服务器内网ip地址列表,3台及以上,前两台默认为master节点)
        $ declare -a IPS=(192.168.88.130 192.168.88.131 192.168.88.132)
        # 生成配置文件
        $ python3 contrib/inventory_builder/inventory.py ${IPS[@]}
      • 一些个性化配置
        # 定制化配置文件
        # 1. 节点组织配置(这里可以调整每个节点的角色)
        $ vi inventory/mycluster/hosts.yaml
        # 2. containerd配置(教程使用containerd作为容器引擎)
        $ vi inventory/mycluster/group_vars/all/containerd.yml
        # 3. 全局配置(可以在这配置http(s)代理实现外网访问)
        $ vi inventory/mycluster/group_vars/all/all.yml
           这里如果需要用到http代理的话可以通过proxy关键字来使用http代理(后面操作FQ比较方便很多资源都是在国外的)
        # 4. k8s集群配置(包括设置容器运行时、svc网段、pod网段等)
        $ vi inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml
           这里做了如下操作的修改
                  kube_service_addresses: 10.233.0.0/18  -> 10.200.0.0/16
                  kube_pods_subnet: 10.233.64.0/18  -> 100.233.0.0/16
                  container_manager: docker -> containerd
        # 5. 修改etcd部署类型为host(默认是docker)etcd_deployment_type: host
        $ vi ./inventory/mycluster/group_vars/etcd.yml
        # 6. 附加组件(ingress、dashboard等)  ingress_nginx_enabled: true
          dashboard_enabled: true
        $ vi ./inventory/mycluster/group_vars/k8s-cluster/addons.yml
  2. 开始一键部署
    1. 使用以下命令进行部署
      # -vvvv会打印最详细的日志信息,建议开启
      $ ansible-playbook -i inventory/mycluster/hosts.yaml  -b cluster.yml -vvvv
    2. 下载镜像(可选)三台都要执行

      为了减少“一键部署”的等待时间,可以在部署的同时,预先下载一些镜像。(首先要检查每个节点是否已经安装了crictl命令)

      $ curl https://gitee.com/pa/pub-doc/raw/master/kubespray-v2.15.0-images.sh|bash -x
  3. 遇到的一些问题以及解决方案
      • 最后一步一键安装过程中报如下超时

         

         解决方案

        #进入到这个目录kubespray-2.15.0
        cd kubespray-2.15.0
        vi ansible.cfg 
        在[default]节点下添加
        remote_user=root

         我这里是使用clash for window 进行**上网的。 默认的system proxy 只能保证浏览器上网。如果要使用命令行也能访问外网的话需要打开TUN Model具体操作如下图

         

         

         

         

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章