如何在 Debian 11 上使用 Minicube 设置 Kubernetes 集群
在此页
- 要求
- 安装 Docker
- 安装 Kubectl
- 安装 Minikube
- 启动 Minikube
- 访问 Minikube Kubernetes 仪表板
Minikube 是一个免费的开源工具,带有一组内置的附加组件,可帮助您在本地系统中设置 Kubernetes 集群。 minicube 命令提供了几个子命令,允许您通过命令行界面管理 Kubernetes 集群。 Minikube 是跨平台的,支持许多操作系统,包括 Linux、macOS 和 Windows。它可以部署为 VM、容器或裸机。
本教程将教授如何在 Debian 11 上安装 Minikube。
要求
- 您的系统上安装了 Fresh Debian 11。
- 在您的系统上设置了根密码。
安装 Docker
在安装 Minikube 之前,必须在您的服务器上安装 Docker 包。如果没有安装,您可以使用以下命令安装它。
apt install docker.io -y
安装 Docker 后,您可以使用以下命令验证 Docker 版本。
docker --version
您应该看到以下输出。
Docker version 20.10.5+dfsg1, build 55c4c88
安装 Kubectl
Kubectl 是一个在 Kubernetes 上部署和管理应用程序的工具。默认情况下,Kubectl 在 Debian 11 默认存储库中不可用。因此,您需要使用 Snap 安装它。
首先,使用以下命令安装 Snap 包。
apt install snapd -y
接下来,使用以下命令为 Snap 包创建符号链接。
ln -s /var/lib/snapd/snap /snap
接下来,将 Snap 路径添加到您的系统配置文件。
echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | tee -a /etc/profile.d/snap.sh
接下来,使用以下命令启动并启用 Snap 服务。
systemctl enable --now snapd.service snapd.socket
接下来,使用以下命令安装 kubectl 包。
snap install kubectl --classic
接下来,使用以下命令创建 kubectl 包的符号链接。
ln -s /snap/kubectl/current/kubectl /usr/bin/
现在,使用以下命令验证 kubectl 版本。
kubectl version -o yaml
您应该看到以下输出:
clientVersion:
buildDate: "2022-12-09T16:23:44Z"
compiler: gc
gitCommit: b46a3f887ca979b1a5d14fd39cb1af43e7e5d12d
gitTreeState: clean
gitVersion: v1.26.0
goVersion: go1.19.4
major: "1"
minor: "26"
platform: linux/amd64
kustomizeVersion: v4.5.7
安装 Minikube
默认情况下,Minikube 软件包不包含在 Debian 默认存储库中。因此,您需要将 Minikube 二进制文件下载到您的系统中。
首先,使用以下命令下载 Minikube。
wget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 -O minikube
接下来,将 Minikube 二进制文件复制到系统路径。
cp minikube /usr/local/bin/
接下来,使用以下命令设置可执行权限。
chmod +x /usr/local/bin/minikube
现在,使用以下命令验证 Minikube 版本。
minikube version
您将获得以下输出。
minikube version: v1.28.0
commit: 986b1ebd987211ed16f8cc10aed7d2c42fc8392f
完成后,您可以继续下一步。
启动 Minikube
此时,所有必需的包都已安装。您现在可以使用以下命令启动 Minikube:
minikube start --force
这将下载 docker 镜像并配置 Kubernetes 集群,如下所示:
???? minikube v1.28.0 on Debian 11.6 (kvm/amd64)
? minikube skips various validations when --force is supplied; this may lead to unexpected behavior
? Automatically selected the docker driver. Other choices: none, ssh
???? The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
???? If you are running minikube within a VM, consider using --driver=none:
???? https://minikube.sigs.k8s.io/docs/reference/drivers/none/
???? Using Docker driver with root privileges
???? Starting control plane node minikube in cluster minikube
???? Pulling base image ...
???? Downloading Kubernetes v1.25.3 preload ...
> preloaded-images-k8s-v18-v1...: 385.44 MiB / 385.44 MiB 100.00% 37.08 M
> gcr.io/k8s-minikube/kicbase: 386.27 MiB / 386.27 MiB 100.00% 27.51 MiB
> gcr.io/k8s-minikube/kicbase: 0 B [________________________] ?% ? p/s 10s
???? Creating docker container (CPUs=2, Memory=2200MB) ...
???? Preparing Kubernetes v1.25.3 on Docker 20.10.20 ...
? 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
您现在可以使用以下命令检查集群状态:
kubectl cluster-info
您应该看到以下输出:
Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
要检查正在运行的节点,请运行以下命令:
kubectl get nodes
输出:
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 67s v1.25.3
您还可以使用以下命令访问 Minikube 容器:
minikube ssh
输出:
:~$
现在,使用以下命令退出容器 shell:
$exit
您可以随时使用以下命令停止和删除 Kubernetes 集群:
minikube stop
minikube delete
您可以使用以下命令检查 Minikube 的状态:
minikube status
输出:
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
完成后,您可以继续下一步。
访问 Minikube Kubernetes 仪表板
默认情况下,Minikube 提供了一个 Web 仪表板,可用于管理您的集群。
您可以使用以下命令列出所有 minikube 插件:
minikube addons list
您应该看到以下输出:
|-----------------------------|----------|--------------|--------------------------------|
| ADDON NAME | PROFILE | STATUS | MAINTAINER |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador | minikube | disabled | 3rd party (Ambassador) |
| auto-pause | minikube | disabled | Google |
| cloud-spanner | minikube | disabled | Google |
| csi-hostpath-driver | minikube | disabled | Kubernetes |
| dashboard | minikube | disabled | Kubernetes |
| default-storageclass | minikube | enabled ? | Kubernetes |
| efk | minikube | disabled | 3rd party (Elastic) |
| freshpod | minikube | disabled | Google |
| gcp-auth | minikube | disabled | Google |
| gvisor | minikube | disabled | Google |
| headlamp | minikube | disabled | 3rd party (kinvolk.io) |
| helm-tiller | minikube | disabled | 3rd party (Helm) |
| inaccel | minikube | disabled | 3rd party (InAccel |
| | | | []) |
| ingress | minikube | disabled | Kubernetes |
| ingress-dns | minikube | disabled | Google |
| istio | minikube | disabled | 3rd party (Istio) |
| istio-provisioner | minikube | disabled | 3rd party (Istio) |
| kong | minikube | disabled | 3rd party (Kong HQ) |
| kubevirt | minikube | disabled | 3rd party (KubeVirt) |
| logviewer | minikube | disabled | 3rd party (unknown) |
| metallb | minikube | disabled | 3rd party (MetalLB) |
| metrics-server | minikube | disabled | Kubernetes |
| nvidia-driver-installer | minikube | disabled | Google |
| nvidia-gpu-device-plugin | minikube | disabled | 3rd party (Nvidia) |
| olm | minikube | disabled | 3rd party (Operator Framework) |
| pod-security-policy | minikube | disabled | 3rd party (unknown) |
| portainer | minikube | disabled | 3rd party (Portainer.io) |
| registry | minikube | disabled | Google |
| registry-aliases | minikube | disabled | 3rd party (unknown) |
| registry-creds | minikube | disabled | 3rd party (UPMC Enterprises) |
| storage-provisioner | minikube | enabled ? | Google |
| storage-provisioner-gluster | minikube | disabled | 3rd party (Gluster) |
| volumesnapshots | minikube | disabled | Kubernetes |
|-----------------------------|----------|--------------|--------------------------------|
接下来,使用以下命令列出集群中运行的所有容器镜像:
kubectl get pods --all-namespaces
您应该看到以下输出:
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-565d847f94-9ttdq 1/1 Running 0 2m47s
kube-system etcd-minikube 1/1 Running 0 3m
kube-system kube-apiserver-minikube 1/1 Running 0 3m1s
kube-system kube-controller-manager-minikube 1/1 Running 0 3m
kube-system kube-proxy-mr8sn 1/1 Running 0 2m47s
kube-system kube-scheduler-minikube 1/1 Running 0 3m
kube-system storage-provisioner 1/1 Running 1 (2m16s ago) 2m59s
现在,运行以下命令获取 Kubernetes 仪表板的 URL:
minikube dashboard --url
您应该看到以下输出:
???? Enabling dashboard ...
? Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
? Using image docker.io/kubernetesui/dashboard:v2.7.0
???? Some dashboard features require the metrics-server addon. To enable all features please run:
minikube addons enable metrics-server
???? Verifying dashboard health ...
???? Launching proxy ...
???? Verifying proxy health ...
http://127.0.0.1:45627/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/
此时,Minikube 仪表板已安装并运行在本地主机上的端口 45627 上。但是,您只能从本地计算机访问它。如果要从外部计算机访问它,请运行以下命令。
kubectl proxy --address='0.0.0.0' --disable-filter=true
现在,打开您的网络浏览器并输入 URL http://your-server-ip:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/。您将被重定向到 Kubernetes 仪表板,如下页所示:

恭喜!您已经在 Debian 11 上成功安装了 Minikube。您现在可以通过 Web 浏览器轻松管理您的 Kubernetes 集群。如果您有任何问题,请随时问我。