在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、制作镜像

解压文件

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

把这个sql文件导入mysql。

在Node1上下载mysql: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环境

 yum install -y java-1.8.0-openjdk maven

修改maven源

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>

编译源码 【漫长的等待】

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

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

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

构建镜像

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

已经成功

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

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

kubectl create deployment java-demo --image=lizhenliang/java-demo --dry-run -o yaml > deploy.yaml
[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

运行

kubectl apply -f deploy.yaml 

kubectl get pods

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

 

posted @ 2020-12-25 10:13  南宫乘风  阅读(1007)  评论(0编辑  收藏  举报