k8s搭建之初始环境准备-虚拟机篇(一)

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
2
3
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
end

上面这个centos/7就是你官网打开列表里的名字,
在控制台执行,就会自动从官网下载。

1
$ vagrant up

方法二 :

在这个网站: http://www.vagrantbox.es/

使用方式,在控制台输入

1
2
3
$ vagrant box add {title} {url}
$ vagrant init {title}
$ vagrant up

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文件

  1. 新建一个目录(英文名,中文名在创建虚拟机的时候会报错,编码错误等,在后续使用最好使用英文的文件夹和文件名),这个是存放虚拟机配置的目录,并进入到这个目录里,创建 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
    28
    Vagrant.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
    end
  2. vb.gui = false 关闭 虚拟机 gui,vb.memory = 1024 内存1g ,vb.cpus = 1 cpu1核

  3. config.vm.provider “virtualbox” 我们用的是virtualbox,想用其他provider的可以自己试试
  4. config.vm.box = “centos7” 这个名字就是我们自己 增加的 box 的别名
  5. (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 可以唤醒,还有备份等自己决定。

坚持原创技术分享,您的支持将鼓励我继续创作!