更新时间:2023-05-28 10:20:48浏览次数:878+次
本文介绍如何使用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。