Kubernetes 集群上的部署JAVA 步骤

news/2024/7/24 10:21:38 标签: kubernetes, java, docker

一个基本的 Java 应用程序在 Kubernetes 集群上的部署步骤(使用命令行进行部署):

  1. 编写 Dockerfile

首先,在 Java 应用程序项目根目录下创建一个 Dockerfile 文件。假设你的 Java 项目是使用 Maven 进行构建的,那么你可以创建以下的 Dockerfile 文件:

dockerfile">FROM openjdk:8-jdk-alpine
EXPOSE 8080
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
  1. 在 Docker 中构建映像

在 Dockerfile 所在的目录打开终端,使用如下命令来 build Docker 镜像:

docker build -t myregistry/myapp:latest .

注意:这里的“myregistry”为您的私人 Docker 仓库 URL。

  1. 推送镜像到 Docker 仓库

将刚刚构建的 Docker 镜像上传到Docker 仓库中:

docker push myregistry/myapp:latest
  1. 编写部署文件

编写 Kubernetes 的 YAML 文件描述所需的资源对象。例如以下示例文件:

apiVersion: apps/v1 # kubernetes API版本号
kind: Deployment # 资源类型:Deployment
metadata:
  name: myapp # 资源名称
spec:
  selector:
    matchLabels:
      app: myapp # 使用标签选择器
  replicas: 3 # 设置副本数为3个
  template:
    metadata:
      labels:
        app: myapp # 标记 Pod 的标签
    spec:
      containers:
        - name: myapp # 容器名称
          image: myregistry/myapp:latest # 指定容器镜像
          ports:
            - containerPort: 8080 # 开放端口号
---
apiVersion: v1 # kubernetes API版本
kind: Service # 资源类型:Service
metadata:
  name: myapp # 资源名称
spec:
  type: LoadBalancer # 暴露 Service 的类型为 LoadBalancer,通过外部负载均衡器访问
  ports:
    - port: 80 # 容器对外的端口号
      targetPort: 8080 # 容器内的实际端口号
      protocol: TCP # 暴露的协议为TCP
  selector:
    app: myapp # 标记应用程序的标签
  1. Kubernetes 集群中创建资源对象

使用kubectl命令行工具来在Kubernetes集群中创建刚才定义的资源对象。在目录中运行以下命令:

kubectl apply -f myapp.yaml
  1. 获取服务 URL

等待Pod状态恢复正常后,可以使用以下命令获取服务URL:

minikube service myapp --url

上述步骤是一个基本的使用Kubernetes部署Java程序的例子,您需要根据实际情况进行调整和修改,例如添加ConfigMap、使用 Volume 等属性。。


http://www.niftyadmin.cn/n/355773.html

相关文章

【技术】多端能力服务统一是一种关键的技术和架构

多端能力服务统一是一种关键的技术和服务架构,旨在为不同终端设备提供一致的用户体验和功能。通过采用前端和后端技术的组合,如响应式 Web 设计、PWA、跨平台移动应用开发框架、RESTful API、GraphQL、WebSocket、Serverless 架构和微服务架构&#xff0…

【精】MySQL5.7没有row_number()函数如何组内排序和求分组topN

当我们遇到一些需求,比如组内分组排序,分组topN等,很容易想到用row_number()函数 ​在MySQL8.0版本中支持row_number函数,本文不做讨论,如果是MySQL5.7版本,要怎么写SQL呢? 测试表:…

Mybatis intercepter 扩展点生效原理

1、 MybatisSqlSessionFactoryBean 通过 setPlugins 添加插件 2、buildSqlSessionFactory() 给Configuration添加插件 if (!isEmpty(this.plugins)) {Stream.of(this.plugins).forEach(plugin -> {targetConfiguration.addInterceptor(plugin);LOGGER.debug(() -> &…

Flink用户自定义连接器(Table API Connectors)学习总结

文章目录 前言背景官网文档概述元数据解析器运行时的实现 自定义扩展点工厂类Source扩展Sink和编码与解码 自定义flink-http-connectorSQL示例具体代码pom依赖HttpTableFactoryHttpTableSourceHttpSourceFunctionHttpClientUtil 最后参考资料 前言 结合官网文档和自定义实现一…

【ChatgGPT】ChatgGPT生成Excel提取字符公式

参考视频:https://edu.csdn.net/learn/38346/613668 问题场景:网站用户发帖统计excel表中,C,D,E.F列有每个用户每周发布的文章数量,只有每周发布文章都至少2篇及以上的才有奖品。如何写excel公式来找出符合条件的人? 1.下载所需…

es 二、核心概念

目录 Nrt cluster集群概念 node节点 Document 文档 Index 索引 Field字段 Type 类型 shard分片 Replica shard副本 数据库和es概念对比 Nrt 写入一秒后就能搜到 cluster集群概念 一台机器启动一个实例即可,多个组成 node节点 一个实例一个节点 Documen…

AttributeError: module ‘gym‘ has no attribute ‘benchmark_spec‘解决办法

报错如下: 我安装的gym版本是gym-0.26.2 报错原因:gym版本太高了,需要降低版本 pip install gym0.9.0 -i https://pypi.douban.com/simple

机器学习基础(二)-具体分类模型【未完待续】

一、感知机 占坑 二、KNN kd树的搜索过程到底是怎么进行的? - 月来客栈的文章 - 知乎