Hello folks,我是 Luga,今天我們來聊一下云原生生態(tài)核心技術(shù)之 Kubernetes 編排工具 —— Minikube。
隨著容器技術(shù)的迅猛發(fā)展和廣泛應(yīng)用,Kubernetes 在企業(yè)中扮演著重要的角色。通常情況下,我們將 Kubernetes 描述為“將 Linux 容器集群作為單個系統(tǒng)進行管理,以加速開發(fā)并簡化維護”。對于企業(yè)應(yīng)用服務(wù)的容器化改造而言,學(xué)習(xí)和使用 Kubernetes 已經(jīng)成為不可避免的一部分。
然而,對于剛接觸這個體系的 DevOps 人員來說,在環(huán)境中完整部署一整套多節(jié)點的 Kubernetes 集群確實具有一定的難度。這種部署涉及到復(fù)雜的配置、網(wǎng)絡(luò)設(shè)置和資源管理等方面,需要具備深入的理解和相關(guān)經(jīng)驗。
總的來說,Kubernetes 和 Minikube 為容器化應(yīng)用開發(fā)和部署提供了強大的支持。Kubernetes 作為一個分布式系統(tǒng)的編排工具,可以管理和調(diào)度容器化的應(yīng)用程序,而 Minikube 則提供了一個簡單實用的方式,在本地機器上搭建和管理 Kubernetes 集群。這些工具的使用使得開發(fā)人員能夠更加高效地進行應(yīng)用程序開發(fā)、測試和部署,加速了應(yīng)用交付的速度和質(zhì)量。
基于 Minikube 的相關(guān)特性,我們從操作系統(tǒng)(OS)、CPU 架構(gòu)、程序管理技術(shù)(Hypervisor tech)、容器運行時(CRI)以及容器網(wǎng)絡(luò)接口插件(CNIs)等多方位角度簡要描繪 Minikube 所支持的技術(shù)運行棧形態(tài),具體如下圖所示:
Minikube 支持在多種操作系統(tǒng)上運行,包括但不限于以下幾種:
Minikube 能夠適應(yīng)不同的 CPU 架構(gòu),包括但不限于以下幾種:
Minikube 利用虛擬化管理器來創(chuàng)建和管理虛擬機,以模擬多節(jié)點的 Kubernetes 集群。它支持多種虛擬化管理器技術(shù),包括但不限于以下幾種:
Minikube 支持多種容器運行時,以在本地機器上運行和管理容器化的應(yīng)用程序。以下是一些 Minikube 所支持的常見容器運行時:
Minikube 支持多種容器網(wǎng)絡(luò)接口插件,以實現(xiàn)容器之間的網(wǎng)絡(luò)通信和連接。以下是一些 Minikube 所支持的常見容器網(wǎng)絡(luò)接口插件:
Minikube 安裝部署較為簡單,這里,我們以 macOS 平臺為例,進行簡單介紹,具體如下:
[administrator@JavaLangOutOfMemory ~ ]% brew install minikube
[administrator@JavaLangOutOfMemory ~ ]% minikube start
當(dāng)然,我們還可以自定義參數(shù)進行啟動,具體如下所示:
[administrator@JavaLangOutOfMemory ~ ]% minikube start --iso-url=https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/iso/minikube-v1.x.x.iso --registry-mirror=https://registry.docker-cn.com --image-mirror-country=cn --image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers --vm-driver=none --memory=4096
部署完成后,檢測相關(guān)配置參數(shù)等。
[administrator@JavaLangOutOfMemory ~ ]% kubectl versionClient Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.2", GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7", GitTreeState:"clean", BuildDate:"2021-06-16T12:52:14Z", GoVersion:"go1.16.5", Compiler:"gc", Platform:"darwin/amd64"}Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.7", GitCommit:"132a687512d7fb058d0f5890f07d4121b3f0a2e2", GitTreeState:"clean", BuildDate:"2021-05-12T12:32:49Z", GoVersion:"go1.15.12", Compiler:"gc", Platform:"linux/amd64"}
[administrator@JavaLangOutOfMemory ~ ]% kubectl get node -o wideNAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIMEminikube Ready control-plane,master 15h v1.20.7 192.168.49.2 <none> Ubuntu 20.04.2 LTS 5.10.25-linuxkit docker://20.10.7[administrator@JavaLangOutOfMemory ~ ]% kubectl get pod -ANAMESPACE NAME READY STATUS RESTARTS AGEkube-system coredns-74ff55c5b-p6dlz 1/1 Running 0 15hkube-system etcd-minikube 1/1 Running 0 15hkube-system kube-apiserver-minikube 1/1 Running 0 15hkube-system kube-controller-manager-minikube 1/1 Running 0 15hkube-system kube-proxy-dcr72 1/1 Running 0 15hkube-system kube-scheduler-minikube 1/1 Running 0 15hkube-system storage-provisioner 1/1 Running 3 15h
常見命令行如下所示:
[administrator@JavaLangOutOfMemory ~ ] % minikube --helpminikube provisions and manages local Kubernetes clusters optimized for development workflows.Basic Commands: start Starts a local Kubernetes cluster status Gets the status of a local Kubernetes cluster stop Stops a running local Kubernetes cluster delete Deletes a local Kubernetes cluster dashboard Access the Kubernetes dashboard running within the minikube cluster pause pause Kubernetes unpause unpause KubernetesImages Commands: docker-env Configure environment to use minikube's Docker daemon podman-env Configure environment to use minikube's Podman service cache Add, delete, or push a local image into minikube image Manage imagesConfiguration and Management Commands: addons Enable or disable a minikube addon config Modify persistent configuration values profile Get or list the current profiles (clusters) update-context Update kubeconfig in case of an IP or port changeNetworking and Connectivity Commands: service Returns a URL to connect to a service tunnel Connect to LoadBalancer servicesAdvanced Commands: mount Mounts the specified directory into minikube ssh Log into the minikube environment (for debugging) kubectl Run a kubectl binary matching the cluster version node Add, remove, or list additional nodes cp Copy the specified file into minikubeTroubleshooting Commands: ssh-key Retrieve the ssh identity key path of the specified node ssh-host Retrieve the ssh host key of the specified node ip Retrieves the IP address of the specified node logs Returns logs to debug a local Kubernetes cluster update-check Print current and latest version number version Print the version of minikube options Show a list of global command-line options (applies to all commands).Other Commands: completion Generate command completion for a shellUse "minikube <command> --help" for more information about a given command.
Minikube 基于本地虛擬機環(huán)境部署 Kubernetes 集群,其基本架構(gòu)參考示意圖,如下圖所示:
具體實現(xiàn)原理涉及如下:
(1) 下載 .iso 文件以能夠使得本地環(huán)境處于可用狀態(tài)
在 Minikube 啟動過程中,首先需要下載一個 .iso 文件,以確保本地環(huán)境處于可用狀態(tài)。這個 .iso 文件通常包含一個 Linux 發(fā)行版(通常是 boot2docker )和所需的工具和依賴項。
(2) 從下載的 .iso 文件中提取 boot2docker.iso 鏡像文件
從下載的 .iso 文件中提取 boot2docker.is o鏡像文件。這個鏡像是一個輕量級的 Linux 操作系統(tǒng),專門用于在 Minikube 中運行。
(3) 創(chuàng)建用于 SSH 目的的動態(tài)證書
在 Minikube 中,為了能夠通過 SSH 與虛擬機進行通信,需要創(chuàng)建一對動態(tài)證書。這些證書用于安全地建立 SSH 連接,以便管理和操作虛擬機。
(4) 使用指定的配置創(chuàng)建 VirtualBox VM 文件
根據(jù)指定的配置信息,使用 VirtualBox 虛擬化軟件創(chuàng)建一個虛擬機(VM)文件。這個虛擬機將用作 Minikube 集群的節(jié)點。
(5) 設(shè)置存儲以掛載 boot2docker.iso 文件
在虛擬機中設(shè)置存儲配置,以便將 boot2docker.iso 文件掛載到虛擬機的文件系統(tǒng)中。這樣,虛擬機就能夠訪問其中的文件并引導(dǎo)啟動。
(6) 設(shè)置網(wǎng)絡(luò)相關(guān)配置(IP、DHCP 等)以及在 VM 內(nèi)設(shè)置 SSH 等
配置虛擬機的網(wǎng)絡(luò)相關(guān)設(shè)置,例如為虛擬機分配 IP 地址、配置 DHCP 等。此外,還在虛擬機內(nèi)部設(shè)置 SSH,以便允許通過 SSH 與虛擬機進行遠程連接和管理。
(7) 啟動虛擬機
現(xiàn)在,啟動虛擬機并等待它完成啟動過程。一旦虛擬機啟動成功,它就成為 Minikube 集群中的一個節(jié)點。
(8) 設(shè)置 /etc/hostname、 /etc/hosts 以及設(shè)置 systemd 相關(guān)文件以使得 Docker 容器引擎能夠正常啟動
在虛擬機中進行一些配置操作,例如設(shè)置主機名(/etc/hostname)、設(shè)置主機解析(/etc/hosts)以及配置systemd相關(guān)文件。這些操作有助于確保Docker容器引擎能夠在虛擬機中正常啟動和工作。
(9) 準(zhǔn)備 Kubernetes 和 Docker 等相關(guān)基礎(chǔ)環(huán)境配置
在虛擬機中準(zhǔn)備 Kubernetes 和 Docker 等相關(guān)基礎(chǔ)環(huán)境配置。這可能涉及安裝和配置所需的軟件包、設(shè)置環(huán)境變量、創(chuàng)建相關(guān)目錄等。
(10) 下載所有相關(guān)的 Kubernetes 文件 - kubelet、kubeadm 等
在虛擬機中下載所有相關(guān)的 Kubernetes 文件,包括 kubelet、kubeadm 等工具。這些工具用于管理和操作 Kubernetes 集群。
(11) 為 Kubernetes 所需的不同包拉取 Docker 鏡像并啟動不同的服務(wù),例如,分布式存儲系統(tǒng) Etcd、調(diào)度程序 Scheduler、控制器 Controller Manager 以及 Api Server
在虛擬機中為 Kubernetes 所需的不同組件和服務(wù)拉取 Docker 鏡像,并啟動這些服務(wù)。這可能涉及拉取 Etcd 鏡像(用于分布式存儲系統(tǒng))、啟動調(diào)度程序、控制器管理器和API服務(wù)器等關(guān)鍵組件。
通過以上步驟,Minikube 成功完成了組件的啟動流程,并為用戶提供了一個本地的、可用于開發(fā)和測試的 Kubernetes 集群環(huán)境。
本文鏈接:http://www.tebozhan.com/showinfo-26-10489-0.html一文搞懂 Kubernetes 編排工具 Minikube
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 企業(yè)變革管理能否緩解供應(yīng)鏈困境?
下一篇: 得物SRE視角下的藍綠發(fā)布