在Kubernetes(k8s)中部署Java应用
目录
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平台
人生得意须尽欢,莫使金樽空对月。 天生我材必有用,千金散尽还复来。