K8s部署springboot

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 动态扩容

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
访问时发现已经是负载均衡了:
在这里插入图片描述
在这里插入图片描述
多访问几次查看挂载日志:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
k8s是一个用于容器编排和管理的开源平台,而Spring Boot是一个用于构建独立的、基于Spring的Java应用程序的框架。使用k8s部署Spring Boot应用程序可以提供更好的可伸缩性、高可用性和容错性。 引用中提到了使用k8s来快速部署一个Spring Boot项目,并体验k8s和实际项目的结合。这意味着通过k8s,你可以轻松地将你的Spring Boot应用程序部署到一个分布式系统中。 引用指出,尽管已经了解了如何通过其他方式部署Spring Boot应用程序,但是了解如何通过k8s部署仍然是必要的。因为k8s提供了许多功能和特性,例如自动扩展、负载均衡和故障恢复等,这些功能可以大大简化和改善应用程序的部署和管理。 引用提到了k8s部署Spring Boot项目的过程是相对简单的,目前可能只是半手动部署,但后续可以引入CICD(持续集成和持续部署)实现真正的自动化部署。这意味着你可以使用k8s和CICD工具来自动化构建、测试和部署Spring Boot应用程序,从而提高开发和部署的效率。 综上所述,通过k8s部署Spring Boot应用程序可以提供更好的可伸缩性、高可用性和容错性,并且可以使用CICD工具实现自动化部署。这将简化和改善应用程序的部署和管理,并提高开发和部署的效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [k8s部署springboot项目](https://blog.csdn.net/qq_34285557/article/details/124460872)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [教你使用k8s部署springboot服务](https://blog.csdn.net/ww2651071028/article/details/129636489)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值