k8s 部署springboot

本文介绍了如何在Kubernetes集群中使用VMware搭建环境,包括部署SpringBootDocker镜像,创建Deployment和Pod,设置Service以及配置Ingress-nginx以实现外部域名访问。
摘要由CSDN通过智能技术生成

前期准备

  • k8s集群,略(这里是vmware搭建,master节点ip 192.168.19.10)
  • springboot工程镜像,略(这里使用阿里云镜像)

附springboot工程的Dockerfile,端口8080

FROM openjdk:11
RUN mkdir /config
COPY *.jar /app.jar
COPY *.properties /config/application.properties
CMD ["--server.port=8080"]
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

部署pod

新建deployment配置文件

springboot-dep.yml

containerPort: 8080 为springboot端口号

apiVersion: apps/v1
kind: Deployment
metadata:
  name: java-demo-deployment
spec:
  selector:
    matchLabels:
      app: java-demo
  replicas: 2
  template:
    metadata:
      labels:
        app: java-demo
    spec:
      containers:
      - name: java-demo-ctr
        image: registry.cn-shanghai.aliyuncs.com/qgt/qgt-public:1.1
        ports:
        - containerPort: 8080
        resources:
          limits:
            memory: "500Mi"
            cpu: "100m"

创建pod

kubectl apply -f springboot-dep.yml

创建后查看pod(稍等几秒,需要从阿里云ACR拉镜像)

kubectl get pod

在这里插入图片描述

部署service

新建service配置文件

springboot-srv.yml

targetPort: 8080 是pod端口号

port: 8080 是service k8s集群内部端口号,使用service的虚拟的cluster-ip访问

nodePort: 31080 是对外暴露的端口号,使用宿主机ip访问

apiVersion: apps/v1
apiVersion: v1
kind: Service
metadata:
  labels:
   app: java-demo
  name: java-demo-deployment
spec:
  ports:
  - port: 8080
    name: java-demo-service
    protocol: TCP
    targetPort: 8080
    nodePort: 31080
  selector:
    app: java-demo
  type: NodePort

创建service

kubectl apply -f springboot-srv.yml

创建service后查看

kubectl get service

在这里插入图片描述

测试-service NodePort访问

测试成功
在这里插入图片描述

部署ingress-nginx

安装ingress-nginx

kubectl apply -f http://manongbiji.oss-cn-beijing.aliyuncs.com/ittailkshow/k8s/download/ingress-nginx-1.5.1.yaml

查看ingress-nginx service

注意对外暴露的端口号 31576

kubectl get svc -A

在这里插入图片描述

新建springboot ingress配置文件

springboot-ingress-domain.yml,

内部引用springboot service:java-demo-deployment。端口号是springboot service的集群内端口号

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: springboot-ingress-domain
  annotations:
    #直接映射根路径
    ingress.kubernetes.io/rewrite-target: /
spec:
  ingressClassName: nginx
  rules:
    - host: java.demo.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: java-demo-deployment
                port:
                  number: 8080

创建springboot ingress

kubectl apply -f springboot-ingress-domain.yml

查看ingress

kubectl get ingress

在这里插入图片描述

宿主机(windows)配置域名java.demo.com

在这里插入图片描述

测试-ingress域名

端口号31576是ingress-nginx service的对外暴露端口
在这里插入图片描述

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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值