暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

原创|NO.A.0010|专题|——|云计算|K8S|集群项目部署|容器交付流程|部署Java制作推送镜像/部署镜像暴露应用|

Java BBS 2021-05-08
709

——>实验专题<——

一、在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 --version
Docker 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 ~]# Dockerfile
FROM 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.99MB
Step 1/4 : FROM openjdk:8-jdk-alpine #拉取JDK
8-jdk-alpine: Pulling from library/openjdk
---> a3562aa0b991
Step 2/4 : VOLUME /tmp #临时存储
---> Running in 7ea2bb361831
---> b3b5767e941d
Step 3/4 : ADD ./target/demojenkins.jar demojenkins.jar #增加jar包
---> 24d427b647fd
Step 4/4 : ENTRYPOINT ["java","-jar","/demojenkins.jar", "&"] #启动
---> Running in b98a082ce7c3
---> 3115dce749a3
Successfully built 3115dce749a3
Successfully tagged java-demo-01:latest
#3、查看镜像制作是否成功
[root@server14 demojenkins]# docker images
java-demo-01 latest 3115dce749a3 2 minutes ago 122MB
#4、测试:在当前主机启动制作好的镜像,是否可以访问
[root@server14 ~]# docker run -d -p 8111:8111 java-demo-01:latest -t
a6e1b9d5dd42c0f773496b121d6e7d02440eb0161bb3fb68df9908d5263aebee
#通过浏览器访问: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.com
Password: #阿里云账号密码
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store


Login Succeeded
#2、为镜像添加版本号
[root@server14 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
java-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.0
The push refers to repository [registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01]
9cd12def801a: Pushed
ceaf9e1ebef5: Pushed
9b9b7f3d56a0: Pushed
f1b5933fe4b5: Pushed
1.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.0
1.0.0: Pulling from docker-yanqi/java-project-01
e7c96db7181b: Pull complete
f910a506b6cb: Pull complete
c2274a1a0e27: Pull complete
a9d0250eb976: Pull complete
Digest: sha256:fecc96e6e4b8cc14d9ecca429e6a32c68de782e7730025826c265bc99317b711
Status: Downloaded newer image for registry.cn-hangzhou.aliyuncs.com/docker-yanqi/java-project-01:1.0.0
[root@k8s-node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.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 ~]# ls
javademo1.yaml
#2、创建Javademo1的pod
[root@k8s-master1 ~]# kubectl apply -f javademo1.yaml
deployment.apps/javademo1 created
[root@k8s-master1 ~]# kubectl get pods
NAME READY STATUS RESTARTS AGE
javademo1-659c9d6665-9r2v4 1/1 Running 0 43s
[root@k8s-master1 ~]#
[root@k8s-master1 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
javademo1-659c9d6665-9r2v4 1/1 Running 0 61s 10.244.2.3 k8s-node1 <none> <none>
#3、扩容添加几个副本
[root@k8s-master1 ~]# kubectl scale deployment javademo1 --replicas=3
deployment.apps/javademo1 scaled
[root@k8s-master1 ~]# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
javademo1-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=NodePort
service/javademo1 exposed
[root@k8s-master1 ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
javademo1 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






文章转载自Java BBS,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论