使用vagrant搭建k8s集群--创建虚拟机环境

2020-04-25  本文已影响0人  LineWay

创建虚拟机群

安装部署virtualbox、vagrant,安装完成后,准备创建虚拟机群,本次搭建规划为1个master + 2个slave + 1个docker-register的模式。

虚拟机配置参数

hostname IP CPU 内存
master 10.110.0.11 2 2G
slave-1 10.110.0.12 1 2G
slave-2 10.110.0.13 1 2G
docker-register 10.110.0.14 1 2G

虚拟机群规划的资源完成后,我们在宿主机的目录下创建一个Vagrantfile的文件,这个文件就是创建虚拟机群组的配置文件。

编写配置文件

这里我们一步步编写Vagrantfile文件,以便于更好的理解该配置文件的意义以及作为参考:

Vagrant.configure("2") do |config|
  config.vm.define "master" do |master|
  
  end
  config.vm.define "worker-1" do |worker_1|
  
  end
  config.vm.define "worker-2" do |worker_2|
  
  end
  config.vm.define "docker-register" do |docker-register|
  
  end
end

配置虚拟机的参数都是大同小异,这里只列出master这台虚拟机的配置信息,其他的虚拟机的配置参数可以根据前面规划的内容进行修改或根据自己实际情况做出修改,master的基本配置信息如下:

Vagrant.configure("2") do |config|
  config.vm.define "master" do |master|
    master.vm.box = "centos/7"
    master.vm.hostname = "master"
    master.vm.network "private_network", ip: "10.110.0.11"
    master.vm.provider "virtualbox" do |v|
      v.memory = 2048
      v.cpus = 2
    end
  end
end

最后,我们为虚拟机配置public_network,以便于外网访问虚拟机:

Vagrant.configure("2") do |config|
  config.vm.network "public_network", bridge: "eth0"

配置虚拟机支持root登录

一般来说,linux环境下的ssh都不支持root用户直接访问,但是,在后续创建集群的过程中,有许多的操作需要root权限才能执行,这样一来,直接使用root用户登录虚拟机对我们来说是十分方便的,这一步,我们在Vagrantfile文件中增加相应的配置,使得虚拟机在创建完成后既可以支持root用户通过ssh链接:

$sshd_change = <<-SCRIPT
echo change sshd_config to allow public key authentication & relaod sshd...
sed -i 's/\#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/\#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl reload sshd
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.network "public_network", bridge: "eth0"

  config.vm.define "master" do |master|
    master.vm.box = "centos/7"
    master.vm.hostname = "k8s-master-01"
    master.vm.network "private_network", ip: "10.110.0.11"
    master.vm.provision "shell", inline: $sshd_change
    master.vm.provider "virtualbox" do |v|
      v.memory = 2048
      v.cpus = 2
    end
  end

完成整个Vagrantfile的编写后,保存该文件,在该文件存在的路径执行vagrant up命令,开始创建虚拟机群。创建过程中没有错误后,等待一段时间,终端没有输出信息后,则说明虚拟机群创建完成了,使用vagrant status命令查看虚拟机状态及数量是否与期望的一致。

配置宿主免密登录虚拟机

创建好的虚拟机,可以使用用户名vagrant和密码vagrant通过ssh链接。但是,为了方便我们可以对虚拟机进行免密登录配置,配置方式和一般linux配置免密登录的方式一样,即将宿主机的ssh-id复制到各个虚拟机上,使用命令ssh-copy-id vagrant@<ip>即可。也可以将虚拟机的hostname和IP映射,写入到宿主机的hosts文件中,即将下列内容追加到/etc/hosts文件中:

10.110.0.11 master
10.110.0.12 slave-1
10.110.0.13 slave-2
10.110.0.14 docker-register

在终端中输入ssh-copy-id root@master就可以将宿主机的ssh_key复制到对应的虚拟机master上,成功后就可以冲宿主机免密登录到虚拟机上。

结束

创建完虚拟机群之后,一个良好的习惯就是,为各个虚拟机创建快照,以便于后期在部署K8S集群的过程中,出现异常后,快速的恢复虚拟机,使用vagrant snapshot save master k8s-master这种格式,就可以快速的创建虚拟机快照了。

上一篇 下一篇

猜你喜欢

热点阅读