使用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,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要求】一欄如下圖所示:
如果已經裝了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?
常見錯誤
啟動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最全教程——從理論到實戰(八)? ??
Docker最全教程——從理論到實戰(九)
Docker最全教程之使用Tencent Hub來完成CI(十)
Docker最全教程——數據庫容器化(十一)
Docker最全教程——數據庫容器化之持久保存數據(十二)
Docker最全教程——MongoDB容器化(十三)
Docker最全教程——Redis容器化以及排行榜實戰(十四)
Docker最全教程之Ubuntu下安裝Docker(十五)
Docker最全教程之樹莓派和Docker(十六)
Docker最全教程之使用TeamCity來完成內部CI、CD流程(十七)
Docker最全教程之使用Docker搭建Java開發環境(十八)
Docker最全教程之Go實戰,墻裂推薦(十九)
Docker最全教程之使用.NET Core推送釘釘消息(二十)
Docker最全教程之使用 Visual Studio Code玩轉Docker(二十一)
Docker最全教程之Python爬網實戰(二十二)
使用PHP搭建個人博客站點
Docker最全教程之使用Node.js搭建團隊技術文檔站(二十四)
Docker最全教程之MySQL容器化 (二十五)
Docker+ Kubernetes已成為云計算的主流(二十六)
容器化之后如何節省云端成本?(二十七)
了解Kubernetes主體架構(二十八)
總結
以上是生活随笔為你收集整理的使用Minikube部署本地Kubernetes集群(二十九)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于 Docker Compose 实践
- 下一篇: 架构杂谈《一》