k8s 以sidecar的模式部署java应用.

编程入门 行业动态 更新时间:2024-10-24 12:29:01

k8s 以sidecar的<a href=https://www.elefans.com/category/jswz/34/1771241.html style=模式部署java应用."/>

k8s 以sidecar的模式部署java应用.

k8s部署java应用

  • 一般模式
  • sidecar 模式
  • 总结

一般模式

  • 将base 镜像和业务jar直接打包到一个新的镜像中. 类似于
  • dockerfile
	FROM openjdk:17.0.3-jre-bullseyeENV LANG en_US.UTF-8RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeWORKDIR /appCOPY ./xxx/build/apps/*.jar /app/
  • k8s
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: demoname: demonamespace: dev
spec:replicas: 1selector:matchLabels:app: demotemplate:metadata:labels:app: demospec:containers:- image: app:latestname: democommand:- "java"args:- "-XX:MaxRAMPercentage=90.0"- "--add-opens"- "java.base/java.lang=ALL-UNNAMED"- "--add-opens"- "java.base/java.io=ALL-UNNAMED"- "--add-opens"- "java.base/java.lang.invoke=ALL-UNNAMED"- "--add-opens"- "java.base/java.lang.reflect=ALL-UNNAMED"- "--add-opens"- "java.base/java.text=ALL-UNNAMED"- "--add-opens"- "java.desktop/java.awt.font=ALL-UNNAMED"- "--add-opens"- "java.base/java.math=ALL-UNNAMED"- "--add-opens"- "java.base/java=ALL-UNNAMED"- "--add-opens"- "java.base/java.nio=ALL-UNNAMED"- "--add-opens"- "java.base/java.security=ALL-UNNAMED"- "--add-opens"- "java.base/java.text=ALL-UNNAMED"- "--add-opens"- "java.base/java.time=ALL-UNNAMED"- "--add-opens"- "java.base/java.util=ALL-UNNAMED"- "--add-opens"- "java.base/jdk.internal.access=ALL-UNNAMED"- "--add-opens"- "java.base/jdk.internal.misc=ALL-UNNAMED"- "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005"- "-jar"- "-Dspring.profiles.active=test"- "-Dserver.port=8080"- "-Duser.timezone=GMT+08"- "-Dfile.encoding=UTF-8"- "demo.jar"livenessProbe:httpGet:path: /actuator/health/livenessport: 8080httpHeaders:- name: Authorizationvalue: 'Basic xxx'initialDelaySeconds: 60timeoutSeconds: 2periodSeconds: 60successThreshold: 1failureThreshold: 10readinessProbe:httpGet:path: /actuator/health/readinessport: 8080httpHeaders:- name: Authorizationvalue: 'Basic xxx'env:- name: LANGvalue: "zh_CN.UTF-8"- name: user.languagevalue: "zh"- name: user.regionvalue: "CN"resources:limits:cpu: 2000mmemory: 2Girequests:cpu: 200mmemory: 256m

sidecar 模式

  • 将业务jar和openjdk镜像分开. 使用 initContainers + volumes 方式放到一个volumes中.
  • dockfile
FROM busybox:latest
COPY ./xxx/build/apps/demo.jar /tmp
  • k8s
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: demoname: demonamespace: test
spec:replicas: 1selector:matchLabels:app: demotemplate:metadata:labels:app: demospec:initContainers:- name: biz-demoimage: app:latestimagePullPolicy: IfNotPresentcommand:- cp- /tmp/demo.jar- /app/demo.jarresources:limits:cpu: '1'memory: 1Girequests:cpu: 200mmemory: 256mvolumeMounts:- mountPath: /appname: jar-volumecontainers:- image: openjdk:17.0.2name: openjdk-demoresources:limits:cpu: 1000mmemory: 1024Mirequests:cpu: 200mmemory: 256mcommand:- "java"args:- "-XX:+UseContainerSupport"- "-XX:InitialRAMPercentage=95.0"- "-XX:MaxRAMPercentage=95.0"- "-XX:+HeapDumpOnOutOfMemoryError"- "-XX:HeapDumpPath=./dump-%t.hprof"- "-XX:+UnlockDiagnosticVMOptions"- "-XX:+UnlockExperimentalVMOptions"- "-XX:-OmitStackTraceInFastThrow"- "-Xlog:gc*=debug:file=./gc-%t.log:utctime,level,tags:filecount=10,filesize=100M"- "-Xlog:jit+compilation=info:file=./jit_compile-%t.log:utctime,level,tags:filecount=10,filesize=10M"- "-Xlog:safepoint=debug:file=./safepoint-%t.log:utctime,level,tags:filecount=10,filesize=10M"- "-XX:+DisableExplicitGC"- "-XX:GuaranteedSafepointInterval=0"- "-XX:+UseCountedLoopSafepoints"- "-XX:StartFlightRecording=disk=true,maxsize=4096m,maxage=3d"- "-XX:FlightRecorderOptions=maxchunksize=128m"- "--add-opens"- "java.base/java.lang=ALL-UNNAMED"- "--add-opens"- "java.base/java.io=ALL-UNNAMED"- "--add-opens"- "java.base/java.lang.invoke=ALL-UNNAMED"- "--add-opens"- "java.base/java.lang.reflect=ALL-UNNAMED"- "--add-opens"- "java.base/java.text=ALL-UNNAMED"- "--add-opens"- "java.desktop/java.awt.font=ALL-UNNAMED"- "--add-opens"- "java.base/java.math=ALL-UNNAMED"- "--add-opens"- "java.base/java=ALL-UNNAMED"- "--add-opens"- "java.base/java.nio=ALL-UNNAMED"- "--add-opens"- "java.base/java.security=ALL-UNNAMED"- "--add-opens"- "java.base/java.text=ALL-UNNAMED"- "--add-opens"- "java.base/java.time=ALL-UNNAMED"- "--add-opens"- "java.base/java.util=ALL-UNNAMED"- "--add-opens"- "java.base/jdk.internal.access=ALL-UNNAMED"- "--add-opens"- "java.base/jdk.internal.misc=ALL-UNNAMED"- "-Dspring.profiles.active=test"- "-Dserver.port=8080"- "-Duser.timezone=GMT+08"- "-Dfile.encoding=UTF-8"- "-Djava.security.egd=file:/dev/./urandom"- "-Dnetworkaddress.cache.ttl=10"- "-jar"- "/app/demo.jar"livenessProbe:httpGet:path: /actuator/health/livenessport: 8080httpHeaders:- name: Authorizationvalue: 'Basic xxx'initialDelaySeconds: 60timeoutSeconds: 2periodSeconds: 60successThreshold: 1failureThreshold: 10readinessProbe:httpGet:path: /actuator/health/readinessport: 8080httpHeaders:- name: Authorizationvalue: 'Basic xxx'env:- name: LANGvalue: "zh_CN.UTF-8"- name: user.languagevalue: "zh"- name: user.regionvalue: "CN"volumeMounts:- mountPath: /appname: jar-volumevolumes:- name: jar-volumeemptyDir: { }

总结

  • 一般模式的镜像打包出来比较大. 且无法重用. 打包速度慢
  • sidecar 模式. 基础镜像一般是不变的. 所有pod都可以用同一个镜像. 只有业务jar是变化的. 可以减少镜像的大小. 利于发布, 打包速度快

更多推荐

k8s 以sidecar的模式部署java应用.

本文发布于:2024-03-13 09:42:11,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1733688.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模式   k8s   sidecar   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!