天天看點

使用 minikube 快速上手 Kubernetes | v1.7.3

minikube

踩坑和填坑。

環境說明

主控端的環境

  • 作業系統:Windows 10
  • 虛拟化:VirtualBox 6.0

說明:在 Win 10 系統裡嘗試過 Hyper-V,感覺不好用,是以還是回歸到了 VirtualBox。如果你用的是 Hyper-V,或者是 MacOS/Linux 作業系統,中間部分流程應該也可以參考。

如果有疑問可以檢視

官方文檔

版本

  • Minikube:1.7.3
  • Kubernetes:1.17.3

說明:目前(2020-03-15)minikube 最新的版本是 1.8.2。我前幾天嘗試的版本是 1.8.1,踩到了其中的大 bug。

從 1.8.0 版本開始,它在部署的時候需要下載下傳一個

Preload tarball images

的鏡像檔案,大小有 500 MB。

這個檔案安裝過程中是先下載下傳到

.minikube\cache\preloaded-tarball

目錄中,并且支援斷點續傳。但是,當我把從其它地方下載下傳完全的檔案放到該目錄中時,并沒有效果。也就是說緩存實際上沒用。

最新的 1.8.2 似乎修複了這個 bug。

Minikube 最新的 1.8.2 和 1.7.3 對應的 Kubernetes 版本都是 1.17.3。使用舊版本啟動叢集需要額外下載下傳的軟體大小是這個 preload image 的一半,而且鑒于這個功能現在還貌似不夠穩定,是以 推薦 使用 1.7.3 版本的 minikube。

下載下傳

使用 minikube 安裝部署所需要下載下傳(拉取)的東西分為以下幾類:

  • minikube 指令:從 GitHub 上下載下傳
  • minikube 啟動虛機所需 iso:安裝過程中自動下載下傳,通過配置

    --iso-url

    加速,會緩存到本地
  • kubernetes 叢集部署所需鏡像,安裝過程中自動拉取,通過配置

    --image-repository

    加速
  • kubernetes 叢集部署所需程式,安裝過程中自動下載下傳,沒有配置項,但是會緩存到本地
  • kubernetes 主控端(即 Windows)所需用戶端程式,安裝過程自動下載下傳,沒有配置項,但是會緩存
  • 應用所需鏡像:安裝過程不涉及,但是可以通過

    --registry-mirror

    指定加速鏡像

可緩存的檔案

整理了可緩存下載下傳的檔案如下,它們在

minikube

部署叢集的時候會自動下載下傳,如果下載下傳時間過長,可以考慮通過其它下載下傳工具提前下載下傳,儲存到指定目錄(具體下文會說到)。

這是 Windows 系統下的 kubectl 用戶端程式,啟動 dashboard 時需要。

不管是通過 minikube 哪個版本安裝,這個檔案都是必需的。

  • kubeadm,
  • kubectl,
  • kubelet,

這是 Linux 系統下的程式,虛拟機内安裝 Kubernetes 需要。1.7.3 的 minikube 需要分别下載下傳。

  • preloaded-images-k8s-v1-v1.17.3-docker-overlay2.tar.lz4,

這是 1.8.0 之後的 minikube 需要下載下傳的檔案

以上檔案下載下傳無需科學上網,但是要看情況,出現無法連接配接可以多試幾次。

安裝 minikube

minikube 就是單個

.exe

檔案,既可以直接下載下傳

minikube-windows-amd64.exe

然後改名,也可以下載下傳

minikube-installer.exe

安裝。推薦後者,因為安裝包的體積更小,而且使用更友善。

執行

minikube-installer.exe

,這個安裝過程非常簡單。

預設安裝路徑是

C:\Program Files\Kubernetes\Minikube

,安裝程式會自動把該路徑加入到

PATH

中。

運作

cmd

指令行,檢查

minikube

的版本:

> minikube version
minikube version: v1.7.3
commit: 436667c819c324e35d7e839f8116b968a2d0a3ff           

啟動叢集

注意:如果以前安裝過,需要使用

minikube delete

指令把舊版本删除。

如果版本不一緻或者出現莫名其妙的錯誤,可以把

C:\Users\你的使用者名\.minikube

也删除。

minikube v1.7.3

執行:

minikube start --vm-driver=virtualbox --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.7.3.iso --registry-mirror=https://reg-mirror.qiniu.com
           

選項說明:

  • --vm-driver

    如果不寫會自動檢測,可選值 virtualbox, vmwarefusion, hyperv, vmware
  • --image-mirror-country

    需要使用的鏡像鏡像的國家/地區代碼。留白以使用全球代碼。對于中國大陸使用者,請将其設定為 cn。
  • --image-repository

    用來拉取 Kubernetes 叢集所需鏡像的倉庫
  • --iso-url

    下載下傳 minikube 虛機安裝所需的 iso 檔案
  • --registry-mirror

    docker registry 的鏡像源,叢集安裝後拉取鏡像加速用,可以使用其它加速器位址
更多選項可以執行

minikube start --help

首先是下載下傳 iso 鏡像:

* minikube 1.8.2 is available! Download it: https://github.com/kubernetes/minikube/releases/tag/v1.8.2
* To disable this notice, run: 'minikube config set WantUpdateNotification false'

! Microsoft Windows 10 Pro 10.0.18362 Build 18362 上的 minikube v1.7.3
* Using the virtualbox driver based on user configuration
* 正在使用鏡像存儲庫 registry.cn-hangzhou.aliyuncs.com/google_containers
* 正在下載下傳 VM boot image...
    > minikube-v1.7.3.iso: 30.81 MiB / 167.39 MiB  18.41% 830.43 KiB p/s ETA 2m           

這時候會自動建立

C:\Users\你的使用者名\.minikube

檔案夾,該目錄下有一個

cache

檔案夾,下載下傳的檔案都會緩存在這裡。

接下來是建立虛機:

* 正在建立 virtualbox 虛拟機(CPUs=2,Memory=2000MB, Disk=20000MB)...
* 正在 Docker 19.03.6 中準備 Kubernetes v1.17.3…           

這裡的虛機配置對應的選項:

--cpu=2

--memory='2000mb'

--disk-size='20000mb'

,可以自己指定。

這個階段虛機内部開始拉取鏡像,是以會花一點時間,可以另起一個指令行,執行:

> minikube ssh
                         _             _
            _         _ ( )           ( )
  ___ ___  (_)  ___  (_)| |/')  _   _ | |_      __
/' _ ` _ `\| |/' _ `\| || , <  ( ) ( )| '_`\  /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )(  ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
$ docker images
REPOSITORY                                                                    TAG                 IMAGE ID            CREATED             SIZE
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy                v1.17.3             ae853e93800d        4 weeks ago         116MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver            v1.17.3             90d27391b780        4 weeks ago         171MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-controller-manager   v1.17.3             b0f1517c1f4b        4 weeks ago         161MB
registry.cn-hangzhou.aliyuncs.com/google_containers/kube-scheduler            v1.17.3             d109c0821a2b        4 weeks ago         94.4MB
registry.cn-hangzhou.aliyuncs.com/google_containers/dashboard                 v2.0.0-beta8        eb51a3597525        3 months ago        90.8MB
registry.cn-hangzhou.aliyuncs.com/google_containers/coredns                   1.6.5               70f311871ae1        4 months ago        41.6MB
registry.cn-hangzhou.aliyuncs.com/google_containers/etcd                      3.4.3-0             303ce5db0e90        4 months ago        288MB
registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-scraper           v1.0.2              3b08661dc379        4 months ago        40.1MB
registry.cn-hangzhou.aliyuncs.com/google_containers/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB
registry.cn-hangzhou.aliyuncs.com/google_containers/storage-provisioner       v1.8.1              4689081edb10        2 years ago         80.8MB
$           

回到安裝所在的指令行,可以看到需要下載下傳的程式:

如果感覺半天沒動靜了,可以按一下回車
* 正在 Docker 19.03.6 中準備 Kubernetes v1.17.3…
* 正在下載下傳 kubelet v1.17.3
* 正在下載下傳 kubectl v1.17.3
* 正在下載下傳 kubeadm v1.17.3
           

下載下傳後的檔案仍然是儲存在

C:\Users\你的使用者名\.minikube\cache\linux\v1.17.3

檔案夾中,如果這裡下載下傳的較慢,可以:

  1. 提前下載下傳好對應的檔案
  2. 此處按下 Ctrl-C 中斷 minikube
  3. 把檔案拷貝到對應的檔案夾下
  4. 重新執行上面的

    minikube start

minikube 會從中斷處繼續往下執行。

* 正在啟動 Kubernetes ...
* Enabling addons: default-storageclass, storage-provisioner
* 等待叢集上線...
* 完成!kubectl 已經配置至 "minikube"
* 為獲得最佳結果,請安裝 kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/           

安裝完成,來看看叢集的狀态:

> minikube kubectl get nodes
* 正在下載下傳 kubectl.exe v1.17.3           

這裡又要下載下傳 Windows 系統下的 kubectl 用戶端程式,下載下傳後的檔案儲存在

C:\Users\你的使用者名\.minikube\cache\windows\v1.17.3

檔案夾中,如果這裡下載下傳的較慢,仍然可以提前下載下傳好拷貝過去。

> minikube kubectl get nodes
NAME       STATUS   ROLES    AGE   VERSION
minikube   Ready    master   11m   v1.17.3           

就緒狀态,開始啟動

dashboard

> minikube dashboard
X kubectl not found in PATH, but is required for the dashboard. Installation guide: https://kubernetes.io/docs/tasks/tools/install-kubectl/           

這裡提示我們沒有在環境變量

PATH

中找到

kubectl

,隻需要将上面下載下傳下來的

kubectl.exe

拷貝到任何一個已經在

PATH

中的目錄即可。為了友善管理,我們可以把它和

minikube.exe

放一起。

> minikube dashboard
* 正在開啟 dashboard ...
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
* Opening http://127.0.0.1:54032/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...           

此時指令行會一直阻塞在這裡,自動打開浏覽器,進入 Dashboard:

對于手動部署過 dashboard 的人來說,這個确實太友善了

并且後續可以直接使用

kubectl

指令來操作叢集:

> kubectl get pods -A
NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
kube-system            coredns-7f9c544f75-kw6g9                     1/1     Running   0          29m
kube-system            coredns-7f9c544f75-p84v8                     1/1     Running   0          29m
kube-system            etcd-minikube                                1/1     Running   0          29m
kube-system            kube-apiserver-minikube                      1/1     Running   0          29m
kube-system            kube-controller-manager-minikube             1/1     Running   0          29m
kube-system            kube-proxy-4jf76                             1/1     Running   0          29m
kube-system            kube-scheduler-minikube                      1/1     Running   0          29m
kube-system            storage-provisioner                          1/1     Running   1          29m
kubernetes-dashboard   dashboard-metrics-scraper-7b64584c5c-x7bwz   1/1     Running   0          14m
kubernetes-dashboard   kubernetes-dashboard-79d9cd965-lq7xj         1/1     Running   0          14m           

直接 SSH 連接配接叢集

在指令行執行

minikube ssh

可以進入到虛機内部,但是因為終端類型的原因,會出現亂碼,比如執行

top

指令:

是以最好還是通過模拟終端工具(Xshell/SecureCRT等)登入,

  1. 先執行

    minikube ip

    查詢到虛機的 IP 位址
  2. SSH 使用者名選擇為

    docker

  3. 認證方式選擇為

    Public Key

  4. 選擇對應的私鑰檔案,

    C:\Users\你的使用者名\.minikube\machines\minikube\id_rsa

附:最新 minikube v1.8.2 安裝說明

minikube start --driver=virtualbox --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --registry-mirror=https://reg-mirror.qiniu.com --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.8.0.iso
           
  • --driver

    : 原

    --vm-driver

    改為

    --driver

  • --image-mirror-country

    : 帶上該選項會報錯,不帶也沒影響
  • --image-repository

    :一樣
  • --iso-url

    注意版本号
  • --registry-mirror

    : 同上

安裝過程中不再需要下載下傳那 3 個檔案,改為下載下傳

preloaded-images-k8s-v1-v1.17.3-docker-overlay2.tar.lz4

的鏡像檔案,大小 500MB,儲存在

C:\Users\你的使用者名\.minikube\cache\preloaded-tarball

支援斷點續傳,并且可以提前把下載下傳好的檔案拷貝過去。

其它步驟和 v1.7.3 一樣,不再贅述。

文章内容雖基礎,整理釋出不輕松

如果看過有幫助,不妨 點贊 + 關注,謝謝!