Debian 11 上使用 Minicube 部署 Kubernetes 集群

发布于 15 天前  78 次阅读


AI 摘要

在Debian 11上使用Minikube部署Kubernetes集群,首先需要准备一台具有2个或更多CPU核心,至少2GB可用内存和20GB可用磁盘空间的服务器。同时需要保证服务器具有稳定的互联网连接,并且安装了Docker、QEMU、Hyperkit、Hyper-V、KVM、Parallels、Podman、VirtualBox或VMware Fusion/Workstation等容器或虚拟机管理器。接下来,需要安装kubectl,可以通过curl命令下载最新稳定版本的kubectl并进行安装。安装完成后,可以通过kubectl version -o yaml命令检查kubectl是否安装成功。 接下来,需要安装Minikube。可以通过curl命令下载最新版本的Minikube并进行安装。安装完成后,可以使用minikube version命令验证Minikube是否安装成功。 启动Minikube时,如果使用Root权限启动,需要添加--force选项以避免权限错误。可以使用minikube start --driver=docker --force命令启动集群。 在启动集群后,可以使用kubectl cluster-info命令检查集群状态,使用kubectl get nodes命令查看正在运行的节点。还可以使用minikube ssh命令访问Minikube容器,并使用exit命令退出容器。 停止和删除Kubernetes集群时,可以使用minikube stop和minikube delete命令。使用minikube status命令可以检查Minikube的状态。 默认情况下,Minikube提供了一个Web端口,用于管理集群。可以使用minikube addons list命令来列出所有可用的插件。其中包含了Kubernetes的官方插件以及第三方插件。

我这边采用的是Hetzner的独立服务器配置,VPS也能部署

 CPU 型号          : Intel(R) Core(TM) i7-7700 CPU @ 3.60GHz
 CPU 核心数        : 1 物理核心, 4 总核心, 8 总线程数
 CPU 频率          : 4089.603 MHz
 CPU 缓存          : L1: 256.00 KB / L2: 1.00 MB / L3: 8.00 MB
 硬盘空间          : 678.17 GiB / 936.60 GiB
 启动盘路径        : /dev/md1
 内存              : 24.31 GiB / 62.59 GiB
 Swap              : [ no swap partition or swap file detected ]
 系统在线时间      : 14 days, 19 hour 25 min
 负载              : 1.42, 1.76, 2.01
 系统              : Debian GNU/Linux 11 (bullseye) (x86_64)
 AES-NI指令集      : ✔ Enabled
 VM-x/AMD-V支持    : ✔ Enabled
 架构              : x86_64 (64 Bit)
 内核              : 5.10.0-23-amd64
 TCP加速方式       : bbr
 虚拟化架构        : Dedicated
 NAT类型           : 开放型
 IPV4 ASN          : AS24940 Hetzner Online GmbH
 IPV4 位置         : Berlin / Berlin / DE
 IPV6 ASN          : AS24940 Hetzner Online GmbH
 IPV6 位置         : Nuremberg / DE-BY

环境准备

2 CPUs or more
2GB of free memory
20GB of free disk space
Internet connection
Container or virtual machine manager, such as: DockerQEMUHyperkitHyper-VKVMParallelsPodmanVirtualBox, or VMware Fusion/Workstation 

安装 Kubectl

依次执行
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x ./kubectl
sudo mv kubectl /usr/local/bin/

### 检查Kubectl是否安装成功
kubectl version -o yaml

安装Minikube

依次执行
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
检查是否安装成功
minikube version

启动Minikube

我这边采用的是Root权限下启动需要执行的,如果直接minikube启动,会有权限警告错误
minikube start --driver=docker --force

错误整理:

Root登录权限下直接通过minikube start 启动集群

minikube v1.31.2 on Debian 11.7
Automatically selected the docker driver. Other choices: ssh, none
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/
X Exiting due to DRV_AS_ROOT: The "docker" driver should not be used with root privileges. 

解决方案:1.更换用户 2.以 minikube start --driver=docker --force 命令启动集群

检查集群状态

kubectl cluster-info

检查正在运行的节点

kubectl get nodes

访问Minikube 容器

minikube ssh

退出容器Shell

exit

停止和删除 Kubernetes 集群

minikube stop
minikube delete

检查Minikube状态

minikube status

访问Minikube Kubernetes Dashboard

默认情況下,Minikube 提供了一個 Web 端,可用来管理你的集群。

你可以使用以下命令列出所有 minikube 插件:minikube addons list

你可以看到以下输出:

[15:56 root@panel ~] > minikube addons list
|-----------------------------|----------|--------------|--------------------------------|
|         ADDON NAME          | PROFILE  |    STATUS    |           MAINTAINER           |
|-----------------------------|----------|--------------|--------------------------------|
| ambassador                  | minikube | disabled     | 3rd party (Ambassador)         |
| auto-pause                  | minikube | disabled     | minikube                       |
| 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     | minikube                       |
| headlamp                    | minikube | disabled     | 3rd party (kinvolk.io)         |
| helm-tiller                 | minikube | disabled     | 3rd party (Helm)               |
| inaccel                     | minikube | disabled     | 3rd party (InAccel             |
|                             |          |              | [info@inaccel.com])            |
| ingress                     | minikube | disabled     | Kubernetes                     |
| ingress-dns                 | minikube | disabled     | minikube                       |
| inspektor-gadget            | minikube | disabled     | 3rd party                      |
|                             |          |              | (inspektor-gadget.io)          |
| 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     | 3rd party (Nvidia)             |
| 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     | minikube                       |
| registry-aliases            | minikube | disabled     | 3rd party (unknown)            |
| registry-creds              | minikube | disabled     | 3rd party (UPMC Enterprises)   |
| storage-provisioner         | minikube | enabled ✅   | minikube                       |
| storage-provisioner-gluster | minikube | disabled     | 3rd party (Gluster)            |
| volumesnapshots             | minikube | disabled     | Kubernetes                     |
|-----------------------------|----------|--------------|--------------------------------|

接下來,使用以下命令列出集群中目前运行的所有容器镜像:

kubectl get pods --all-namespaces

现在,韵行以下命令获取 Kubernetes 面板的 URL:

minikube dashboard --url

此時,Minikube 仪表盘已安装并运行在服务器上的 39509 端口上。但是,目前只能从本地地址访问它。 如果要从外部访问它,需要运行以下命令。

kubectl proxy --address='0.0.0.0' --disable-filter=true

現在,打開你的Chrome並输入 URL http://your-server-ip:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/。 将被重定向到 Kubernetes 仪表盘,如下頁所示: