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

创建虚拟机群

安装部署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这种格式,就可以快速的创建虚拟机快照了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容