当前位置: 首页 > news >正文

quarkus 生产环境与k8s集成总结

quarkus 生产环境与k8s集成总结

大纲

  • 基础准备
  • quarkus2.13.7脚手架工程配置
  • GraalVM-java11 安装配置
  • 配置maven3.8.7
  • linux环境下云原生二进制文件打包环境搭建
  • 编译运行quarkus二进制文件
  • quarkus二进制文件制作为docker镜像并运行
  • 使用k8s部署quarkus二进制文件

基础准备

生产环境:

  • 1 ubuntu18.04
  • 2 quarkus2.13.7.Final项目(my-quarkus-demo)
  • 3 graalvm-ce-java11-linux-amd64-22.3.0.tar.gz
  • 4 maven-3.8.7
  • 5 docker环境
  • 6 kubernetes环境

quarkus2.13.7脚手架工程配置

关于quarkus2.13.7脚手架工程配置可以直接参考上一篇文章 《quarkus 搭建与基础开发环境配置总结》

这里默认已经存在一个可以运行的my-quarkus-demo项目,并且 docker环境 kubernetes环境 都安装完成

GraalVM-java11 安装配置

quarkus2.13.7.Final (my-quarkus-demo)项目

  • 1 需要java版本11

  • 2 需要GraalVM版本为22.3.0

    GraalVM下载地址: https://github.com/graalvm/graalvm-ce-builds/releases/tag/vm-22.3.0

GraalVM 选择对应的版本

在这里插入图片描述

native-image 注意需要和GraalVM 版本 平台一致

在这里插入图片描述

linux环境

  • graalvm-ce-java11-linux-amd64-22.3.0.tar.gz
  • native-image-installable-svm-java11-linux-amd64-22.3.0.jar

GraalVM 添加jre

创建一个空的文件夹ops 解压graalvm-ce-java11-linux-amd64-22.3.0.tar.gz

root@note4:/ops# tar -zxvf graalvm-ce-java11-linux-amd64-22.3.0.tar.gz

使用jlink 添加jre

./bin/jlink --module-path jmods --add-modules   com.oracle.graal.graal_enterprise,com.oracle.svm_enterprise.ml_dataset,com.oracle.svm.svm_enterprise,com.oracle.truffle.regex,com.oracle.truffle.truffle_nfi,com.oracle.truffle.truffle_nfi_libffi,java.base,java.compiler,java.datatransfer,java.desktop,java.instrument,java.logging,java.management,java.management.rmi,java.naming,java.net.http,java.prefs,java.rmi,java.scripting,java.security.jgss,java.security.sasl,java.se,java.smartcardio,java.sql,java.sql.rowset,java.transaction.xa,java.xml.crypto,java.xml,jdk.accessibility,jdk.attach,jdk.charsets,jdk.compiler,jdk.crypto.cryptoki,jdk.crypto.ec,jdk.dynalink,jdk.editpad,jdk.hotspot.agent,jdk.httpserver,jdk.internal.ed,jdk.internal.jvmstat,jdk.internal.le,jdk.internal.opt,jdk.internal.vm.ci,jdk.internal.vm.compiler,jdk.internal.vm.compiler.management,jdk.internal.vm.compiler.truffle.jfr,jdk.jartool,jdk.javadoc,jdk.jcmd,jdk.jconsole,jdk.jdeps,jdk.jdi,jdk.jdwp.agent,jdk.jfr,jdk.jlink,jdk.jshell,jdk.jsobject,jdk.jstatd,jdk.localedata,jdk.management.agent,jdk.management.jfr,jdk.management,jdk.naming.dns,jdk.naming.ldap,jdk.naming.rmi,jdk.net,jdk.pack,jdk.rmic,jdk.scripting.nashorn,jdk.scripting.nashorn.shell,jdk.sctp,jdk.security.auth,jdk.security.jgss,jdk.unsupported.desktop,jdk.unsupported,jdk.xml.dom,jdk.zipfs,org.graalvm.js.scriptengine,org.graalvm.locator,org.graalvm.sdk,org.graalvm.truffle --output jre

在这里插入图片描述

添加环境变量

vi /etc/profile添加环境变量
export JAVA_HOME=/ops/graalvm-ce-java11-22.3.0
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=$JAVA_HOME/jresource /etc/profile

在这里插入图片描述

安装native-image

使用 gu install 命令安装native-image 注意需要在 native-image.jar 所在文件夹执行命令

gu install -L native-image-installable-svm-java11-linux-amd64-22.3.0.jar

在这里插入图片描述

native-image --version
GraalVM 22.3.0 Java 11 CE (Java Version 11.0.17+8-jvmci-22.3-b08)
表示安装完成

到此GraalVM环境配置完成

配置maven3.8.7

下载maven-3.8.7

https://archive.apache.org/dist/maven/maven-3/3.8.7/binaries/apache-maven-3.8.7-bin.tar.gz

创建/ops/repository 文件夹作为本地仓库

解压maven3.8.7 修改setting.xml

指定本地仓库
<localRepository>/ops/repository</localRepository>配置镜像仓库<mirror><id>huaweicloud</id><name>huaweicloud maven</name><mirrorOf>*</mirrorOf><url>https://mirrors.huaweicloud.com/repository/maven/</url></mirror>

在这里插入图片描述

添加环境变量

vi /etc/profile
添加环境变量
export PATH=/ops/apache-maven-3.8.7/bin:$PATHsource /etc/profile

在这里插入图片描述

到此maven环境配置完成

linux环境下云原生二进制文件打包环境搭建

ubuntu环境GraalVM静态编译注意事项

  • 1 安装 gcc build-essential libz-dev zlib1g-dev
  • 2 指定quarkus.native.builder-image graalvm路径

ubuntu环境GraalVM静态编译 可参考 《Java GraalVM 环境搭建 class文件springboot项目 静态编译二进制文件 入门就看这一篇》

安装 gcc build-essential libz-dev zlib1g-dev 编译工具

安装编译工具
apt-get install gcc
apt-get install zlib1g-dev
apt-get install build-essential libz-dev 

缺乏相关编译工具quarkus -Pnative 编译时会出现一些如下错误

缺乏 gcc
Error: Default native-compiler executable 'gcc' not found via environment variable PATH
Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception
Error: Image build request failed with exit status 1

在这里插入图片描述

缺乏 zlib1g-dev 
1. It appears as though libz.a is missing. Please install it.

在这里插入图片描述

缺乏 libz-dev 
1. It appears as though libstdc++.a is missing. Please install it.

在这里插入图片描述

指定quarkus.native.builder-image graalvm路径

linux 环境打包需要指定quarkus.native.builder-image路径

mvn package  -Dquarkus.native.builder-image=/ops/graalvm-ce-java11-22.3.0/bin

也可以在application.properties写入配置

quarkus.native.builder-image=/ops/graalvm-ce-java11-22.3.0/bin

否则报错

SRCFG00011: Could not expand value platform.quarkus.native.builder-image in property quarkus.native.

在这里插入图片描述

编译运行quarkus二进制文件

使用git clone 拉取项目 my-quarkus-demo (quarkus2.13.7.Final)

在这里插入图片描述

编译项目 第一次会下载大量的jar

执行 
mvn clean install

编译生成二进制文件

mvn clean package -Pnative -Dquarkus.native.builder-image=/ops/graalvm-ce-java11-22.3.0/bin

在这里插入图片描述

**编译成功 得到my-quarkus-demo-1.0.0-SNAPSHOT-runner **

在这里插入图片描述

在这里插入图片描述

运行程序 看到成功访问

在这里插入图片描述

quarkus二进制文件制作为docker镜像并运行

创建Dockerfile 可参考项目 src/main/docker 下面的各种Dockerfile

创建一个文件夹保存数据

  • Dockerfile
  • my-quarkus-demo-1.0.0-SNAPSHOT-runner

Dockerfile内容如下

FROM ubuntu:18.04
MAINTAINER liuyijiang
WORKDIR "/data/service"
EXPOSE 8848
COPY my-quarkus-demo-1.0.0-SNAPSHOT-runner my-quarkus-demo-1.0.0-SNAPSHOT-runner
CMD ["./my-quarkus-demo-1.0.0-SNAPSHOT-runner", "-Dquarkus.http.host=0.0.0.0"]

使用my-quarkus-demo-1.0.0-SNAPSHOT-runner 创建镜像

在这里插入图片描述

运行镜像 成功
在这里插入图片描述

使用k8s部署quarkus二进制文件

推送quarkus镜像到阿里云私库

将创建的my-quarkus-demo镜像推送到阿里云私库

阿里云私库配置见文章 《阿里云docker私库使用总结》

将镜像推送到私库
docker tag my-quarkus-demo registry.cn-hangzhou.aliyuncs.com/jimliu/my-quarkus-demo
docker push registry.cn-hangzhou.aliyuncs.com/jimliu/my-quarkus-demo:latest

k8s部署quarkus应用

deploy.yaml 文件内容如下

apiVersion: apps/v1
kind: Deployment
metadata:name: my-quarkus-demo
spec:replicas: 1selector:matchLabels: app: my-quarkus-demotemplate:metadata:labels:app: my-quarkus-demospec:imagePullSecrets:- name: myaliyunsecretcontainers:- name: my-quarkus-demo-runtime image: registry.cn-hangzhou.aliyuncs.com/jimliu/my-quarkus-demo:latestimagePullPolicy: Alwaysports: #定义容器端口列表- containerPort: 8848 protocol: TCP name: http ---apiVersion: v1
kind: Service
metadata:name: my-quarkus-demo-service
spec:ports:- protocol: TCPport: 18848targetPort: 8848nodePort: 28848name: httpselector:app: my-quarkus-demotype: NodePort

kubectl apply -f deploy.yaml 部署应用

集群内部访问

在这里插入图片描述

外部访问

在这里插入图片描述

相关文章:

quarkus 生产环境与k8s集成总结

quarkus 生产环境与k8s集成总结 大纲 基础准备quarkus2.13.7脚手架工程配置GraalVM-java11 安装配置配置maven3.8.7linux环境下云原生二进制文件打包环境搭建编译运行quarkus二进制文件quarkus二进制文件制作为docker镜像并运行使用k8s部署quarkus二进制文件 基础准备 生产…...

蓝桥杯训练day2

day21.二分(1)789. 数的范围(2)四平方和&#xff08;1&#xff09;哈希表做法&#xff08;2&#xff09;二分做法(3)1227. 分巧克力&#xff08;4&#xff09;113. 特殊排序(5)1460. 我在哪&#xff1f;2.双指针(1)1238. 日志统计(2)1240. 完全二叉树的权值&#xff08;3&#…...

为什么99%的程序员都做不好SQL优化?

连接层 最上层是一些客户端和链接服务&#xff0c;包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念&#xff0c;为通过认证安全接入的客户端提供线程。同样…...

Jenkins最新版安装调试

清理旧的jenkins&#xff1a; find / -name jenkins* 一项一项的清理&#xff1a;rm -rf /var/log/jenkins* 下载最新版jenkins镜像&#xff1a;jenkins-redhat-stable安装包下载_开源镜像站-阿里云 上传到服务器&#xff1a; 安装命令&#xff1a; yum install -y jenkins…...

简略说一下go的sync.RWMutex锁

在简略的说之前&#xff0c;首先要对RW锁的结构有一个大致的了解 type RWMutex struct {w Mutex // 写锁互斥锁&#xff0c;只锁写锁&#xff0c;和读锁无关writerSem uint32 // sema锁--用于“写协程”排队等待readerSem uint32 // sema锁--用于“读协程”排队…...

软考马上要报名了,出现这些问题怎么办?

目前&#xff0c;四川、山东、山西、辽宁、河北等地已经率先发布了2023年上半年软考报名通知。 四川&#xff1a;2023年3月13日-4月4日 山东&#xff1a;2023年3月17日9:00-4月3日16:00 山西&#xff1a;2023年3月14日9:00-3月28日11:00 辽宁&#xff1a;2023年3月14日8:30…...

单链表(增删查改)

目录一、什么是单链表&#xff1f;二、单链表的增删查改2.1 结构体变量的声明2.2 申请新结点2.2 链表的头插2.3 链表的尾插2.4 链表的头删2.5 链表的尾删2.6 链表的查找2.7 链表的任意位置后面插入2.8 链表的任意位置后面删除2.9 链表的销毁2.10 链表的打印三、代码汇总3.1 SLi…...

端口复用(bind error: Address already in use 问题)

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 端口复用专栏&#xff1a;《Linux从小白到大神》《网络编程》 在前面讲解TCP状态转换中提到过一个2MSL…...

数字化引领乡村振兴,VR全景助力数字乡村建设

一、数字乡村建设加速经济发展随着数字化建设的推进&#xff0c;数字化农业产业正在成为农业产业发展的主导力量&#xff0c;因此数字化技术赋予农业产业竞争力的能力不可小觑。数字化乡村建设背景下&#xff0c;数字化信息技术将全面改造升级农村产业&#xff0c;从农业、养殖…...

【数据结构入门】-链表之双向循环链表

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【数据结构初阶&#xff08;C实现&#xff09;】 文章目录链表初始化打印链表尾插尾删新建一个节点头插头删查找在pos之前插入*删除pos位…...

Jenkins自动化部署入门

Jenkins自动化部署入门 一、简介 Jenkins是一个开源软件项目&#xff0c;是基于Java开发的一种持续集成工具&#xff0c;用于监控持续重复的工作&#xff0c;旨在提供一个开放易用的软件平台&#xff0c;使软件的持续集成变成可能。 Jenkins自动化部署实现原理 二、Jenkins部…...

Springboot 读取模板excel信息内容并发送邮件, 并不是你想想中的那么简单

Springboot 读取模板excel信息内容并发送邮件 背景技术选型搭建过程数据加密隐藏问题暴露背景追溯解决背景 在我们日常开发中, 会遇到这样一种场景, 就是读取表格中的数据, 并将数据以附件的形式通过邮箱发送到表格中的每个人 即: excel 读取 excel 写入 发送邮件(携带附件), 例…...

蓝桥杯真题31日冲刺 |第一天

蓝桥杯真题31日冲刺 |第一天 一&#xff1a;完全平方数 题目&#xff1a;[链接](完全平方数 - 蓝桥云课 (lanqiao.cn)) 思路&#xff1a; 将 每个 完全平方数都 消掉&#xff0c;剩下的就是 不能构成平方的数 以12 为例&#xff1a; 所以 12 只要再 乘个三 即可满足 代…...

STM32开发(18)----CubeMX配置RTC

CubeMX配置RTC前言一、什么是RTC&#xff1f;RTC时钟源RTC备份域二、实验过程1.CubeMX配置2.代码实现3.实验结果总结前言 本章介绍使用STM32CubeMX对RTC进行配置的方法&#xff0c;RTC的原理、概念和特点&#xff0c;配置各个步骤的功能&#xff0c;并通过实验方式验证。 一、…...

Qt 单例模式第一次尝试

文章目录摘要单例模式如何使用Qt 的属性系统总结关键字&#xff1a; Qt、 单例、 的、 Q_GLOBAL_STATIC、 女神节摘要 世界上第一位电脑程序设计师是名女性&#xff1a;Ada Lovelace (1815-1852)是一位英国数学家兼作家&#xff0c;她是第一位主张计算机不只可以用来算数的人…...

C语言--一维数组

数组概念 数组&#xff1a;是一种构造数据类型&#xff0c;用以处理批量的同种类型的数据。 主要特点&#xff1a;数据量大 &#xff0c;类型相同 一维数组的定义 语法&#xff1a; 类型说明符 数组名[整型常量表达式]&#xff1b; 注意&#xff1a; 方括号里面的内容用于指…...

DataGear 4.5.1 发布,数据可视化分析平台

DataGear 4.5.1 发布&#xff0c;严重 BUG 修复&#xff0c;具体更新内容如下&#xff1a; 修复&#xff1a;修复SQL数据集对于DB2、SQLite等数据源预览时会报错的BUG&#xff1b;修复&#xff1a;修复系统对于MySQL、MariaDB等数据源中无符号数值类型有时报错的BUG&#xff1…...

Springboot——@valid 做字段校验和自定义注解

文章目录前言注意实现测试环境验证自带的注解自定义valid注解自定义注解和处理类创建参数接收类&#xff0c;并增加字段注解接口中使用自测环节正常测试异常测试自定义全局异常监听扩展递归参数下valid不识别的坑前言 再项目开发中&#xff0c;针对前端传递的参数信息&#xf…...

c语言基础练习题详解

&#x1f49e;&#x1f49e; 1.C语言程序的基本单位是&#xff08;C&#xff09;。 A&#xff0e;程序行 B&#xff0e; 语句 C&#xff0e; 函数 D&#xff0e;字符 &#x1f49e;&#x1f49e; 2.已知各变量的类型说明如下&#xff1a; int m6,n,a,b; unsigned long w8;…...

C语言设计模式:实现简单工厂模式和工程创建

目录 一&#xff0c;设计模式概念引入 ① 什么是设计模式 ② 什么是类和对象 ③ 什么是工厂模式 二&#xff0c;C语言工厂模式的实现 ① 普通类和对象的代码实现 ② 工厂模式代码实现 ● cat.c ● dog.c ● person.c ● animal.h ● mainpro.c ● 完善mainpro.c …...

3.6日报

今天进行3.0信号整理工作 做官网后台技术文档 了解grpc gRPC是rpc框架中的一种&#xff0c;是rpc中的大哥 是一个高性能&#xff0c;开源和通用的RPC框架&#xff0c;基于Protobuf序列化协议开发&#xff0c;且支持众多开发语言。 面向服务端和协议端&#xff0c;基于http…...

中文代码88

PK 嘚釦 docProps/PK 嘚釦|,g z docProps/app.xml漅AN??駠(髂v诖m岼侸 魣,g踃$秂D廋Qvf漶x莗笳w?:瘜^?俍欶辇2}?睧汎 t#:?效7治XtA鏊?羄鈋嫿饄攗Tv契"D桷撵vJ鉂?闌 Jg??浱?樱沲gic鋹峡?sū窛葻?]迾?9卑{艏 rk\?洺萹啰N?W??2&quo…...

ElasticSearch 基础(五)之 映射

目录前言一、映射&#xff08;Mapping&#xff09;简介二、动态映射&#xff08;Dynamic mapping&#xff09;1、动态字段映射1.1、日期检测1.1.1、禁用日期检测1.1.2、自定义检测到的日期格式1.2、数值检测2、动态模板三、显示映射&#xff08;Explicit mapping&#xff09;1、…...

【C语言督学训练营 第二天】C语言中的数据类型及标准输入输出

文章目录一、前言二、数据类型1.基本数据类型①.整形②.浮点型③.字符型2.高级数据类型3.数据分类①.常量②.变量三、标准输入输出1.scanf2.printf四、进制转换1.进制转换简介2.十进制转其他进制3.其他进制转换五、OJ网站的使用一、前言 王道2024考研408C语言督学营第二天&…...

重资产模式和物流网络将推动京东第四季度利润率增长

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 强劲的2022年第三季度财务业绩 2022年11月18日&#xff0c;京东&#xff08;JD&#xff09;公布了2022年第三季度财务业绩&#xff0c;净收入为2435亿元人民币&#xff0c;增长了11.4%。净服务收入为465亿元人民币&#xf…...

【新】EOS至MES的假捻报工数据导入-V2.0版本

假捻自动线的数据和MES没有进行对接,直接入库至EOS。 因此可信平台上缺少这部分的报工数据,需要把EOS的入库数据导出,整理成报工数据,导入到MES,然后通过定时任务集成到可信平台。 MES这边的报工数据整理,主要是添加订单明细ID,和完工单号。 订单明细ID(根据批次号和…...

python甜橙歌曲音乐网站平台源码

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python音乐 获取完整源码源文件说明文档配置教程等 在虚拟环境下输入命令“python manage.py runserver”启动项目&#xff0c;启动成功后&#xff0c;访问“http://127.0.0.1:5000”进入甜橙音乐网首页&#xff0c;如图1所…...

docker imageID计算

Image ID是在本地由Docker根据镜像的描述文件计算的&#xff0c;并用于imagedb的目录名称 docker镜像id都保存在/var/lib/docker/image/overlay2/imagedb/content/sha256下面&#xff0c;都是一些以sha256sum计算文件内容得出的哈希值的文件。 #ls /var/lib/docker/image/ove…...

借助媛如意让ROS机器人turtlesim画出美丽的曲线-云课版本

首先安装并打开猿如意其次打开蓝桥云课ROS并加入课程在猿如意输入问题得到答案在蓝桥云课ROS验证如何通过turtlesim入门ROS机器人您可以通过以下步骤入门ROS机器人&#xff1a;安装ROS&#xff1a;您需要安装ROS&#xff0c;可以在ROS官网上找到安装指南。安装turtlesim&#x…...

小区业主入户安检小程序开发

小区业主入户安检小程序开发 可针对不同行业自定义安检项目&#xff0c;线下安检&#xff0c;线上留存&#xff08;安检拍照/录像&#xff09;&#xff0c;提高安检人员安检效率 功能特性&#xff0c;为你介绍小区入户安检系统的功能特性。 小区管理;后台可添加需要安检的小区…...

wordpress伪静态化后百度地图显示404错误页面/seo服务是什么意思

看老男孩老师教你用linux技能追求女孩子实践1.首先要确定想发的情书内容&#xff0c;也可以准备多封每天一封。2、注册邮件账号或使用已有的&#xff0c;配置Linux客户端邮件发送功能[rootoldboy ~]# tail -1 /etc/mail.rc set fromxiaxia_5321163.com smtpsmtp.163.comsmtp-au…...

网站建设需要资料/营销方案案例范文

MD5的全称是Message-Digest Algorithm 5&#xff0c;在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明&#xff0c;经MD2、MD3和MD4发展而来。 MD5将任意长度的“字节串”变换成一个128bit的大整数&#xff0c;并且它是一个不可逆的字符串变换算法&#xff0…...

武警部门建设网站的好处/河南郑州最近的热搜事件

背景&#xff1a; 硬盘分区方式&#xff1a;MBR 硬盘容量256&#xff0c;Windows 100&#xff0c;Ubuntu 156&#xff0c;其中主分区安装的是Windows&#xff0c;Ubuntu安装在逻辑分区上&#xff0c;文件系统为Ext4&#xff0c;整个Ubuntu就挂载在根目录/下&#xff0c;没有交换…...

简单几步为wordpress加上留言板/做网站怎么赚钱

模板介绍 一份高质量的PPT模板&#xff0c;可以让你在日常的工作中展示自我、脱颖而出、去赢得更多机会&#xff0c;今天小编分享一份精美的黑白高端商务报告PPT模板 PPT模板名称&#xff1a;黑白高端商务报告PPT模板&#xff0c;模板编号&#xff1a;P83481&#xff0c;大小…...

网站 只做程序/百度推荐现在为什么不能用了

使用Python可以很容易地创建一个AI。首先&#xff0c;您需要了解Python的基本编程概念&#xff0c;这可以通过编写简单的程序&#xff0c;如计算器&#xff0c;来实现。其次&#xff0c;您需要学习如何使用Python的机器学习库&#xff0c;例如scikit-learn和TensorFlow&#xf…...

网站建设手机端管网/腾讯广告推广平台入口

题目描述&#xff1a; 一个 n 行 n 列的蛇形矩阵可由如下方法生成&#xff1a; 从矩阵的左上角&#xff08;第 1 行第 1 列&#xff09;出发&#xff0c;初始时向右移动&#xff1b;如果前方是未曾经过的格子&#xff0c;则继续前进&#xff0c;否则右转&#xff1b;重复上述操…...