美文网首页
使用vagrant搭建k8s集群--创建虚拟机环境

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

作者: LineWay | 来源:发表于2020-04-25 21:27 被阅读0次

创建虚拟机群

安装部署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
  • Vagrant.configure("2")是一个固定格式,不需要修改,其含义可以查看vagrant的文档获取;
  • config.vm.define "master"定义了一个虚拟机,为master;

配置虚拟机的参数都是大同小异,这里只列出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
  • master.vm.box = "centos/7"定义了虚拟机采用的镜像文件是centos/7。执行vagrant up时,vagrant会根据Vagrantfile的内容,查看本地环境是否存在对应镜像,如果不存在则从vagrant的官方仓库中下载。还可以使用以下两种方式获取vagrant的镜像文件:

    • 使用vagrant init centos/7的方式下载镜像到本地;
    • 手动下载镜像,使用vagrant add box <image_file> --name <local_image_name>将下载的文件导入到本地的box列表中;

    之后,可以使用vagrant box list查看本地环境的image列表。

  • master.vm.hostnamemaster.vm.network是为虚拟机配置了hostname和私有网络,关于public_network的配置,后续有相关的说明;

  • master.vm.provider "virtualbox"该项配置则声明了vagrant使用的虚拟化后端是virtualbox,并且后续的配置项对虚拟机使用的计算资源做出了配置。

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

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

  • config.vm.network "public_network", bridge: "eth0"该配置与private_network的配置类似,区别在与网络模式这里选择bridge,参数则是宿主机上与外界连通的网卡的名称。

配置虚拟机支持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
  • sshd_change是一个我们编写的脚本名称,脚本内容就是SCRIPT标签中的内容;
  • master.vm.provision "shell", inline: $sshd_change这一项配置表明创建虚拟机的过程中,修改了sshd_config文件中的信息,修改的内容就是脚本中描述的信息。

完成整个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这种格式,就可以快速的创建虚拟机快照了。

相关文章

  • Vagrant

    Vagrant 创建和部署虚拟开发环境,各种集群的测试环境的搭建用多个vagrant虚拟机来模拟。(1)下载工具V...

  • 使用vagrant来创建虚拟机

    使用vagrant创建好虚拟机后,通过以下几步来打开docker环境: 使用vagrant up命令来启动虚拟机;...

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

    创建虚拟机群 安装部署virtualbox、vagrant,安装完成后,准备创建虚拟机群,本次搭建规划为1个mas...

  • Linux下安装docker与kubernetes(k8s)

    环境 安装是使用Vmware虚拟机下进行,操作系统是CentOS7 64位。规划是使用三台虚拟机搭建k8s的集群,...

  • Vagrant搭建虚拟机集群

    我的个人博客,Vagrant搭建虚拟机集群 本人的机器环境是:MaxOS 工具准备 1. 安装 VirtualBo...

  • MySQL部署到k8s实例

    k8s && ceph 环境信息 ceph 部署以及配置 搭建ceph集群 ceph 集群配置 ceph 创建My...

  • k8s集群搭建

    k8s集群搭建 1.采用VirtualBox 搭建 1.Vagrantfile 文件配置 2.创建好虚拟机后 3....

  • Docker下Redis集群环境搭建

    Docker搭建Redis集群环境 使用docker可以很方便地搭建redis集群环境,本次我们使用一台虚拟机,在...

  • Vagrant搭建k8s测试集群(Flannel网络方案)

    提要 本文介绍如何通过 Vagrant 快速搭建 k8s 测试集群(参照官方博客https://kubernete...

  • k8s集群搭建

    k8s集群搭建 前言 今天我们来使用kubeamd方式搭建一下k8s集群,为后面我们要写的微服务项目做个环境准备工...

网友评论

      本文标题:使用vagrant搭建k8s集群--创建虚拟机环境

      本文链接:https://www.haomeiwen.com/subject/ycslwhtx.html