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

posted @ 2020-12-11 11:30  北方客888  阅读(1715)  评论(1编辑  收藏  举报