使用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具體操作如下圖

         

         

         

         

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