1、去官网下载minikube:
复制下面两行命令:
curl -LO https://github.com/kubernetes/minikube/releases/latest/download/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube && rm minikube-linux-amd64
安装完成后可执行命令验证:
minikube version # 输出示例:minikube version: v1.32.0
2、运行minikube
报错如上,可以执行 sudo usermod .... 解决
又报错:
该错误是因为:
Minikube 无法下载所需的基础镜像(kicbase)
,因为该镜像托管在谷歌的
gcr.io
仓库,而国内网络通常无法直接访问
gcr.io
,导致下载超时失败。
命令加上
--image-mirror-country cn 再执行,整体命令:
minikube start --driver=docker --image-mirror-country cn
这里显示还是有下载失败,但是下载备用镜像成功了.......总之,minikube启动成功了。
注:如果还不成功,显示下载kicbase镜像失败,尝试指定kicbase镜像源,执行如下命令:
minikube start --driver=docker --base-image=docker.1ms.run/kicbase/stable:v0.0.48
注:这里有个奇怪的点:如果一直报错:
那么应执行 minikube delete 删除minikube,然后执行:
minikube start --driver=docker --image-mirror-country cn
这条命令
卡在Pulling镜像时立刻Ctrl+C打断:
然后执行:
minikube start --driver=docker --base-image=docker.1ms.run/kicbase/stable:v0.0.48
就可执行成功:
并不知道为什么……
启动成功后,执行 minikube status查看状态:
然后,通过以下命令可安装kubectl(但是我一直没安装成功,
后续一直用
minikube kubectl --
代替了kubectl命令):
minikube kubectl -- get po -A
执行后显示如下:
3、在集群上启动nginx
试图启动nginx,执行命令 minikube kubectl -- create deployment nginx --image=nginx,发现镜像下载一直有问题,因此改为以下命令:
minikube kubectl -- create deployment nginx --image=docker.1ms.run/nginx
这样nginx的镜像源从docker官方变成了docker.1ms.run,成功启动,情况如下:
再执行以下命令,暴露80端口:
minikube kubectl -- expose deployment nginx --port=80 --type=NodePort
至此,部署完毕。
执行以下命令:
minikube service nginx
展示如下:
提供了访问nginx的地址。
注:
minikube service nginx 的核心功能是:
- 查找名为 nginx 的 Service 的配置(包括暴露的端口、类型,如 NodePort 或 LoadBalancer);
- 自动建立本地主机与 Minikube 集群的网络转发(比如通过端口映射);
- 直接在终端输出可访问的 URL,甚至自动打开默认浏览器访问该服务(如果系统支持)。
因为是纯命令行环境执行的minikube service指令,所以系统不会自动打开浏览器,我们采用如下命令模仿浏览器请求:
curl http://192.168.49.2:31729
结果如下:
可以看到,已经成功访问到nginx的页面了,所以部署成功了。
参考网址:
4、安装kubectl
下载安装包:
curl -LO https://dl.k8s.io/release/v1.34.0/bin/linux/amd64/kubectl
安装:
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
先启动minikube集群,再安装kubectl,kubectl仍然能够知道minikube集群的消息,因为kubectl是
通过读取一个默认路径的配置文件(通常是
~/.kube/config
)来获取集群信息。
5、Minikube部署Java应用
不管是 minikube 还是多节点 K8s 集群,部署 Java 应用的核心步骤和命令完全一致:
- 应用打包:Java 应用→可执行 Jar 包(本地 java -jar 验证);
- 镜像构建:编写 Dockerfile→构建 Docker 镜像(docker build -t 镜像名:标签 .);
- K8s 配置:编写 deployment.yaml(配置镜像、端口、副本数等核心参数);
- 部署命令:kubectl apply -f deployment.yaml;
- 状态验证:kubectl get deployments「kubectl get pods「kubectl logs ;
- 服务暴露:kubectl expose deployment ... --type=NodePort(基础暴露方式一致)。
甚至
deployment.yaml 的核心配置(如
spec.containers.image「
containerPort「
replicas)也完全通用,无需修改。
需要注意的是,在镜像构建的步骤中,需要
在 minikube 环境中重新构建镜像,类似命令如下:
# 切换终端上下文到 minikube 的容器引擎(关键:后续 docker 命令会直接操作 minikube 内部) eval $(minikube docker-env) # 进入镜像构建目录(包含 Dockerfile 和应用文件) cd /path/to/your/dockerfile/dir # 重新构建镜像,指定标签为 latest docker build -t yancy-server:latest .
eval $(minikube docker-env)
是
切换 Docker 命令的 “操作上下文”
,让后续的
docker build
/
docker images
等命令,直接操作 minikube 内部的容器引擎(而非宿主机的 Docker),所以需要在这个上下文里重新构建镜像 —— 本质是让 minikube 能直接识别到你的自定义镜像。
minikube 有独立的 “容器环境”
- minikube 不是直接用宿主机的 Docker,而是自带了一套独立的容器引擎(默认是 containerd,也支持 Docker 驱动)。
- 宿主机上构建的镜像(比如你在本地打的 yancy-server:latest),只存在于宿主机的 Docker 镜像仓库里,minikube 的独立环境 “看不到”。
- 如果不切换上下文,直接部署到 minikube,它会找不到本地镜像,只能去远程仓库(如 Docker Hub)拉取,最终导致 ImagePullBackOff 错误。
生成在minikube内部的容器引擎里的镜像,外面宿主机的Docker也找不到,两者是相互独立的 “镜像仓库”,就像两个分开的柜子,各自存着自己的东西。
92

被折叠的 条评论
为什么被折叠?



