1. 程式人生 > >k8s搭建之初始環境準備-vagrant部署虛擬機器(一)

k8s搭建之初始環境準備-vagrant部署虛擬機器(一)

k8s搭建之初始環境準備-虛擬機器篇(一)

我相信很多搭建k8s 叢集的小夥伴最頭疼的一件事情就是,我沒有那麼多機器啊,別說高可用,就算是一個master一個node 用VM都煩的很,安裝的哪個圖形化就要點老半天,snapshot 快照要是沒有準備,環境搞得亂七八糟,那真的是心態爆炸,遇上重灌,拜拜了您勒。 如果有錢就去搞個阿里雲,什麼什麼雲的伺服器,租個三個月好好搞(ps : 不要為了省錢,像博主一樣,幾個賬號各自買esc,不同租戶網路是隔離的,對於網路互通的k8s來說比較不友好,搭建成功以後會各種服務訪問失敗,而且不同雲服務商的網路也是不一樣的,有的可能有解決方案對於跨租戶VPC互通,有點就麻煩,不要得不償失了) 公司有伺服器讓你用就另說了,物理機的話也是難受的一批,類似openstack的解決方案是最好的。 當然如果你什麼都沒有怎麼辦呢,本地虛擬機器還是最好的學習手段。本文用vagrant + vistualbox,快速生成本地虛擬機器環境,以及一些可能我自己遇到的坑。文章可能比較長,比較繁瑣,多比較幾篇文章,多操作,每個人都可以總結出自己的經驗來。

(1)下載安裝 vagrant

  1. 什麼是vagrant Vagrant是一款用於構建及配置虛擬開發環境的軟體,基於Ruby,主要以命令列的方式執行。主要使用Oracle的開源VirtualBox虛擬化系統,與Chef,Salt,Puppet等環境配置管理軟體搭配使用, 可以實行快速虛擬開發環境的構建。 早期以VirtualBox為物件,1.1以後的版本中開始對應VMware等虛擬化軟體,包括Amazon EC2之類伺服器環境的對應。 vagrant 是支援win10的 hyper-v 的,但是這次還沒試用,還是用的virtualBox 。
  2. ** 下載 虛擬機器所需要的映象** 這裡和平時用的虛擬機器映象不太一樣,是box檔案 例如CentOS-7-x86_64-Vagrant-1710_01.VirtualBox.box 方式一
    : 官網下載地址 https://app.vagrantup.com/boxes/search 下載方式,安裝好上面兩個東西以後,建立一個目錄,建立一個名字為Vagrantfile 的檔案,沒有後綴的,linux touch出來的那種,可以用gitbash ,touch一個檔案, windows 不知道文字文件另存為能不能建立。
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)建立自己的虛擬機器群

  1. 新建一個目錄,並進入到這個目錄裡,建立 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 可以喚醒,還有備份等自己決定。