使用Minikube部署本地Kubernetes集群(二十八)


前言               

使用Minikube部署本地k8s集群相對比較簡單,非常推薦將其用於本地k8s開發環境,唯一麻煩點的僅僅是網絡問題。

在本篇教程中,我們使用了國內的鏡像來完成本地k8s集群的搭建。如果搭建過程中出現錯誤,建議使用minikube delete之后再重新搭建。


 

目錄

使用Minikube部署本地Kubernetes集群 

1. 什么是Kubernetes集群? 

2. 使用Minikube創建本地Kubernetes實驗環境 

1)什么是Minikube? 

2)Minikube支持的功能 

3)Windows 10下安裝 

4)打開Minikube可視化面板 

5)常見錯誤 

6)Linux下安裝 


 

使用Minikube部署本地Kubernetes集群

什么是Kubernetes集群?

Kubernetes 用於協調高度可用的計算機集群,這些計算機被連接作為單個工作單元。 Kubernetes允許用戶將容器化的應用程序部署到集群,而不必專門將其綁定到單個計算機。為了利用這種新的部署模型,應用程序需要被容器化。容器化應用程序比過去的部署模型更靈活和可用——而不是將應用程序直接安裝到特定機器上,作為深入集成到主機中的軟件包。Kubernetes 在一個集群上以更有效的方式自動分發和調度容器應用程序。

Kubernetes 集群由兩種類型的資源組成:

  • Master:即集群的調度節點,負責管理集群,例如調度應用程序、維護應用程序的所需狀態、擴展應用程序和滾動更新。
  • Nodes:即應用程序實際運行的工作節點,可以是物理機或者虛擬機。每個工作節點都有一個 Kubelet(節點代理),它是管理節點並與Kubernetes Master節點進行通信的代理。節點上還應支持容器操作,例如 Docker或rkt。一個 Kubernetes 工作集群至少有三個節點。

當我們在Kubernetes上部署應用程序時, Master會啟動應用程序容器,並調度容器在集群的Nodes上運行,而Nodes使用Master公開的Kubernetes API與Master進行通信。最終用戶還可以直接使用 Kubernetes 的API與集群交互。

 

使用Minikube創建本地Kubernetes實驗環境

在大部分情況下,我們需要在本地玩轉Kubernetes,以便於Kubernetes應用程序的開發和調測。搭建完整的Kubernetes集群畢竟太重,那么使用Minikube則是不二選擇。

什么是Minikube?

Minikube 是一個輕量級的Kubernetes實現,會在本機創建一台虛擬機,並部署一個只包含一個節點的簡單集群。 Minikube適用於Linux, Mac OS和Windows系統。Minikube CLI提供了集群的基本引導操作,包括啟動、停止、狀態和刪除。

Minikube的目標是成為本地Kubernetes應用程序開發的最佳工具,並支持所有適合的Kubernetes功能!

官方GitHub地址:https://github.com/kubernetes/minikube


Minikube支持的功能

Minikube支持以下Kubernetes功能:

  • DNS
  • NodePorts(可使用“minikube service”命令來管理)
  • ConfigMaps和Secrets
  • 儀表板(Dashboards,minikube dashboard)
  • 容器運行時:Docker,rktCRI-Ocontainerd
  • Enabling CNI(容器網絡接口)
  • Ingress
  • LoadBalancer(負載均衡,可以使用“minikube tunnel”命令來啟用)
  • Multi-cluster(多集群,可以使用“minikube start -p <name>”命令來啟用)
  • Persistent Volumes
  • RBAC
  • 通過命令配置apiserver和kubelet

 

Windows 10下安裝

1.安裝要求

Windows必須支持虛擬化,可以執行“systeminfo”命令來確認。如果支持虛擬化,則【Hyper-V要求】一欄如下圖所示:

 

C:\Users\Lys_Desktop\Documents\Tencent Files\512982554\Image\C2C\M%YWM2VE`R)$F2KF`{~M{LU.jpg

如果已經裝了Hyper-V,則提示如下:

 

 

2.啟用Hyper-V(推薦)

可以通過【程序和功能】=》【打開或關閉 Windows 功能】=》勾選【Hyper-V】來啟用Hyper-V,也可以通過管理員執行以下Powershell腳本:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

如果不支持啟用Hyper-V,大家可以安裝“VirtualBox”,而且目前“VirtualBox”是官方默認的虛擬機管理程序。

 

3.安裝Minikube和kubectl

  • 使用Chocolatey安裝Minikube(推薦)

Chocolatey我們前面已經進行了講解,這里面我們可以使用Chocolatey以管理員身份一鍵安裝Minikube:

choco install minikube kubernetes-cli

 

PS C:\WINDOWS\system32> choco install minikube kubernetes-cli

Chocolatey v0.10.11

Installing the following packages:

minikube;kubernetes-cli

By installing you accept licenses for the packages.

Minikube v1.1.1 [Approved]

minikube package files install completed. Performing other installation steps.

ShimGen has successfully created a shim for minikube.exe

The install of minikube was successful.

Software install location not explicitly set, could be in package or

default install location if installer.

kubernetes-cli v1.14.3 already installed.

Use --force to reinstall, specify a version to install, or try upgrade.

Chocolatey installed 1/2 packages.

See the log for details (C:\ProgramData\chocolatey\logs\chocolatey.log).

Warnings:

- kubernetes-cli - kubernetes-cli v1.14.3 already installed.

Use --force to reinstall, specify a version to install, or try upgrade.

  • 通過下載安裝包安裝

下載地址:https://github.com/kubernetes/minikube/releases/

需下載【minikube-windows-amd64.exe】,下載完成后,需要重命名為“minikube.exe”進行使用。

 

4.啟動Minikube

Minikube在Windows上支持使用VirtualBox和Hyper-V,這里我們使用Hyper-V進行實踐。

我們需要執行“minikube start”命令來啟動Minikube。這個過程中會下載Minikube ISO鏡像,如果Minikube ISO鏡像下載失敗,可復制鏈接手工下載或者配置容器代理再試。如果是手工下載,下載后,請將ISO文件放置C:\Users\<用戶名>\.minikube\cache\iso目錄,然后再次執行“start”命令。具體命令如下所示:

需使用管理員執行以下Powershell腳本:

minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096

其中,--registry-mirror參數用於設置鏡像服務地址,這里設置為國內鏡像服務地址。--vm-driver參數設置了虛擬機類型,這里我們使用Hyper-V,默認是VirtualBox。--memory參數設置了虛擬機內存大小。執行此腳本后,會使用默認的Hyper-V的虛擬交換機,我們也可以使用參數--hyperv-virtual-switch進行指定指定的虛擬網絡交換機。虛擬網絡交換機設置如下圖所示:

 

在中國,由於網絡和防火牆的原因,通常會無法拉取k8s相關鏡像或者下載速度過於緩慢,因此,我們可以通過參數--image-repository來設置Minikube使用阿里雲鏡像。如下列命令:

minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

 

PS C:\WINDOWS\system32> minikube.exe start --registry-mirror=https://registry.docker-cn.com --vm-driver="hyperv" --memory=4096 --hyperv-virtual-switch="NET" --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers

* minikube v1.1.1 on windows (amd64)

* using image repository registry.cn-hangzhou.aliyuncs.com/google_containers

* Creating hyperv VM (CPUs=2, Memory=4096MB, Disk=20000MB) ...

* Configuring environment for Kubernetes v1.14.3 on Docker 18.09.6

* Pulling images ...

* Launching Kubernetes ...

* Verifying: apiserver proxy etcd scheduler controller dns

* Done! kubectl is now configured to use "minikube"

成功之后,我們就可以使用kubectl來操作集群了,比如查看當前所有pod的狀態:

kubectl get pods --all-namespaces

 

剛才我們使用Minikube創建了默認的集群,我們還可以使用Minikube創建新的集群,比如:

minikube start -p mycluster

值得注意的是,Minikube搭配Hyper-V使用需要禁用動態內存(Docker for Windows初始化時指定禁用了相關虛擬機使用動態內存),執行Powershell腳本如下所示:

Set-VMMemory -VMName 'minikube' -DynamicMemoryEnabled $false。

在Windows 10下,我們還可以使用docker-desktop來啟用k8s,不過由於網絡的原因,並不是很推薦:

 

 

打開Minikube可視化面板

成功啟動Minikube之后,我們就可以通過以下命令來打開Minikube可視化面板:

minikube dashboard

啟用面板

PS C:\WINDOWS\system32> minikube dashboard

* Enabling dashboard ...

* Verifying dashboard health ...

* Launching proxy ...

* Verifying proxy health ...

* Opening http://127.0.0.1:3173/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/ in your default browser...

 

 

 

常見錯誤

啟動Minikube時提示錯誤如下:X Unable to start VM: start: exit status 1

處理方案:執行“minikube delete”或者手工清理時虛擬機目錄存在殘留內容,需手動刪除目錄“C:\Users\{your username} \.minikube\machines”后再次嘗試。

 

Linux下安裝

1.安裝虛擬機(可選)

在Linux環境下,Minikube支持直接在主機上運行Kubernetes,因此此步驟為可選。所以大家可以根據實際情況來選擇是否安裝虛擬機,比如KVM和VirtualBox。

注意:如果直接在主機上運行,Minikube會運行一個不安全的API Server,可能會導致安全隱患,因此不建議在個人工作環境安裝。

 

2.安裝kubectl

由於Google網絡不太穩定,我們使用阿里雲鏡像進行安裝。

  • CentOS

echo '#k8s

[kubernetes]

name=Kubernetes

baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64

enabled=1

gpgcheck=0

'>/etc/yum.repos.d/kubernetes.repo

#kubeadm和相關工具包

yum -y install kubelet kubeadm kubectl kubernetes-cni

  • Debian / Ubuntu

apt-get update && apt-get install -y apt-transport-https

curl -s https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -

echo 'deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main' >/etc/apt/sources.list.d/kubernetes.list

apt-get update

apt-get install -y kubelet kubeadm kubectl

 

3.安裝Minikube

這里我們直接下載安裝:

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \

&& chmod +x minikube

由於網絡問題,我們可以選擇使用阿里雲的執行程序:

curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 \

&& chmod +x minikube

然后將可執行文件添加到/usr/local/bin目錄下

sudo install minikube /usr/local/bin

 

4.啟動Minikube

minikube start --vm-driver=none

如果存在網絡問題,請使用--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers指定鏡像倉庫地址。

 

安裝過程中如出現問題,可以執行以下命令之后再重新嘗試:

minikube delete

rm ~/.minikube

 

往期內容鏈接

Docker最全教程——從理論到實戰(一)

Docker最全教程——從理論到實戰(二)

Docker最全教程——從理論到實戰(三)

Docker最全教程——從理論到實戰(四)

Docker最全教程——從理論到實戰(五)

Docker最全教程——從理論到實戰(六)

Docker最全教程——從理論到實戰(七)

Docker最全教程——從理論到實戰(八)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM