k8s搭建之初始環境準備-vagrant部署虛擬機器(一)
k8s搭建之初始環境準備-虛擬機器篇(一)
我相信很多搭建k8s 叢集的小夥伴最頭疼的一件事情就是,我沒有那麼多機器啊,別說高可用,就算是一個master一個node 用VM都煩的很,安裝的哪個圖形化就要點老半天,snapshot 快照要是沒有準備,環境搞得亂七八糟,那真的是心態爆炸,遇上重灌,拜拜了您勒。 如果有錢就去搞個阿里雲,什麼什麼雲的伺服器,租個三個月好好搞(ps : 不要為了省錢,像博主一樣,幾個賬號各自買esc,不同租戶網路是隔離的,對於網路互通的k8s來說比較不友好,搭建成功以後會各種服務訪問失敗,而且不同雲服務商的網路也是不一樣的,有的可能有解決方案對於跨租戶VPC互通,有點就麻煩,不要得不償失了) 公司有伺服器讓你用就另說了,物理機的話也是難受的一批,類似openstack的解決方案是最好的。 當然如果你什麼都沒有怎麼辦呢,本地虛擬機器還是最好的學習手段。本文用vagrant + vistualbox,快速生成本地虛擬機器環境,以及一些可能我自己遇到的坑。文章可能比較長,比較繁瑣,多比較幾篇文章,多操作,每個人都可以總結出自己的經驗來。
(1)下載安裝 vagrant
- 什麼是vagrant Vagrant是一款用於構建及配置虛擬開發環境的軟體,基於Ruby,主要以命令列的方式執行。主要使用Oracle的開源VirtualBox虛擬化系統,與Chef,Salt,Puppet等環境配置管理軟體搭配使用, 可以實行快速虛擬開發環境的構建。 早期以VirtualBox為物件,1.1以後的版本中開始對應VMware等虛擬化軟體,包括Amazon EC2之類伺服器環境的對應。 vagrant 是支援win10的 hyper-v 的,但是這次還沒試用,還是用的virtualBox 。
- ** 下載 虛擬機器所需要的映象**
這裡和平時用的虛擬機器映象不太一樣,是box檔案 例如CentOS-7-x86_64-Vagrant-1710_01.VirtualBox.box
方式一
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
end
上面這個centos/7就是你官網開啟列表裡的名字, 在控制檯執行 **** ,就會自動從官網下載。
$ vagrant up
$ vagrant box add { title} {url}
$ vagrant init {title}
$ vagrant up
CentOS-7-x86_64-Vagrant-1710_01.VirtualBox.box
下載完成後在你下載的檔案目錄下執行
$ vagrant box add centos7 {你的映象名}
centos7 是自己起的名字
如果以上都順利完成那你就成功了一大半了。
(2)建立自己的虛擬機器群
- 新建一個目錄,並進入到這個目錄裡,建立 Vagrantfile(同上提到過的),輸入
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 ==1 ) ? "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
1.vb.gui = false 關閉 虛擬機器 gui,vb.memory = 1024 記憶體1g ,vb.cpus = 1 cpu1核
2. config.vm.provider "virtualbox" 我們用的是virtualbox,想用其他provider的可以自己試試 config.vm.box = "centos7" 這個名字就是我們自己 增加的 box 的別名
3. (1..6).each do |mid| 這裡只是建立6個,需要多個的可以自己改數字,下面關於hostname的設定,這裡是前三個 取名 k8s-m1..3 後面三個取名為 k8s-n1..3 ,只是建立普通虛擬機器群的可以自己稍微改動,固定名字
在檔案目錄下執行
vagrant up
正常情況下應該是直接建立完成,但是總有不測風雲。win10 裝過docker 的話,開啟了hyper-v ,需要關閉,可能會關閉失敗
錯誤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(具體檔案要看你下載的版本,官網tab鍵快速鎖定)重啟就ok,https://www.microsoft.com/en-us/download/details.aspx?id=53337
參考解決方案地址: https://www.jianshu.com/p/2e3429d45aea
(3)連線我們的虛擬機器
1.控制檯通過vagrant ssh 連線
vagrant ssh k8s-m1
可以從控制檯免密碼,k8s-m1預設登入的使用者是vagrant 密碼vagrant,可以手動切換root,但是比較麻煩,點選
《xshell 登陸vagrant》
看我另外一篇部落格 《通過xshell 登陸vagrant 》,免密碼和用賬號密碼登陸的介紹。
2. 優雅的關機 vagrant halt
更多的命令網上找有很多,vagrant up 可以喚醒,還有備份等自己決定。