前言
使用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,rkt,CRI-O和containerd
- 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