k8s搭建之初始环境准备-虚拟机篇(一)
我相信很多搭建k8s 集群的小伙伴最头疼的一件事情就是,我没有那么多机器啊,别说高可用,就算是一个master一个node 用VM都烦的很,安装的哪个图形化就要点老半天,snapshot 快照要是没有准备,环境搞得乱七八糟,那真的是心态爆炸,遇上重装,拜拜了您勒。
如果有钱就去搞个阿里云,什么什么云的服务器,租个三个月好好搞(ps : 不要为了省钱,像博主一样,几个账号各自买esc,不同租户网络是隔离的,对于网络互通的k8s来说比较不友好,搭建成功以后会各种服务访问失败,而且不同云服务商的网络也是不一样的,有的可能有解决方案对于跨租户VPC互通,有点就麻烦,不要得不偿失了)
公司有服务器让你用就另说了,物理机的话也是难受的一批,类似openstack的解决方案是最好的。
当然如果你什么都没有怎么办呢,本地虚拟机还是最好的学习手段。本文用vagrant + vistualbox,快速生成本地虚拟机环境,以及一些可能我自己遇到的坑。文章可能比较长,比较繁琐,多比较几篇文章,多操作,每个人都可以总结出自己的经验来。
下载安装 vagrant
什么是vagrant
Vagrant是一款用于构建及配置虚拟开发环境的软件,基于Ruby,主要以命令行的方式运行。主要使用Oracle的开源VirtualBox虚拟化系统,与Chef,Salt,Puppet等环境配置管理软件搭配使用, 可以实行快速虚拟开发环境的构建。
早期以VirtualBox为对象,1.1以后的版本中开始对应VMware等虚拟化软件,包括Amazon EC2之类服务器环境的对应。
vagrant 是支持win10的 hyper-v 的,但是这次还没试用,还是用的virtualBox 。
下载安装vagrant
安装vagrant
`官网下载地址 https://www.vagrantup.com/downloads.html 选自己的系统版本就行了
安装virtualbox
官网下载地址 https://www.virtualbox.org/wiki/Downloads 选自己的系统版本就行了
下载虚拟机所需要的镜像
这里和平时用的虚拟机镜像不太一样,是box文件 例如CentOS-7-x86_64-Vagrant-1710_01.VirtualBox.box
方式一 :
官网下载地址 https://app.vagrantup.com/boxes/search
下载方式,安装好上面两个东西以后,创建一个目录,创建一个名字为Vagrantfile 的文件,没有后缀的,linux touch出来的那种,可以用gitbash ,touch一个文件, windows 不知道文本文档另存为能不能创建。
1 | Vagrant.configure("2") do |config| |
上面这个centos/7就是你官网打开列表里的名字,
在控制台执行,就会自动从官网下载。1
vagrant up
方法二 :
在这个网站: http://www.vagrantbox.es/
使用方式,在控制台输入
1 | vagrant box add {title} {url} |
url 在网站copy就行 title 是你给你的镜像起的别名
方法三:
centos 的官网有vagrant的镜像,提前下载
地址:https://cloud.centos.org/centos/7/vagrant/x86_64/images/
版本比较齐,本博客用的 这个
1 | CentOS-7-x86_64-Vagrant-1710_01.VirtualBox.box |
下载完成后在你下载的文件目录下执行1
vagrant box add centos7 {你的镜像名}
centos7 是自己起的别名
如果以上都顺利完成那你就成功了一大半了。
创建自己的虚拟机群
新建Vagrant文件
新建一个目录(英文名,中文名在创建虚拟机的时候会报错,编码错误等,在后续使用最好使用英文的文件夹和文件名),这个是存放虚拟机配置的目录,并进入到这个目录里,创建 Vagrantfile (没有后缀的文件,可以用gitbash,touch/vi 一个),输入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28Vagrant.require_version ">= 1.7.0"
def set_vbox(vb, config)
vb.gui = false
vb.memory = 1024
vb.cpus = 1
end
Vagrant.configure("2") do |config|
config.vm.provider "virtualbox"
config.vm.box = "centos7"
private_count = 11
(1..6).each do |mid|
name = (mid ==3) ? "k8s-m" : "k8s-n"
id = (mid <= 3) ? mid : mid - 3
config.vm.define "#{name}#{id}" do |n|
n.vm.hostname = "#{name}#{id}"
ip_addr = "192.16.35.#{private_count}"
n.vm.network :private_network, ip: "#{ip_addr}", auto_config: true
n.vm.provider :virtualbox do |vb, override|
vb.name = "#{n.vm.hostname}"
set_vbox(vb, override)
end
private_count += 1
end
end
endvb.gui = false 关闭 虚拟机 gui,vb.memory = 1024 内存1g ,vb.cpus = 1 cpu1核
- config.vm.provider “virtualbox” 我们用的是virtualbox,想用其他provider的可以自己试试
- config.vm.box = “centos7” 这个名字就是我们自己 增加的 box 的别名
- (1..6).each do |mid| 这里只是创建6个,需要多个的可以自己改数字,下面关于hostname的设定,这里是前三个 取名 k8s-m1..3 后面三个取名为 k8s-n1..3 ,只是创建普通虚拟机群的可以自己稍微改动,固定名字
执行vagrant up
在文件目录下执行
1 | vagrant up |
正常情况下应该是直接创建完成,但是总有不测风云。win10 装过docker 的话,开启了hyper-v ,需要关闭,可能会关闭失败1
2
3错误Raw-mode is unavailable courtesy of Hyper-V.
(VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT).
返回 代码: E_FAIL (0x80004005)
打开这个官方工具网站,点击下载,并且在cmd 里执行 DG_Readiness_Tool_v3.6.ps1 -Ddisable,注意ps1 的文件名,可能版本不同,不要直接copy 命令,重启就ok,
参考解决方案地址: https://www.jianshu.com/p/2e3429d45aea
连接我们的虚拟机
连接虚拟机 vagrant ssh
1 | vagrant ssh k8s-m1 |
可以从控制台免密码,k8s-m1默认登录的用户是vagrant 密码vagrant,可以手动切换root,但是比较麻烦,点击
《xshell 登陆vagrant》
看我另外一篇博客 《通过xshell 登陆vagrant 》,免密码和用账号密码登陆的介绍。
优雅的关机 vagrant halt
更多的命令网上找有很多,vagrant up 可以唤醒,还有备份等自己决定。