更新升级 专属应用 系统故障 硬件故障 电脑汽车 鸿蒙刷机 鸿蒙开发Linux教程 鸿蒙开发Linux命令
当前位置:HMXT之家 > 鸿蒙开发Linux教程 > 用Minikube在Debian 11 Linux上运行Kubernetes

用Minikube在Debian 11 Linux上运行Kubernetes

更新时间:2023-05-28 10:20:48浏览次数:820+次

本文介绍如何使用Minikube在Debian 11 Linux/Ubuntu系统上运行Kubernetes的方法,这是使用KVM、VirtualBox等管理程序实现的。开始使用Kubernetes最简单、最具成本效益的方法之一是使用Minikube,它将帮助您练习并熟悉Kubernetes。Minikube提供了一个基于命令行的界面,允许您管理集群操作,即从集群中启动、停止和删除节点。

使用Minikube在Debian 11 Linux上运行Kubernetes的详细步骤

步骤1、在Debian 11上安装KVM/VirtualBox Hypervisor的说明

用户可以选择使用VirtualBox Hypervisor或是KVM,从性能角度来看,推荐使用KVM,可参考如何在Ubuntu 22.04上安装KVM虚拟化工具一文,阅读地址在https://www.hmxthome.com/linux/5016.html。也可以自行安装好VirtualBox,本文将以KVM为例说明。

1、VirtualBox中的嵌套虚拟化

如果您想在VirtualBox上的虚拟机中运行minikube,您可能必须启用嵌套虚拟化:

vboxmanage list vms

VBoxManage modifyvm "Debian 11" --nested-hw-virt on

2、验证KVM安装

在KVM上,验证是否已加载所有必需的模块,这确认系统支持虚拟化:

$ lsmod | grep kvm

kvm_intel 327680  0

kvm 917504  1 kvm_intel

irqbypass 16384  1 kvm

还要验证libvirt是否报告没有错误:

$ virt-host-validate

检查服务状态,如下所示:

$ systemctl status libvirtd

 libvirtd.service - Virtualization daemon

     Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)

     Active: active

步骤2、在Debian 11系统上安装snapd

在安装Minikube时,我们需要一个snap命令,因此我们安装snapd:

sudo apt install snapd

现在在“/var/lib/snapd/snap”和“/snap”之间创建一个符号链接:

sudo ln -s /var/lib/snapd/snap /snap

echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snap.sh

启动并启用snapd通信套接字,如下所示:

sudo systemctl enable --now snapd.service snapd.socket

步骤3、在Debian 11上安装Kuectl工具

这是一个命令行工具,允许执行对Kubernetes集群的命令。您可以轻松地部署和管理集群资源。使用下面的命令在Debian11上安装kubectl:

$ sudo snap install kubectl --classic

INFO Waiting for automatic snapd restart...

kubectl 1.21.4 from Canonical installed

通过检查已安装的kubectl版本来验证安装:

$ kubectl version -o yaml

compiler: gc

gitTreeState: clean

gitVersion: v1.22.1

goVersion: go1.16.7

platform: linux/amd64

步骤4、在Debian 11上安装Minikube

在已经安装KVM虚拟机监控程序的情况下,您可以在Debian 11系统上安装Minikube。

但首先,使用wget命令下载Minikube,如下所示:

sudo apt update && sudo apt install wget

wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -O minikube

安装Minikube使用的docker驱动程序:

wget https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-kvm2

更改这两个二进制文件的权限,并将它们复制到/usr/local/bin/,如下所示:

sudo chmod 755 minikube docker-machine-driver-kvm2

sudo cp minikube docker-machine-driver-kvm2 /usr/local/bin/

通过执行以下命令使文件可执行:

sudo chmod +x /usr/local/bin/minikube

通过以上命令,Minikube已成功安装在您的Debian 11机器上。现在继续并检查Minikube的安装版本:

$ sudo minikube version

会返回Minikube版本的信息。

在运行Minikube命令时,最好不要提示输入root密码。通过将用户添加到libvirt组,以非root用户身份运行Minikube可以避免这种情况,如下所示:

sudo usermod -aG libvirt $USER

步骤5、使用Minikube在Debian 11上运行Kubernetes

使用以下命令在Debian 11上启动Minikube:

#使用VirtualBox驱动程序

$ minikube start --driver=virtualbox

#带KVM2驱动器

$ minikube start --driver=kvm2

以下为样本输出信息,供参考:

minikube v1.22.0 on Debian 11.0 (kvm/amd64)

Using the kvm2 driver based on user configuration

Downloading VM boot image ...

minikube-v1.22.0.iso.sha256: 65 B / 65 B [-------------] 100.00% ? p/s 0s

minikube-v1.22.0.iso: 242.95 MiB / 242.95 MiB  100.00% 2.29 MiB p/s 1m46s

Starting control plane node minikube in cluster minikube

Downloading Kubernetes v1.21.2 preload ...

preloaded-images-k8s-v11-v1...: 502.14 MiB / 502.14 MiB  100.00% 2.22 MiB

Creating virtualbox VM (CPUs=2, Memory=2900MB, Disk=20000MB) ...

Preparing Kubernetes v1.21.2 on Docker 20.10.6 ...

Generating certificates and keys ...

Booting up control plane ...

Configuring RBAC rules ...

Verifying Kubernetes components...

Using image gcr.io/k8s-minikube/storage-provisioner:v5

Enabled addons: default-storageclass, storage-provisioner

Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

从上面的输出中,该命令选择KVM驱动程序,下载虚拟机引导映像,并创建一个带有单个节点的Kubernetes集群。

检查Minikube的状态:

$ minikube status

minikube

type: Control Plane

host: Running

kubelet: Running

apiserver: Running

kubeconfig: Configured

使用以下命令检查集群中的docker环境:

$ minikube docker-env

export DOCKER_TLS_VERIFY="1"

export DOCKER_HOST="tcp://192.168.99.100:2376"

export DOCKER_CERT_PATH="/home/thor/.minikube/certs"

export MINIKUBE_ACTIVE_DOCKERD="minikube"

# 要将shell指向minikube的docker-daemon,请运行:

# eval $(minikube -p minikube docker-env)

使用以下命令通过SSH访问Minikube命令行:

minikube ssh

样本输出:

\

注:以下是设置默认驱动程序的方法

您还可以设置Minikube虚拟机的默认驱动程序:

# VirtualBox

minikube config set driver virtualbox

# KVM

minikube config set driver kvm2

步骤6、在Minikube中创建Pods

我们现在使用kubectl命令在Kubernetes中创建并运行Pods,如下所示:

$ kubectl create deployment webserver --image=nginx

deployment.apps/webserver created

此部署过程大约需要30秒才能启动。使用以下方法检查:

$ kubectl get pods

webserver-559b886555-dsgg2   0/1     ContainerCreating   0          13s

步骤7、在Minikube中部署服务

首先,我们需要从外部访问我们的服务。这是通过公开运行服务的端口来实现的。在这种情况下,我们将为我们的web服务器公开80端口:

$ kubectl expose deployment webserver --type="NodePort" --port 80

service/webserver exposed

然后使用以下命令获取运行服务的IP:

$ kubectl get service webserver

webserver   NodePort   10.100.217.103   <none>        80:32106/TCP   37m

要显示此应用程序的环境,请使用webserver-559b886555-dsgg2作为pod的名称执行以下命令:

$ kubectl exec webserver-559b886555-dsgg2 -- env

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

HOSTNAME=webserver-559b886555-dsgg2

KUBERNETES_SERVICE_HOST=10.96.0.1

KUBERNETES_SERVICE_PORT=443

KUBERNETES_SERVICE_PORT_HTTPS=443

KUBERNETES_PORT=tcp://10.96.0.1:443

KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443

KUBERNETES_PORT_443_TCP_PROTO=tcp

KUBERNETES_PORT_443_TCP_PORT=443

KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1

NGINX_VERSION=1.21.1

NJS_VERSION=0.6.1

PKG_RELEASE=1~buster

HOME=/root

接下来,我们将生成一个可用于访问Nginx服务的URL:

$ minikube service webserver --url

http://192.168.99.101:32106

在浏览器上输入生成的URL,您应该会看到下面的Nginx页面:

\

1、扩展应用程序

在Kubernetes中用于平衡负载请求。让我们将应用程序扩展到4个副本,如下所示:

$ kubectl scale deployment webserver --replicas=4

deployment.apps/webserver scaled

要查看处理的结果,请运行:

$ kubectl get pods

会返回相关的信息,如webserver-559b886555-9zl5j 1/1 Running 0 32s、webserver-559b886555-dsgg2 1/1 Running 0 64m等。

2、访问Pod Shell

当想要进行配置(如添加配置文件)时,登录pod shell是必不可少的。以下命令用于访问Pod Shell:

kubectl exec -it webserver-559b886555-dsgg2 -- bash

样本输出:

\

3、检查可用的目录和文件

root@webserver-559b886555-dsgg2:/# ls

会返回相关的信息,如bin docker-entrypoint.d home media proc  sbin tmp、boot docker-entrypoint.sh lib mnt root srv usr、dev etc lib64 opt run  sys var。

步骤8、访问Minikube仪表板

在Minikube仪表板上,您可以轻松管理您的pod和其他Kubernetes服务。仪表板是通过在主机终端上运行以下命令启动的:

$ minikube dashboard

Enabling dashboard ...

Using image kubernetesui/dashboard:v2.1.0

Using image kubernetesui/metrics-scraper:v1.0.4

Verifying dashboard health ...

Launching proxy ...

Verifying proxy health ...

Opening http://127.0.0.1:43361/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

[0830/220852.143311:ERROR:file_io_posix.cc(152)] open /home/thor/.config/google-chrome/Crash Reports/pending/e7be5bfb-158d-4f1a-a774-fe852af98cef.lock: File exists (17)

Opening in existing browser session.

[16884:16884:0100/000000.611566:ERROR:sandbox_linux.cc(374)] InitializeSandbox() called with multiple threads in process gpu-process.

然后仪表板会自动加载到默认浏览器上:

\

步骤9、管理Pods和服务

使用以下语法终止/删除正在运行的服务;

$ kubectl delete services <service-name>

Service “<service-name>” deleted

样本输出:

\

使用以下命令删除Pod:

$ kubectl delete deployment <pod-name>

Deployment.extensions “<pod-name>” deleted

结论

以上就是如何使用Minikube在Debian 11 Linux系统上运行Kubernetes的方法,经实践操作起来并不复杂,且能顺利的运行起来Kubernetes。