kubespray部署kubernetes高可用集群


 

Kubespray是Google開源的部署生產級別Kubernetes服務器集群的項目,它整合了Ansible作為部署的工具。

  • 可以部署在AWS,GCE,Azure,OpenStack,vSphere,Packet(Bare metal),Oracle Cloud Infrastructure(Experimental)或Baremetal上
  • 高可用集群
  • 可組合各種組件(例如,選擇網絡插件)
  • 支持最受歡迎的Linux發行版
  • 持續集成測試

在這里插入圖片描述

官網:https://kubespray.io

項目地址:https://github.com/kubernetes-sigs/kubespray

部署環境

國內特殊的網絡環境導致使用kubespray特別困難,部分鏡像需要從gcr.io拉取,部分二進制文件需要從github下載,所以這里在阿里雲上創建3台香港2C4G搶占模式ECS實例進行部署測試。

說明:高可用部署etcd要求3個節點,所以高可用集群最少需要3個節點。

kubespray需要一個部署節點,也可以復用集群任意一個節點,這里在第一個master節點(192.168.0.137)安裝kubespray,並執行后續的所有操作。

下載kubespray

    #下載正式發布的relese版本
       wget https://github.com/kubernetes-sigs/kubespray/archive/v2.13.1.tar.gz
       tar -zxvf v2.13.1.tar.gz

    或者直接克隆
        git clone https://github.com/kubernetes-sigs/kubespray.git -b v2.13.1 --depth=1

安裝依賴

   cd kubespray-2.13.1/
   yum install -y epel-release python3-pip
   pip3 install -r requirements.txt

更新 Ansible inventory file,IPS地址為3個ecs實例的內部IP:

   cp -rfp inventory/sample inventory/mycluster
   declare -a IPS=( 192.168.0.137 192.168.0.138 192.168.0.139)
   CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

查看自動生成的hosts.yaml,kubespray會根據提供的節點數量自動規划節點角色。這里部署2個master節點,同時3個節點也作為node,3個節點也用來部署etcd。

[root@node1 kubespray-2.13.1]# cat inventory/mycluster/hosts.yaml
all:
   hosts:
       node1:
           ansible_host: 192.168.0.137
           ip: 192.168.0.137
           access_ip: 192.168.0.137
       node2:
           ansible_host: 192.168.0.138
           ip: 192.168.0.138
           access_ip: 192.168.0.138
      node3:
          ansible_host: 192.168.0.139
          ip: 192.168.0.139
          access_ip: 192.168.0.139
   children:
       kube-master:
           hosts:
               node1:
               node2:
       kube-node:
           hosts:
               node1:  
               node2:
               node3:
       etcd:
          hosts:
              node1:
              node2:
              node3:
       k8s-cluster:
           children:
               kube-master:
               kube-node:
       calico-rr:
           hosts: {}

修改全局環境變量(默認即可)

   cat inventory/mycluster/group_vars/all/all.yml

默認安裝版本較低,指定kubernetes版本

   # vim inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.yml
   kube_version: v1.18.3

配置ssh免密,kubespray ansible節點對所有節點免密。

    ssh-keygen
    ssh-copy-id 192.168.0.137
    ssh-copy-id 192.168.0.138
    ssh-copy-id 192.168.0.139

運行kubespray playbook安裝集群

    ansible-playbook -i inventory/mycluster/hosts.yaml  --become --become-user=root cluster.yml

查看創建的集群

[root@node1 kubespray-2.13.1]# kubectl get nodes -o wide
[root@node1 kubespray-2.13.1]# kubectl -n kube-system get pods 

清理集群

   ansible-playbook -i inventory/mycluster/hosts.yaml  --become --become-user=root reset.yml

 

轉載自:https://blog.csdn.net/networken/article/details/106623080


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM