——>实验专题<——
一、在k8s集群部署项目(Java项目)
部署项目流程介绍

部署java项目

一、基础准备
1、需要两个依赖环境:
#1、JDK1.8.0_281安装部署//见原创|NO.A.0011|部署方案#2、apache-Maven 3.6.3安装部署//见原创|NO.A.0012|部署方案#3、安装docker[root@server14 ~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo[root@server14 ~]# yum -y install docker-ce-18.06.1.ce-3.el7[root@server14 ~]# yum -y install docker-ce-18.06.1.ce-3.el7[root@server14 ~]# systemctl enable docker && systemctl start docker[root@server14 ~]# docker --versionDocker version 18.06.1-ce, build e68fc7a[root@server14 ~]# tee /etc/docker/daemon.json <<-'EOF'> {> "registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],> "exec-opts": ["native.cgroupdriver=systemd"]> }> EOF{"registry-mirrors": ["https://v16stybc.mirror.aliyuncs.com"],"exec-opts": ["native.cgroupdriver=systemd"]}[root@server14 ~]# systemctl restart docker
2、把java项目(springboot)打包成jar包
#打包镜像是需要用到[root@server14 ~]# DockerfileFROM openjdk:8-jdk-alpine #jdk环境,把jdk环境导入进去VOLUME /tmp #临时存储的目录ADD ./target/demojenkins.jar demojenkins.jar #做镜像的过程 #一般改写改jar包名称和路径ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"] #jar包需要启用,java -jar启用
3、通过maven打包mvn clean package打包成jar包
#使用mvn打包成jar包,是不需要dockerfile的,mvn clean package#在windows下打包#进入项目目录中,E:\尚硅谷Kubernetes(k8s)新版\课程资料\安装文档和yaml文件\javaproject\demojenkins#cmd窗口,打包成jar包//E:\尚硅谷Kubernetes(k8s)新版\课程资料\安装文档和yaml文件\javaproject\demojenkins//会生成一个target目录:生成一个demojenkins.jar文件的jar包
二、制作镜像
#1、将demojenkins上传至服务器[root@server14 ~]# mkdir javaproject[root@server14 ~]# cd javaproject/demojenkins/#2、制作镜像[root@server14 demojenkins]# docker build -t java-demo-01:latest .Sending build context to Docker daemon 17.99MBStep 1/4 : FROM openjdk:8-jdk-alpine #拉取JDK8-jdk-alpine: Pulling from library/openjdk---> a3562aa0b991Step 2/4 : VOLUME /tmp #临时存储---> Running in 7ea2bb361831---> b3b5767e941dStep 3/4 : ADD ./target/demojenkins.jar demojenkins.jar #增加jar包---> 24d427b647fdStep 4/4 : ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"] #启动---> Running in b98a082ce7c3---> 3115dce749a3Successfully built 3115dce749a3Successfully tagged java-demo-01:latest#3、查看镜像制作是否成功[root@server14 demojenkins]# docker imagesjava-demo-01 latest 3115dce749a3 2 minutes ago 122MB#4、测试:在当前主机启动制作好的镜像,是否可以访问[root@server14 ~]# docker run -d -p 8111:8111 java-demo-01:latest -ta6e1b9d5dd42c0f773496b121d6e7d02440eb0161bb3fb68df9908d5263aebee#通过浏览器访问:http://10.10.10.14:8111/user 输出:hello;#说明docker镜像是ok的。
三、上传镜像到镜像服务器中(阿里云)
#1、创建阿里云镜像仓库#阿里云地址:https://www.aliyun.com/product/#产品——>容器与中间件——>容器镜像服务ACR——>管理控制台——>创建命名空间:docker-yanqi——>创建镜像仓库:java-project-01——>本地代码源——>END#2、登录镜像服务器[root@server14 ~]# sudo docker login --username=yanqi_vip registry.cn-hangzhou.aliyuncs.comPassword: #阿里云账号密码WARNING! Your password will be stored unencrypted in /root/.docker/config.json.Configure a credential helper to remove this warning. Seehttps://docs.docker.com/engine/reference/commandline/login/#credentials-storeLogin Succeeded#2、为镜像添加版本号[root@server14 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEjava-demo-01 latest 3115dce749a3 26 minutes ago 122MB[root@server14 ~]# docker tag 3115dce749a3 registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01:1.0.0#3、实现镜像推送[root@server14 ~]# docker tag 3115dce749a3 registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01:1.0.0[root@server14 ~]# docker push registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01:1.0.0The push refers to repository [registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01]9cd12def801a: Pushedceaf9e1ebef5: Pushed9b9b7f3d56a0: Pushedf1b5933fe4b5: Pushed1.0.0: digest: sha256:fecc96e6e4b8cc14d9ecca429e6a32c68de782e7730025826c265bc99317b711 size: 1159#4、查看java-project-01下面查看:镜像版本:1.0.0 3115dce749a3... 正常#5、拉取镜像:在node节点拉取测试[root@k8s-node1 ~]# docker pull registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01:1.0.01.0.0: Pulling from docker-yanqi/java-project-01e7c96db7181b: Pull completef910a506b6cb: Pull completec2274a1a0e27: Pull completea9d0250eb976: Pull completeDigest: sha256:fecc96e6e4b8cc14d9ecca429e6a32c68de782e7730025826c265bc99317b711Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01:1.0.0[root@k8s-node1 ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEregistry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01 1.0.0 3115dce749a3 40 minutes ago 122MB
四、控制器部署镜像Deployment
#1、创建一个Pod之生成yaml文件[root@k8s-master1 ~]# kubectl create deployment javademo1 --image=registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01:1.0.0 --dry-run -o yaml > javademo1.yaml[root@k8s-master1 ~]# lsjavademo1.yaml#2、创建Javademo1的pod[root@k8s-master1 ~]# kubectl apply -f javademo1.yamldeployment.apps/javademo1 created[root@k8s-master1 ~]# kubectl get podsNAME READY STATUS RESTARTS AGEjavademo1-659c9d6665-9r2v4 1/1 Running 0 43s[root@k8s-master1 ~]#[root@k8s-master1 ~]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESjavademo1-659c9d6665-9r2v4 1/1 Running 0 61s 10.244.2.3 k8s-node1 <none> <none>#3、扩容添加几个副本[root@k8s-master1 ~]# kubectl scale deployment javademo1 --replicas=3deployment.apps/javademo1 scaled[root@k8s-master1 ~]# kubectl get pods -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESjavademo1-659c9d6665-9r2v4 1/1 Running 0 4m40s 10.244.2.3 k8s-node1 <none> <none>javademo1-659c9d6665-cqwnm 1/1 Running 0 31s 10.244.2.4 k8s-node1 <none> <none>javademo1-659c9d6665-snkbm 1/1 Running 0 31s 10.244.2.5 k8s-node1 <none> <none>
五、对外暴露应用service Ingress
#4、对外暴露端口[root@k8s-master1 ~]# kubectl expose deployment javademo1 --port=8111 --target-port=8111 --type=NodePortservice/javademo1 exposed[root@k8s-master1 ~]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEjavademo1 NodePort 10.1.183.81 <none> 8111:30938/TCP 24s#对外暴露的端口是30938,通过任何一个节点+对外暴露端口都可以输出内容// http://10.10.10.11:30938/user 输出:hello// http://10.10.10.12:30938/user 输出:hello// http://10.10.10.13:30938/user 输出:hello// http://10.10.10.15:30938/user 输出:hello #vip输出
END
声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!




推荐阅读
Recommended reading


JavaBBS
Git → https://www.javabbs.cn/git
JavaBBS大数据→ https://www.javabbs.cn/dsj
JavaBBS云存储→ https://www.javabbs.cn/ycc
JavaBBS数据库→ https://www.javabbs.cn/sjk
JavaBBS云计算→ https://www.javabbs.cn/yjs
JavaBBSIT.Log→ https://www.javabbs.cn/itl
JavaBBSNginx→ https://www.javabbs.cn/ngx
JavaBBSzabbix→ https://www.javabbs.cn/zbx
JavaBBSJavaSE→ https://www.javabbs.cn/jse JavaBBS社区文章→ https://www.javabbs.cn/bwz
JavaBBS社区资料→ https://www.javabbs.cn/bzl





