在Kubernetes中部署Java应用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Kubernetes中部署Java应用相关的知识,希望对你有一定的参考价值。
1.环境准备
安装jdk1.8
安装maven
2.部署java应用
首先下载demo:https://github.com/lizhenliang/tomcat-java-demo
解压
unzip tomcat-java-demo-master.zip
将数据库脚本导入数据库:/root/tomcat-java-demo-master/db/tables_ly_tomcat.sql
修改配置文件application.yml
vim /root/tomcat-java-demo-master/src/main/resources/application.yml
打包(打包的时间可能会有点长奥)
cd tomcat-java-demo-master
mvn clean package -Dmaven.test.skip=true
打包完成后会生成target目录
构建项目镜像
cd tomcat-java-demo-master
docker build -t 10.2.3.90/test/java-demo .
将镜像推送到本地的私有仓库
docker login 10.2.3.90
docker push 10.2.3.90/test/java-demo:latest
将镜像部署到k8s中
由于访问的是私有仓库,需要生成密钥secret(此步骤非常关键)
kubectl create secret docker-registry regsecret --docker-server=10.2.3.90 --docker-username=admin --docker-password=123456
其中:
regsecret: 指定密钥的键名称, 可自行定义
--docker-server: 指定docker仓库地址
--docker-username: 指定docker仓库账号
--docker-password: 指定docker仓库密码
--docker-email: 指定邮件地址(选填)
在master、node1、node2分别添加私服地址
vim /etc/docker/daemon.json
"insecure-registries": [
"10.2.3.90"
]
service docker restart
生成一个模板
kubectl create deployment java-demo --image=10.2.3.90/test/java-demo:latest --dry-run -o yaml >deploy.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: 10.2.3.90/test/java-demo:latest
name: java-demo
resources:
status:
修改后的deploy.yaml文件如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: java-demo
name: java-demo
spec:
replicas: 3
selector:
matchLabels:
app: java-demo
template:
metadata:
labels:
app: java-demo
spec:
containers:
- image: 10.2.3.90/test/java-demo:latest
name: java-demo
imagePullSecrets: # 获取镜像需要的用户名密码
- name: regsecret
应用一下
kubectl apply -f deploy.yaml
查看Pod
kubectl get pods
查看应用是否已经启动
kubectl logs java-demo-54bd9c78b9-9c88k
如果需要更新镜像的话可以使用以下命令(只有出现不是running的时候才使用)
kubectl delete pod 镜像的名字
通过service可以让用户也可以访问应用
kubectl expose deployment java-demo --port=80 --target-port=8080 --type=NodePort -o yaml --dry-run >svc.yaml
生成的模板信息如下:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
app: java-demo
name: java-demo
spec:
ports:
- port: 80
protocol: TCP
targetPort: 8080
selector:
app: java-demo
type: NodePort
status:
loadBalancer:
应用一下
kubectl apply -f svc.yaml
查看pod和service
kubectl get pods,svc
查看pod部署的节点
kubectl get pods -o wide
此时可以访问应用了,node1或者node2的ip加30667端口号就可以了,此处使用node1的ip
http://10.2.3.192:30667/
至此在Kubernetes中部署Java应用已经完成。
以上是关于在Kubernetes中部署Java应用的主要内容,如果未能解决你的问题,请参考以下文章
初识Kubernetes(K8s):从一个单机部署实现Java Web应用例子开始