1. 环境信息
- Windows 11
- VMware Workstation Pro 17
- Oracle Linux 9
2. 准备工作
# 更新系统
dnf -y update
# 安装 Docker 的依赖包
dnf install -y dnf-utils
# 添加 Docker 的仓库
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装 Docker
install docker-ce docker-ce-cli containerd.io
# 启动 Docker
systemctl start docker
# 开机自启动 Docker
systemctl enable docker
3. 下载minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
4. 安装minikube
install minikube-linux-amd64 /usr/local/bin/minikube
验证
[root@dukui ~]# minikube version
minikube version: v1.32.0
commit: 8220a6eb95f0a4d75f7f2d7b14cef975f050512d
5. 启动minikube
minikub
在启动时需要从gcr.io
和registry.k8s.io
中拉取镜像,但在国内由于墙的限制,肯定拉取失败。但如果这些镜像都已经有了,大家直接将这些镜像拷贝至minikube cache
目录中去,然后在启动minikube
的过程中就直接使用缓存中的镜像而不会再去重新拉取镜像了。
5.1. 拷贝镜像
# 首先,进入 USER_HOME 目录
# USER_HOME 目录是什么?比如 C:\Users\dukui 和 /root
cd USER_HOME
# 然后,进入 .minikube/cache/images/amd64 目录
cd /root/.minikube/cache/images/amd64
# 最后,将 gcr.io 和 registry.k8s.io 镜像拷贝到该目录即可
# 一般该目录下是空的,如果有内容建议直接删除
验证
[root@dukui amd64]# ls -l -R -h
总用量 0
drwxr-xr-x. 3 root root 26 11月 25 18:14 gcr.io
drwxr-xr-x. 3 root root 183 11月 25 18:31 registry.k8s.io
./gcr.io:
总用量 0
drwxr-xr-x. 2 root root 36 11月 25 20:27 k8s-minikube
./gcr.io/k8s-minikube:
总用量 31M
-rw-r--r--. 1 root root 31M 11月 25 20:27 storage-provisioner_v5
./registry.k8s.io:
总用量 205M
drwxr-xr-x. 2 root root 48 11月 25 19:20 coredns
-rw-r--r--. 1 root root 99M 11月 25 18:31 etcd_3.5.9-0
-rw-r--r--. 1 root root 34M 11月 25 18:15 kube-apiserver_v1.28.3
-rw-r--r--. 1 root root 32M 11月 25 18:15 kube-controller-manager_v1.28.3
-rw-r--r--. 1 root root 24M 11月 25 18:16 kube-proxy_v1.28.3
-rw-r--r--. 1 root root 18M 11月 25 18:15 kube-scheduler_v1.28.3
-rw-r--r--. 1 root root 315K 11月 25 18:14 pause_3.9
./registry.k8s.io/coredns:
总用量 16M
-rw-r--r--. 1 root root 16M 11月 25 18:15 coredns_v1.10.1
-rw-r--r--. 1 root root 0 11月 25 19:20 k8s_v1.28.3
5.2. 拷贝kubeadm
、kubectl
、kubelet
kubeadm
、kubectl
、kubelet
是三个二进制可执行文件,也可跳过本步骤,但是为了加快minikube
的启动速度,建议拷贝。
[root@dukui amd64]# ls -l -R -h
总用量 0
drwxr-xr-x. 2 root root 51 11月 25 20:23 v1.28.3
./v1.28.3:
总用量 200M
-rwxr-xr-x. 1 root root 47M 11月 25 20:17 kubeadm
-rwxr-xr-x. 1 root root 48M 11月 25 20:17 kubectl
-rw-r--r--. 1 root root 106M 11月 25 20:23 kubelet
5.3. 启动
[root@dukui ~]# minikube start --force
* Oracle 9.3 上的 minikube v1.32.0
! 当提供 --force 参数时,minikube 将跳过各种验证,这可能会导致意外行为
* 根据现有的配置文件使用 docker 驱动程序
* The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.
* 如果您在VM中运行 minikube,请考虑使用 --driver=none:
* https://minikube.sigs.k8s.io/docs/reference/drivers/none/
* 提示:要删除此 root 拥有的集群,请运行:sudo minikube delete
* 正在集群 minikube 中启动控制平面节点 minikube
* 正在拉取基础镜像 ...
* Restarting existing docker container for "minikube" ...
* 正在 Docker 24.0.7 中准备 Kubernetes v1.28.3…
* 配置 bridge CNI (Container Networking Interface) ...
* 正在验证 Kubernetes 组件...
- 正在使用镜像 gcr.io/k8s-minikube/storage-provisioner:v5
* 启用插件: storage-provisioner, default-storageclass
* kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
* 完成!kubectl 现在已配置,默认使用"minikube"集群和"default"命名空间
验证
[root@dukui amd64]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-5dd5756b68-r6t6j 1/1 Running 1 (67m ago) 73m
kube-system etcd-minikube 1/1 Running 1 (67m ago) 74m
kube-system kube-apiserver-minikube 1/1 Running 1 (67m ago) 74m
kube-system kube-controller-manager-minikube 1/1 Running 1 (67m ago) 74m
kube-system kube-proxy-5xrcv 1/1 Running 1 (67m ago) 73m
kube-system kube-scheduler-minikube 1/1 Running 1 (67m ago) 74m
kube-system storage-provisioner 1/1 Running 3 (66m ago) 74m
如果我们能翻墙,直接在Windows
本地启动是非常省心的,当然需要首先安装Docker Desktop
,分享一下Windows
本地启动过程。
C:\Users\dukui>minikube start
W1125 18:14:29.386470 23960 main.go:291] Unable to resolve the current Docker CLI context "default": context "default": context not found: open C:\Users\dukui.000.docker\contexts\meta\37a8eec1ce19687d132fe29051dca629d164e2c4958ba141d5f4133a33f0688f\meta.json: The system cannot find the path specified.
* Microsoft Windows 11 Home China 10.0.22635.2771 Build 22635.2771 上的 minikube v1.32.0
* 自动选择 docker 驱动
* 使用具有 root 权限的 Docker Desktop 驱动程序
* 正在集群 minikube 中启动控制平面节点 minikube
* 正在拉取基础镜像 ...
> gcr.io/k8s-minikube/kicbase...: 0 B [_______________________] ?% ? p/s ?! The image 'gcr.io/k8s-minikube/storage-provisioner:v5' was not found; unable to add it to cache.
> gcr.io/k8s-minikube/kicbase...: 0 B [___________________] ?% ? p/s 300ms
> index.docker.io/kicbase/sta...: 0 B [___________________] ?% ? p/s 700ms
> gcr.io/k8s-minikube/kicbase...: 0 B [___________________] ?% ? p/s 300ms
> index.docker.io/kicbase/sta...: 453.90 MiB / 453.90 MiB 100.00% 1.59 Mi
! minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.42, but successfully downloaded docker.io/kicbase/stable:v0.0.42 as a fallback image
* Creating docker container (CPUs=2, Memory=8100MB) ...
* 正在 Docker 24.0.7 中准备 Kubernetes v1.28.3…
X 无法加载缓存的镜像:loading cached images: CreateFile C:\Users\dukui.000.minikube\cache\images\amd64\gcr.io\k8s-minikube\storage-provisioner_v5: The system cannot find the file specified.
> kubectl.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubeadm.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubelet.sha256: 64 B / 64 B [-------------------------] 100.00% ? p/s 0s
> kubeadm: 46.77 MiB / 46.77 MiB [----------] 100.00% 103.02 KiB p/s 7m45s
> kubectl: 47.56 MiB / 47.56 MiB [----------] 100.00% 59.04 KiB p/s 13m45s
> kubelet: 105.65 MiB / 105.65 MiB [--------] 100.00% 59.25 KiB p/s 30m26s
- 正在生成证书和密钥...
- 正在启动控制平面...
- 配置 RBAC 规则 ...
* 配置 bridge CNI (Container Networking Interface) ...
* 正在验证 Kubernetes 组件...
- 正在使用镜像 gcr.io/k8s-minikube/storage-provisioner:v5
* 启用插件: storage-provisioner, default-storageclass
* 完成!kubectl 现在已配置,默认使用"minikube"集群和"default"命名空间
其实gcr.io
、registry.k8s.io
镜像和kubeadm
、kubectl
、kubelet
三个二进制可执行文件都是来源于Windows
本地!
6. 镜像及二进制执行文件下载链接
提取码:9vc0