k8s系列--java项目制作镜像并打包发布到k8s集群

1、首先在winodw命令行运行mvn clean package打包成一个jar文件
2、编写Dockerfile文件
3、Docker和jar文件打包成一个zip压缩文件
4、上传到linux服务器
5、unzip解压到一个新建的文件夹
6、使用Docker命令打包成一个镜像
docker build -t java-hello-01:latest .
docker images查看已经构建成功
7、运行镜像看看是否成功
docker run -d -p 8111:8111 java-hello-01:latest -t
8、推送到远程仓库,并从远程仓库拉取到本地(由于尚未搭建私有仓库,故省略)
9、使用k8s构建镜像成为一个yaml文件
kubectl create deployment java-hello-01 --image=java-hello-01:latest --dry-run -o yaml > java-hello-01.yaml
以下是生成的yaml文件:
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: java-hello-01
name: java-hello-01
spec:
replicas: 1
selector:
matchLabels:
app: java-hello-01
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: java-hello-01
spec:
containers:
- image: java-hello-01:latest
name: java-hello-01
resources: {}
status: {}
10、使用k8s执行yaml文件
kubectl apply -f java-hello-01.yaml
kubectl get pods

由于没有私有仓库,master节点上的image镜像文件需要整理成压缩包分发给node节点
docker save -o java-hello-01.tar java-hello-01:latest
tar -czvf java-hello-01.tar.gz java-hello-o1.tar
(上述方式打包使用docker load -i加载时候报错open /var/lib/docker/tmp/docker-import-555754229/repositories: no such file or directory,查看压缩包发现多了一层tar的结构)

docker save java-hello-01:latest| gzip > java-hello-01.tar.gz
下载到本地,上传到node节点
docker load -i java-hello-01.tar.gz
由于k8s默认策略,会一直去远程拉取而不是使用本地,故在java-demo-01.yaml添加imagePullPolicy: IfNotPresent拉取策略

11、副本扩容
kubectl scale deployment java-hello-01 --replicas=3
kubectl get pods
12、对外暴露端口
kubectl expose deployment java-hello-01 --port=8111 --target-port=8111 --type=NodePort
13、查看对外暴露的端口号
kubectl get svc
14、测试完毕,删除pod
kubectl delete pod --force --grace-period=0 --强制删除,普通删除会新建pod(删除不起作用)
kubectl scale deployment --replicas=0

附录:
docker查看/停止正在运行的容器
docker ps
docker stop 容器id

posted @ 2025-09-18 17:50  再练习两年半  阅读(28)  评论(0)    收藏  举报