提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 前言
- 一、准备一个java项目(任意项目不一定是java项目)
- 二、使用dockerfile制作镜像
- 1.vi Dockerfile
- 2.创建镜像
- 测试镜像
- 三、推送镜像到镜像仓库
- 1.创建私有仓库
- 2.推送镜像
- 四、控制器部署镜像
- 五、对外暴露服务
前言
使用kubernetes部署java项目并实现应用的访问、项目部署流程图如下
提示:以下是本篇文章正文内容,下面案例可供参考
一、准备一个java项目(任意项目不一定是java项目)
目的为制作镜像做准备,我这里使用的是一个war包,没有使用jar包是因为想给自己编写dockerfile时创造点麻烦。
二、使用dockerfile制作镜像
1.vi Dockerfile
代码如下(示例):
FROM:基于tomcat底层镜像
MAINTAINER: 作者
WORKER: 相当于cd
RUN:在刚cd到的目录执行命令、多个命令用&&分隔
COPY:这里写的是将Dockerfile同级目录下的bbmeow.war复制到相应目录
EXPOSE:暴露端口
FROM tomcat MAINTAINER lzl WORKDIR /usr/local/tomcat/ RUN rm -rf webapps && mv webapps.dist webapps COPY bbmeow.war /usr/local/tomcat/webapps/ EXPOSE 8080FROM tomcat MAINTAINER lzl WORKDIR /usr/local/tomcat/ RUN rm -rf webapps && mv webapps.dist webapps COPY bbmeow.war /usr/local/tomcat/webapps/ EXPOSE 8080FROM tomcat MAINTAINER lzl WORKDIR /usr/local/tomcat/ RUN rm -rf webapps && mv webapps.dist webapps COPY bbmeow.war /usr/local/tomcat/webapps/ EXPOSE 8080
2.创建镜像
代码如下(示例):
执行docker build -t 镜像名称(任意). 命令
docker build -t mytomcat .docker build -t mytomcat .docker build -t mytomcat .
注意命令最后的“.” 是当前目录的意思
测试镜像
docker run 我们刚刚创建的镜像 mytomcat
docker run -d -p 8081:8080 --name mytomcattest mytomcatdocker run -d -p 8081:8080 --name mytomcattest mytomcatdocker run -d -p 8081:8080 --name mytomcattest mytomcat
三、推送镜像到镜像仓库
如果你有自己的镜像仓库如阿里等,可以直接推送到已有的仓库上。
这里使用的是本地仓库。
1.创建私有仓库
执行命令
#拉取基础镜像 docker pull registry #构建本地仓库 docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart always --name registry registry #这时可以通过 curl测试一下 curl 本地仓库所在节点的ip(你的k8s集群可以访问到):5000/v2/_catalog#拉取基础镜像 docker pull registry #构建本地仓库 docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart always --name registry registry #这时可以通过 curl测试一下 curl 本地仓库所在节点的ip(你的k8s集群可以访问到):5000/v2/_catalog#拉取基础镜像 docker pull registry #构建本地仓库 docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart always --name registry registry #这时可以通过 curl测试一下 curl 本地仓库所在节点的ip(你的k8s集群可以访问到):5000/v2/_catalog
2.推送镜像
先打一个标签
docker tag mytomcat:latest 刚才的主机ip:5000/mytomcat(自定义名称):v1(自定义版本号)
docker tag mytomcat:latest 刚才的主机ip:5000/mytomcat:v1docker tag mytomcat:latest 刚才的主机ip:5000/mytomcat:v1docker tag mytomcat:latest 刚才的主机ip:5000/mytomcat:v1
查看打好的镜像
push镜像
docker push 刚刚打好的镜像tag
docker push 172.42.42.1:5000/mytomcat:v1docker push 172.42.42.1:5000/mytomcat:v1docker push 172.42.42.1:5000/mytomcat:v1
报错的解决办法
vi /etc/docker/daemon.json #添加如下内容 "insecure-registries":["刚才的ip:5000"]vi /etc/docker/daemon.json #添加如下内容 "insecure-registries":["刚才的ip:5000"]vi /etc/docker/daemon.json #添加如下内容 "insecure-registries":["刚才的ip:5000"]
测试
curl 刚才的ip:5000/v2/_catalog curl 刚才的ip:5000/v2/镜像名/tags/listcurl 刚才的ip:5000/v2/_catalog curl 刚才的ip:5000/v2/镜像名/tags/listcurl 刚才的ip:5000/v2/_catalog curl 刚才的ip:5000/v2/镜像名/tags/list
四、控制器部署镜像
现在k8s集群的机器上先pull上传好的镜像
docker pull 172.42.42.1:5000/mytomcat:v1docker pull 172.42.42.1:5000/mytomcat:v1docker pull 172.42.42.1:5000/mytomcat:v1
deployment部署
kubectl create deployment bbmeow --image 172.42.42.1:5000/mytomcat:v1 --dry-run -o yaml > bbmeow.yamlkubectl create deployment bbmeow --image 172.42.42.1:5000/mytomcat:v1 --dry-run -o yaml > bbmeow.yamlkubectl create deployment bbmeow --image 172.42.42.1:5000/mytomcat:v1 --dry-run -o yaml > bbmeow.yaml
kubectl create -f bbmeow.yaml kubectl get podkubectl create -f bbmeow.yaml kubectl get podkubectl create -f bbmeow.yaml kubectl get pod
五、对外暴露服务
我这里使用的是nodeport的方式也就是service,也可以使用ingress或者loadbalan…
扩容deployment
kubectl scale deployment bbmeow --replicas 3kubectl scale deployment bbmeow --replicas 3kubectl scale deployment bbmeow --replicas 3
实现暴露
kubectl expose deployment bbmeowsvc --port 8111 --target-port 8080 --type NodePort #查看svc kubectl get svckubectl expose deployment bbmeowsvc --port 8111 --target-port 8080 --type NodePort #查看svc kubectl get svckubectl expose deployment bbmeowsvc --port 8111 --target-port 8080 --type NodePort #查看svc kubectl get svc
这时可以通过图片中的32519端口访问服务了。
原文链接:https://blog.51cto.com/u_16099350/11267978