K8s部署springboot
1 Docker部署SpringBoot1.1 部署(1)springboot项目概述(2) 打成jar包(3) 上传至Docker服务器,制作DockerfileFROM java:8ADD springboot-web-1.0-SNAPSHOT.jarapp.jarRUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeRUN e
·
1 Docker部署SpringBoot
1.1 部署
(1) springboot项目概述
(2) 打成jar包
(3) 上传至Docker服务器,制作Dockerfile
FROM java:8
ADD springboot-web-1.0-SNAPSHOT.jar app.jar
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone
RUN bash -c 'touch /app.jar'
EXPOSE 9000
ENTRYPOINT ["java","-jar","/app.jar"]
(4) 制作镜像
docker build -f Dockerfile -t 192.168.38.100/library/springboot:v1.0 .
(5) 运行容器
docker run -d -p 9000:9000 --name springboot 192.168.38.100/library/springboot:v1.0
(6) 访问
1.2 缺点
(1) 如果当前springboot容器挂了或Dokcer服务器挂了当前项目无法访问。
(2) 如果把当前项目部署到多台Docker服务器上,重复步骤太多,又要手动实现负载均衡。
2 K8s 部署SpringBoot
2.1 环境概述
192.168.38.50 master
192.168.38.51 node1
192.168.38.52 node2
192.168.38.100 harbor/nfs(数据持久卷,搭建过程略)
2.2 nfs-springboot-pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: nfs-springboot-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
nfs:
path: "/usr/local/kubernetes/volumes/logs/"
server: 192.168.38.100
readOnly: false
#创建pv
kubectl apply -f nfs-springboot-pv.yaml
#查看
kubectl get pv
2.3 springboot-pvc.yaml
vim springboot-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-pvc-springboot
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 5Gi
kubectl apply -f springboot-pvc.yaml
2.4 springboot-deployment.yaml
vim springboot-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: springboot
name: springboot
spec:
replicas: 1
selector:
matchLabels:
app: springboot
template:
metadata:
labels:
app: springboot
spec:
containers:
- name: springboot
image: 192.168.38.100/library/springboot:v1.0
imagePullPolicy: IfNotPresent
volumeMounts:
- mountPath: /logs
name: springboot-volumes
volumes:
- name: springboot-volumes
persistentVolumeClaim:
claimName: nfs-pvc-springboot
---
apiVersion: v1
kind: Service
metadata:
labels:
app: springboot
name: springboot
spec:
ports:
- port: 9000
protocol: TCP
targetPort: 9000
selector:
app: springboot
type: ClusterIP
---
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: springboot
spec:
rules:
- host: rosh.springboot.com
http:
paths:
- backend:
serviceName: springboot
servicePort: 9000
kubectl apply -f springboot-deployment.yaml
#查看pod,svc
kubectl get pod
kubectl get svc
2.5 通过ingress访问
查看nfs日志挂载
3 实验
3.1 当部署服务器挂了
(1) 查看运行节点
(2) 关闭node1节点
3.2 动态扩容
访问时发现已经是负载均衡了:
多访问几次查看挂载日志:
更多推荐
已为社区贡献1条内容
所有评论(0)