自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

一文搞懂 Kubernetes 編排工具 Minikube

云計(jì)算 云原生
隨著容器技術(shù)的迅猛發(fā)展和廣泛應(yīng)用,Kubernetes 在企業(yè)中扮演著重要的角色。通常情況下,我們將 Kubernetes 描述為“將 Linux 容器集群作為單個(gè)系統(tǒng)進(jìn)行管理,以加速開(kāi)發(fā)并簡(jiǎn)化維護(hù)”。對(duì)于企業(yè)應(yīng)用服務(wù)的容器化改造而言,學(xué)習(xí)和使用 Kubernetes 已經(jīng)成為不可避免的一部分。

一、為什么需要 Minikube 工具 ?

隨著容器技術(shù)的迅猛發(fā)展和廣泛應(yīng)用,Kubernetes 在企業(yè)中扮演著重要的角色。通常情況下,我們將 Kubernetes 描述為“將 Linux 容器集群作為單個(gè)系統(tǒng)進(jìn)行管理,以加速開(kāi)發(fā)并簡(jiǎn)化維護(hù)”。對(duì)于企業(yè)應(yīng)用服務(wù)的容器化改造而言,學(xué)習(xí)和使用 Kubernetes 已經(jīng)成為不可避免的一部分。

然而,對(duì)于剛接觸這個(gè)體系的 DevOps 人員來(lái)說(shuō),在環(huán)境中完整部署一整套多節(jié)點(diǎn)的 Kubernetes 集群確實(shí)具有一定的難度。這種部署涉及到復(fù)雜的配置、網(wǎng)絡(luò)設(shè)置和資源管理等方面,需要具備深入的理解和相關(guān)經(jīng)驗(yàn)。

為了幫助這些 DevOps 人員克服這種難度,出現(xiàn)了一些工具和平臺(tái),如 Minikube、K3s 和 Kind 等。這些工具提供了簡(jiǎn)化和輕量級(jí)的 Kubernetes 部署選項(xiàng),使得在本地或開(kāi)發(fā)環(huán)境中搭建一個(gè)功能齊全的 Kubernetes 集群變得更加容易。

此外,云服務(wù)提供商也提供了托管的 Kubernetes 服務(wù),如 Amazon EKS、Google Kubernetes Engine(GKE)和 Microsoft Azure Kubernetes Service(AKS)等。這些托管服務(wù)解決了底層基礎(chǔ)設(shè)施的復(fù)雜性,使得 DevOps 人員可以專注于應(yīng)用程序的部署和管理,而無(wú)需擔(dān)心底層的 Kubernetes 集群細(xì)節(jié)。

因此,對(duì)于那些剛接觸 Kubernetes 的 DevOps 人員來(lái)說(shuō),他們可以利用這些工具和托管服務(wù)來(lái)降低部署和管理 Kubernetes 的難度。隨著經(jīng)驗(yàn)的積累和深入學(xué)習(xí),他們將能夠逐漸掌握和理解 Kubernetes 的各個(gè)方面,并能夠在實(shí)際生產(chǎn)環(huán)境中部署和管理復(fù)雜的多節(jié)點(diǎn) Kubernetes 集群。

總之,雖然在環(huán)境中完整部署一整套多節(jié)點(diǎn)的 Kubernetes 集群對(duì)于剛接觸這個(gè)體系的 DevOps 人員來(lái)說(shuō)具有一定難度,但通過(guò)使用簡(jiǎn)化部署工具和托管服務(wù),他們可以逐步克服這些挑戰(zhàn),并為企業(yè)應(yīng)用服務(wù)的容器化改造提供可靠的支持。

二、何為 Minikube 工具 ?

Kubernetes 是一個(gè)基于 Go 語(yǔ)言開(kāi)發(fā)的用于 Docker 容器的開(kāi)源編排系統(tǒng)。它能夠處理計(jì)算集群中節(jié)點(diǎn)的調(diào)度,并主動(dòng)管理工作負(fù)載,以確保它們的狀態(tài)與用戶聲明的意圖相匹配。然而,與此同時(shí),Minikube 被詳細(xì)地描述為一個(gè)開(kāi)源的"本地 Kubernetes 引擎",它可以在 macOS、Linux 和 Windows 平臺(tái)上實(shí)現(xiàn)本地化的 Kubernetes 集群。作為 Kubernetes 官方推薦的最佳協(xié)同工具之一,Minikube 的目標(biāo)是成為本地 Kubernetes 應(yīng)用程序開(kāi)發(fā)的工具,并支持所有適用的 Kubernetes 功能。

Minikube 的主要功能是運(yùn)行單節(jié)點(diǎn) Kubernetes 集群,以便在本地機(jī)器上進(jìn)行開(kāi)發(fā)。它支持多種虛擬機(jī)驅(qū)動(dòng)程序,如 VirtualBox、HyperV 和 KVM2。由于 Minikube 是 Kubernetes 世界中相對(duì)成熟的解決方案,它支持的功能列表令人印象深刻,包括負(fù)載均衡器、多集群、節(jié)點(diǎn)端口、持久卷、入口、儀表板和容器運(yùn)行時(shí)等。

基于 Minikube 這個(gè)開(kāi)源工具,開(kāi)發(fā)人員、運(yùn)維人員和 DevOps 工程師能夠快速搭建本地的 Kubernetes 單節(jié)點(diǎn)集群環(huán)境。Minikube 對(duì)軟硬件資源的要求并不高,因此方便技術(shù)人員進(jìn)行學(xué)習(xí)、實(shí)踐和日常的項(xiàng)目開(kāi)發(fā)。

總的來(lái)說(shuō),Kubernetes 和 Minikube 為容器化應(yīng)用開(kāi)發(fā)和部署提供了強(qiáng)大的支持。Kubernetes 作為一個(gè)分布式系統(tǒng)的編排工具,可以管理和調(diào)度容器化的應(yīng)用程序,而 Minikube 則提供了一個(gè)簡(jiǎn)單實(shí)用的方式,在本地機(jī)器上搭建和管理 Kubernetes 集群。這些工具的使用使得開(kāi)發(fā)人員能夠更加高效地進(jìn)行應(yīng)用程序開(kāi)發(fā)、測(cè)試和部署,加速了應(yīng)用交付的速度和質(zhì)量。

三、認(rèn)識(shí)不一樣的 Minikube 技術(shù)堆棧

基于 Minikube 的相關(guān)特性,我們從操作系統(tǒng)(OS)、CPU 架構(gòu)、程序管理技術(shù)(Hypervisor tech)、容器運(yùn)行時(shí)(CRI)以及容器網(wǎng)絡(luò)接口插件(CNIs)等多方位角度簡(jiǎn)要描繪 Minikube 所支持的技術(shù)運(yùn)行棧形態(tài),具體如下圖所示:

1、操作系統(tǒng)(OS):

Minikube 支持在多種操作系統(tǒng)上運(yùn)行,包括但不限于以下幾種:

  • macOS:Minikube 可以在 macOS 上運(yùn)行,提供了方便的本地開(kāi)發(fā)和測(cè)試環(huán)境。
  • Linux:Minikube 支持在不同的 Linux 發(fā)行版上運(yùn)行,使開(kāi)發(fā)人員能夠在本地機(jī)器上搭建 Kubernetes 集群。
  • Windows:Minikube 可以在 Windows 平臺(tái)上運(yùn)行,為Windows 用戶提供了本地化的 Kubernetes 開(kāi)發(fā)環(huán)境。

2、CPU架構(gòu):

Minikube 能夠適應(yīng)不同的 CPU 架構(gòu),包括但不限于以下幾種:

  • x86 架構(gòu):Minikube 支持 x86 架構(gòu)的處理器,這是目前最常見(jiàn)的桌面和服務(wù)器處理器架構(gòu)。
  • ARM 架構(gòu):Minikube 還支持 ARM 架構(gòu),這是一種常見(jiàn)于嵌入式設(shè)備和移動(dòng)設(shè)備的處理器架構(gòu)。

3、程序管理技術(shù)(Hypervisor tech):

Minikube 利用虛擬化管理器來(lái)創(chuàng)建和管理虛擬機(jī),以模擬多節(jié)點(diǎn)的 Kubernetes 集群。它支持多種虛擬化管理器技術(shù),包括但不限于以下幾種:

  • VirtualBox:Minikube 可以使用 VirtualBox 作為虛擬化管理器,在本地機(jī)器上創(chuàng)建和管理虛擬機(jī)。
  • HyperV:對(duì)于 Windows 平臺(tái),Minikube 支持使用 HyperV 作為虛擬化管理器,提供了本地化的Kubernetes環(huán)境。
  • KVM2:在 Linux 平臺(tái)上,Minikube 可以使用 KVM2 作為虛擬化管理器,以實(shí)現(xiàn)本地 Kubernetes 集群的搭建和管理。

4、容器運(yùn)行時(shí)(CRI):

Minikube 支持多種容器運(yùn)行時(shí),以在本地機(jī)器上運(yùn)行和管理容器化的應(yīng)用程序。以下是一些 Minikube 所支持的常見(jiàn)容器運(yùn)行時(shí):

  • Docker:作為最流行的容器運(yùn)行時(shí)之一,Minikube 支持使用 Docker 來(lái)創(chuàng)建和管理容器,使得應(yīng)用程序可以在本地的Kubernetes集群中以容器的形式運(yùn)行。
  • containerd:Minikube 還支持使用 containerd 作為容器運(yùn)行時(shí),containerd 是一個(gè)輕量級(jí)的容器運(yùn)行時(shí),為 Kubernetes 提供了容器管理的能力。

5、容器網(wǎng)絡(luò)接口插件(CNIs):

Minikube 支持多種容器網(wǎng)絡(luò)接口插件,以實(shí)現(xiàn)容器之間的網(wǎng)絡(luò)通信和連接。以下是一些 Minikube 所支持的常見(jiàn)容器網(wǎng)絡(luò)接口插件:

  • Calico:Minikube 可以集成 Calico 作為容器網(wǎng)絡(luò)接口插件,提供網(wǎng)絡(luò)策略和安全性功能。
  • flannel:Minikube 還支持使用 flannel 作為容器網(wǎng)絡(luò)接口插件,flannel 提供了簡(jiǎn)單而高效的網(wǎng)絡(luò)覆蓋,使得容器可以相互通信。

四、Minikube 工具基本部署安裝

Minikube 安裝部署較為簡(jiǎn)單,這里,我們以 macOS 平臺(tái)為例,進(jìn)行簡(jiǎn)單介紹,具體如下:

[administrator@JavaLangOutOfMemory ~ ]% brew install minikube
[administrator@JavaLangOutOfMemory ~ ]% minikube start

當(dāng)然,我們還可以自定義參數(shù)進(jìn)行啟動(dòng),具體如下所示:

[administrator@JavaLangOutOfMemory ~ ]% kubectl version
Client 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"}

部署完成后,檢測(cè)相關(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 wide
NAME       STATUS   ROLES                  AGE   VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION     CONTAINER-RUNTIME
minikube   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 -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS   AGE
kube-system   coredns-74ff55c5b-p6dlz            1/1     Running   0          15h
kube-system   etcd-minikube                      1/1     Running   0          15h
kube-system   kube-apiserver-minikube            1/1     Running   0          15h
kube-system   kube-controller-manager-minikube   1/1     Running   0          15h
kube-system   kube-proxy-dcr72                   1/1     Running   0          15h
kube-system   kube-scheduler-minikube            1/1     Running   0          15h
kube-system   storage-provisioner                1/1     Running   3          15h 

常見(jiàn)命令行如下所示:


[administrator@JavaLangOutOfMemory ~ ] % minikube --help
minikube 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 Kubernetes

Images 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 images

Configuration 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 change

Networking and Connectivity Commands:
  service        Returns a URL to connect to a service
  tunnel         Connect to LoadBalancer services

Advanced 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 minikube

Troubleshooting 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 shell

Use "minikube <command> --help" for more information about a given command.

五、Minikube 工具架構(gòu)原理解析

Minikube 基于本地虛擬機(jī)環(huán)境部署 Kubernetes 集群,其基本架構(gòu)參考示意圖,如下圖所示:

具體實(shí)現(xiàn)原理涉及如下:

1、下載 .iso 文件以能夠使得本地環(huán)境處于可用狀態(tài)

在 Minikube 啟動(dòng)過(guò)程中,首先需要下載一個(gè) .iso 文件,以確保本地環(huán)境處于可用狀態(tài)。這個(gè) .iso 文件通常包含一個(gè) Linux 發(fā)行版(通常是 boot2docker )和所需的工具和依賴項(xiàng)。

2、從下載的 .iso 文件中提取 boot2docker.iso 鏡像文件

從下載的 .iso 文件中提取 boot2docker.is o鏡像文件。這個(gè)鏡像是一個(gè)輕量級(jí)的 Linux 操作系統(tǒng),專門用于在 Minikube 中運(yùn)行。

3、創(chuàng)建用于 SSH 目的的動(dòng)態(tài)證書

在 Minikube 中,為了能夠通過(guò) SSH 與虛擬機(jī)進(jìn)行通信,需要?jiǎng)?chuàng)建一對(duì)動(dòng)態(tài)證書。這些證書用于安全地建立 SSH 連接,以便管理和操作虛擬機(jī)。

4、使用指定的配置創(chuàng)建 VirtualBox VM 文件

根據(jù)指定的配置信息,使用 VirtualBox 虛擬化軟件創(chuàng)建一個(gè)虛擬機(jī)(VM)文件。這個(gè)虛擬機(jī)將用作 Minikube 集群的節(jié)點(diǎn)。

5、設(shè)置存儲(chǔ)以掛載 boot2docker.iso 文件

在虛擬機(jī)中設(shè)置存儲(chǔ)配置,以便將 boot2docker.iso 文件掛載到虛擬機(jī)的文件系統(tǒng)中。這樣,虛擬機(jī)就能夠訪問(wèn)其中的文件并引導(dǎo)啟動(dòng)。

6、設(shè)置網(wǎng)絡(luò)相關(guān)配置(IP、DHCP 等)以及在 VM 內(nèi)設(shè)置 SSH 等

配置虛擬機(jī)的網(wǎng)絡(luò)相關(guān)設(shè)置,例如為虛擬機(jī)分配 IP 地址、配置 DHCP 等。此外,還在虛擬機(jī)內(nèi)部設(shè)置 SSH,以便允許通過(guò) SSH 與虛擬機(jī)進(jìn)行遠(yuǎn)程連接和管理。

7、啟動(dòng)虛擬機(jī)

現(xiàn)在,啟動(dòng)虛擬機(jī)并等待它完成啟動(dòng)過(guò)程。一旦虛擬機(jī)啟動(dòng)成功,它就成為 Minikube 集群中的一個(gè)節(jié)點(diǎn)。

8、設(shè)置 /etc/hostname、 /etc/hosts 以及設(shè)置 systemd 相關(guān)文件以使得 Docker 容器引擎能夠正常啟動(dòng)

在虛擬機(jī)中進(jìn)行一些配置操作,例如設(shè)置主機(jī)名(/etc/hostname)、設(shè)置主機(jī)解析(/etc/hosts)以及配置systemd相關(guān)文件。這些操作有助于確保Docker容器引擎能夠在虛擬機(jī)中正常啟動(dòng)和工作。

9、準(zhǔn)備 Kubernetes 和 Docker 等相關(guān)基礎(chǔ)環(huán)境配置

在虛擬機(jī)中準(zhǔn)備 Kubernetes 和 Docker 等相關(guān)基礎(chǔ)環(huán)境配置。這可能涉及安裝和配置所需的軟件包、設(shè)置環(huán)境變量、創(chuàng)建相關(guān)目錄等。

10、下載所有相關(guān)的 Kubernetes 文件 - kubelet、kubeadm 等

在虛擬機(jī)中下載所有相關(guān)的 Kubernetes 文件,包括 kubelet、kubeadm 等工具。這些工具用于管理和操作 Kubernetes 集群。

11、為 Kubernetes 所需的不同包拉取 Docker 鏡像并啟動(dòng)不同的服務(wù),例如,分布式存儲(chǔ)系統(tǒng) Etcd、調(diào)度程序 Scheduler、控制器 Controller Manager 以及 Api Server

在虛擬機(jī)中為 Kubernetes 所需的不同組件和服務(wù)拉取 Docker 鏡像,并啟動(dòng)這些服務(wù)。這可能涉及拉取 Etcd 鏡像(用于分布式存儲(chǔ)系統(tǒng))、啟動(dòng)調(diào)度程序、控制器管理器和API服務(wù)器等關(guān)鍵組件。

通過(guò)以上步驟,Minikube 成功完成了組件的啟動(dòng)流程,并為用戶提供了一個(gè)本地的、可用于開(kāi)發(fā)和測(cè)試的 Kubernetes 集群環(huán)境。

責(zé)任編輯:華軒 來(lái)源: 架構(gòu)驛站
相關(guān)推薦

2023-09-13 22:39:23

Minikube開(kāi)源

2023-09-22 10:45:47

云原生云計(jì)算

2021-02-22 09:44:03

KubernetesDNSLinux

2023-02-10 10:56:56

KubernetesLimitsRequests

2024-04-12 12:19:08

語(yǔ)言模型AI

2023-04-26 15:43:24

容器編排容器編排工具

2022-03-24 08:51:48

Redis互聯(lián)網(wǎng)NoSQL

2021-03-22 10:05:59

netstat命令Linux

2023-09-08 08:20:46

ThreadLoca多線程工具

2023-09-15 12:00:01

API應(yīng)用程序接口

2023-12-21 11:53:34

KubernetesKEDA云原生

2023-09-24 23:35:46

云原生Kubernetes

2021-01-13 05:21:59

參數(shù)

2021-06-30 08:45:02

內(nèi)存管理面試

2022-08-15 15:39:23

JavaScript面向?qū)ο?/a>數(shù)據(jù)

2023-04-03 15:04:00

RPCPHP語(yǔ)言

2023-10-16 08:16:31

Bean接口類型

2024-06-05 11:43:10

2020-03-18 14:00:47

MySQL分區(qū)數(shù)據(jù)庫(kù)

2019-11-19 08:00:00

神經(jīng)網(wǎng)絡(luò)AI人工智能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)