Minikube搭建+部署应用记录

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 的核心功能是:
  1. 查找名为 nginx 的 Service 的配置(包括暴露的端口、类型,如 NodePort 或 LoadBalancer);
  2. 自动建立本地主机与 Minikube 集群的网络转发(比如通过端口映射);
  3. 直接在终端输出可访问的 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 应用的核心步骤和命令完全一致:
  1. 应用打包:Java 应用→可执行 Jar 包(本地 java -jar 验证);
  2. 镜像构建:编写 Dockerfile→构建 Docker 镜像(docker build -t 镜像名:标签 .);
  3. K8s 配置:编写 deployment.yaml(配置镜像、端口、副本数等核心参数);
  4. 部署命令kubectl apply -f deployment.yaml
  5. 状态验证kubectl get deploymentskubectl get podskubectl logs
  6. 服务暴露kubectl expose deployment ... --type=NodePort(基础暴露方式一致)。
甚至  deployment.yaml 的核心配置(如  spec.containers.imagecontainerPortreplicas)也完全通用,无需修改。
需要注意的是,在镜像构建的步骤中,需要 在 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 有独立的 “容器环境”
  1. minikube 不是直接用宿主机的 Docker,而是自带了一套独立的容器引擎(默认是 containerd,也支持 Docker 驱动)。
  2. 宿主机上构建的镜像(比如你在本地打的 yancy-server:latest),只存在于宿主机的 Docker 镜像仓库里,minikube 的独立环境 “看不到”。
  3. 如果不切换上下文,直接部署到 minikube,它会找不到本地镜像,只能去远程仓库(如 Docker Hub)拉取,最终导致 ImagePullBackOff 错误。
生成在minikube内部的容器引擎里的镜像,外面宿主机的Docker也找不到,两者是相互独立的 “镜像仓库”,就像两个分开的柜子,各自存着自己的东西。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值