Featured image of post 在Kubernetes(k8s)中部署Java应用

在Kubernetes(k8s)中部署Java应用

目录、项目迁移到平台的怎样的流程、基本概念、构建项目镜像、部署项目镜像到平台、项目迁移到平台的怎样的流程、基本概念最小部署单元一组容器的集合一个中的容器共享网络命名空间是短暂的:无状态应用部署:有状态。。。。。。。

目录

1、项目迁移到k8s平台的怎样的流程

2、Kubernetes基本概念

3、构建项目镜像

4、部署项目镜像到Kubernetes平台


1、项目迁移到k8s平台的怎样的流程

2、Kubernetes基本概念

 Pod • 最小部署单元 • 一组容器的集合 • 一个Pod中的容器共享网络命名空间 • Pod是短暂的

 Controllers • Deployment : 无状态应用部署 • StatefulSet : 有状态应用部署 • DaemonSet : 确保所有Node运行同一个Pod • Job : 一次性任务 • Cronjob : 定时任务
更高级层次对象,部署和管理Pod

 Service • 防止Pod失联 • 定义一组Pod的访问策略
 Label : 标签,附加到某个资源上,用于关联对象、查询和筛选
 Namespaces : 命名空间,将对象逻辑上隔离

3、构建项目镜像

1、准备Jar包

2、制作镜像

解压文件

1
yum install -y unzip && unzip tomcat-java-demo-master.zip 

把这个sql文件导入mysql。

在Node1上下载mysql:5.6的镜像。

1
2
3
4
5
6
docker run -p 3306:3306 --name mysql-master \
-v /mydata/mysql/master/log:/var/log/mysql \
-v /mydata/mysql/master/data:/var/lib/mysql \
-v /mydata/mysql/master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.6

接下导入sql数据。

可以使用工具导入方便。

修改代码里的配置文件

安装JDk和Maven环境

1
 yum install -y java-1.8.0-openjdk maven

修改maven源

1
2
3
4
5
6
7
8
9
vim /etc/maven/settings.xml


<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>
</mirror>

编译源码 【漫长的等待】

1
mvn clean package -D maven.test.skip=true

准备使用DockerFile文件来构建镜像。

1
2
3
4
FROM lizhenliang/tomcat 
LABEL maintainer www.ctnrs.com
RUN rm -rf /usr/local/tomcat/webapps/*
ADD target/*.war /usr/local/tomcat/webapps/ROOT.war 

构建镜像

1
docker build -t lizhenliang/java-demo -f Dockerfile .

已经成功

写ymal文件【生成模板,在修改】

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
kubectl create deployment java-demo --image=lizhenliang/java-demo --dry-run -o yaml 

#内容
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: java-demo
  name: java-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: java-demo
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: java-demo
    spec:
      containers:
      - image: lizhenliang/java-demo
        name: java-demo
        resources: {}
status: {}

重定向,生成本地的yaml

1
kubectl create deployment java-demo --image=lizhenliang/java-demo --dry-run -o yaml > deploy.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
[root@master ~]# cat deploy.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: java-demo
  name: java-demo
spec:
  replicas: 2
  selector:
    matchLabels:
      app: java-demo
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: java-demo
    spec:
      containers:
      - image: lizhenliang/java-demo
        name: java-demo

运行

1
kubectl apply -f deploy.yaml 

1
kubectl get pods

4、部署项目镜像到Kubernetes平台

未来的你,会感谢今天仍在努力奋斗的你