Vagrant 是一款用于构建及装备虚拟开发环境的软件,选用 Ruby 编写,主要以命令行方式运转。 其主要运用 Oracle VirtualBox 供给虚拟化体系,与Chef,Salt,Puppet等环境装备管理软件搭配运用,可以完成快速建立虚拟开发环境。

Kubespray 是利用 Ansible 这个东西,通过 SSH 协议批量让指定远程机器履行一系列脚本,装置各种组件,完成 K8S 集群建立。

装置 Vagrant

宿主机是 Ubuntu 20.04,装置参阅 Install Vagrant:

wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install vagrant

我这里 Vagrant 用的 providervirtualbox

预备 Vagrant Box

一开端运用的是 centos/7,但这个 Box 的一些默认装备不够灵活:

  • SSH Server 装备了无法运用暗码连接,只能运用私钥
  • 磁盘最大只有几十个G,后期会是一个瓶颈
  • root 用户无法直接运用

由于以上原因,决定自制 CentOS Box。

自制 CentOS Box

首要预备一个 CentOS 7.8 的虚拟机镜像,根据这个发动一个虚拟机(叫做 centos7.8-template),这个虚拟机有几个要求:

  • 磁盘巨细给 2T(预分配,实践占用空间根据实践运用情况而定)
  • 内存和 CPU 在创立的时候在 Vagrantfile 中再设置
  • vagrant 用户,sudoer 需要设置 NOPASSWD
  • 增加公钥
  • 设置 ssh server,UseDNS=no
  • 装置 VirtualBox Guest Additions
# 宿主机上生成 box
vagrant package --base centos7.8-template
# 增加 box
vagrant box add package.box --name centos7.8

这个 Box 已经上传到 Vagrant Cloud 了: k8scat/centos7.8

初始化虚拟机

目录结构:

.
├── master01
│   └── Vagrantfile
├── node01
│   └── Vagrantfile
├── node02
│   └── Vagrantfile
├── operator
│   └── Vagrantfile
└── scripts
    ├── init_node.sh
    └── init_operator.sh

别离运用 init_operator.shinit_node.sh 初始化操作机和节点机(包含 master),
GitHub地址:k8scat/k8s-cluster-vagrant。

设置免密登录

ssh-keygen
ssh-copy-id root@ip

初始化 K8S 集群

cp -rfp inventory/sample inventory/mycluster
# 生成 hosts.yaml
declare -a IPS=(192.168.3.63 192.168.3.64 192.168.3.65)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}
# 修正 inventory/mycluster/hosts.yaml
# 修正 master 和 node 的分配
# 修正 inventory/mycluster/group_vars/all/all.yml
# 设置 http_proxy 和 https_proxy 代理,代理需要是 http 最初的
# 修正 inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml
# 设置 container_manager 为 docker
# 修正 inventory/mycluster/group_vars/all/docker.yml
# 设置 docker_registry_mirrors,增加阿里云镜像加快地址
# 开端创立集群
ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml
# 删除集群
# 会卸载 docker
#ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root reset.yml

文章说明

原文地址: 运用 Vagrant + Kubespray 快速初始化 K8S 集群,转载请标明来源。

本文由 Articli 东西主动发布。