部署环境从docker swarm迁移到k8s后kie-server的发布方式变化

news2024/9/29 13:21:29

书接swarm

https://cloud.tencent.com/developer/news/475316

swarm的集群部署非常简单,但领导说docker和 docker swarm都不想用

换k8s
ok
哦另外, k8s的CRI运行时 也不用docker 而是用containerd
完成.

但发现一个问题 ,k8s没有暂停pod的概念. 同时containerd没有暂停容器的概念, (docker有这个概念)

kubectl rollcout restart pod whoami-deployment-56bdd9544f-m28c8

这个命令并不被支持, 估计是docker做CRI时支持吧.

这样就问题大了, 因为我们用的是不是典型的容器开发方式.
而是利用容器,在容器上面做追加的发布.需要drain某个节点来发发布的请求.保证同时只有一个node接收请求.

在containerd里reboot 会直接容器消失再出现一个新的.
ok进行调研

先对现状分析,对于docker swarm环境, 有连着wb的ks. 把容器内整个wildfly文件夹copy出来.

https://blog.csdn.net/weixin_45843419/article/details/119978883

docker cp 2aa7d757d24d:/opt/jboss/wildfly/ /home/xxx/before/

然后发布一个简单的dmn项目, 之后再次把整个wildfly copy出来

docker cp 2aa7d757d24d:/opt/jboss/wildfly/ /home/xxx/after/

把文件夹从linux服务器下载到本地很麻烦, 先zip

http://c.biancheng.net/view/781.html

zip -r before.zip before
zip -r after.zip after

然后用对比工具 beyondcompare 对比,
发现前后只有一个文件有差别

http://www.hnwypx.com/zhishi/290464.html

在这里插入图片描述
这里是所有有效信息都是maven管理的jar的信息
故真正的文件应该再本地maven库里.
不知道在哪.
直接搜.m2文件夹 (这个是真方便, windows的话得安装everything) (我唯一愿意夸linux的地方)

http://c.biancheng.net/view/779.html

find / -name .m2

在这里插入图片描述
找到了.m2在哪里.

里面确实有ooonew的jar.
验证了假设,找到了结论, 即 kb发布的时候会ks会把jar放到自己的本地库, 并在kie-server-[hostname].xml里加一段话, 里面的containers即他每次重启后要发布的container,具体jar在本地库里找.

那么, 在k8s里发布一个没有wb的ks

apiVersion: v1
kind: Namespace
metadata:
  name: kie-server-alone

---

apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: kie-server-alone
  name: kie-server-alone
  namespace: kie-server-alone
spec:
  type: NodePort
  ports:
    - port: 8080
      targetPort: 8080
      nodePort: 30002
  selector:
    k8s-app: kie-server-alone

---

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: kie-server-alone
  name: kie-server-alone
  namespace: kie-server-alone
spec:
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      k8s-app: kie-server-alone
  template:
    metadata:
      labels:
        k8s-app: kie-server-alone
    spec:
      nodeName: ltwwapp01
       
      containers:
        - name: kie-server-alone
          image: quay.io/kiegroup/kie-server-showcase:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
              protocol: TCP
              

发现jar拉不下来,
给containerd加镜像源
配置containerd的镜像源 /etc/containerd/config.toml
原来:
在这里插入图片描述

之后
在这里插入图片描述

[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
 		[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
          endpoint = ["https://cekcu3pt.mirror.aliyuncs.com"]
        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."k8s.gcr.io"]
          endpoint = ["http://registry.aliyuncs.com/google_containers"]

然后重启containerd
systemctl restart containerd

https://it.cha138.com/android/show-57256.html

之后就拉成功了

crictl pull quay.io/kiegroup/kie-server-showcase:latest (绝大多数的docker命令都可以像这样在containerd里用)

pod已然建成, 现状就在k8s+containerd环境下验证上面的结论.
把.m2文件夹的zip放到服务器上, 然后copy到pod里

https://blog.csdn.net/weixin_45969972/article/details/121424601

kubectl cp ./repository.zip kie-server-alone/kie-server-alone-7898df8b45-c9lpt:/opt/jboss/.m2/

然后需要进到pod里unzip

http://c.biancheng.net/view/782.html

unzip repository.zip

然后修改pod里的那个xml文件

vi kie-server-kie-server-alone-7898df8b45-c9lpt.xml

ok关键来了. 我们知道reboot会销毁pod新建一个, 大概是k8s的pod守护进程发现pod出问题了然后就用image重新开一个pod. 集群都会有这个机制, swarm里重启也会新出来一个容器.
所以试下只是重启wildfly是否ok.

https://www.mastertheboss.com/jbossas/jboss-configuration/how-to-start-stop-and-restart-wildfly/

在这里插入图片描述
discnnect 是 quit
直接说结论, ok

至此,问题完全解决, 而且相比于之前的发布方式, 这个会更规范.
下一步是要把.m2文件夹做成一个只读的共享的volume, 然后xml也可以自动修改.
非常好

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/429492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Scrum of Scrums规模化敏捷开发管理全流程

Scrum of Scrums是轻量化的规模化敏捷管理模式,Leangoo领歌可以完美支持Scrum of Scrums多团队敏捷管理。 Scrum of Scrums的场景 Scrum of Scrums是指多个敏捷团队共同开发一个大型产品、项目或解决方案。Leangoo提供了多团队场景下的产品路线图规划、需求管理、…

可选择的Elasticsearch好用的可视化客户端工具

前言 常言道:工欲善其事,必先利其器。对于我们开发和测试同学来说,在日常的工作中有一款趁手的工具那真实如虎添翼啊,工作效率可是蹭蹭蹭的往上长,节省下来的时间摸摸鱼该有多好啊。最近我们系统开始使用elasticsearc…

【计算机网络-数据链路层】广域网(WAN)

文章目录1 广域网的概念2 PPP 协议2.1 PPP 帧的格式2.2 PPP 帧的透明传输2.2.1 面向字节的透明传输——字符填充法2.2.2 面向比特的透明传输——零比特填充法2.3 PPP 协议的工作状态1 广域网的概念 广域网(Wide Area Network,WAN)&#xff0…

【python】面向对象编程,这么大一个对象你不要嘛?

前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 万物皆是对象,Python当然支持面向对象编程。 类和对象是面向对象编程的两个主要方面,类创建一个新的对象,对象是这个类的实例。 对象可以使用类的变量,属于对象或类的变量…

MyBatis01 学习遇到的错误

错误1 java.lang.NullPointerException at com.utils.MybatisUtils.getSqlSession(MybatisUtils.java:34) at com.dao.UserDaoTest.test(UserDaoTest.java:14) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.…

进程间通信方式

每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。 管道 管道传输数据是单向的,如果想相互通信,我们需要创建两个管道才行。 「|」表示的…

前端引入和html标签

先安装 flask模块 pip install flask from flask import Flaskapp Flask(__name__)#创建了网址 /show/info 和函数index的对应关系 #以后用户在浏览器上访问 /show/info,网站自动执行 index app.route("/show/info") def index():return "西安钟楼…

Vivado自带仿真器:真的不好用吗?

Vivado仿真器不好用?如果你还不熟悉它的操作方法,可能会有这种感觉。 实际上,与ModelsIm相比,Vivado仿真器的仿真速度稍慢,但是它的界面美观整洁,操作丰富且流畅,特别适合于调试仿真时间短的工…

JUC高级九-Synchronized与锁升级

1. synchronized 锁优化的背景 用锁能够实现数据的安全性,但是会带来性能下降。无锁能够基于线程并行提升程序性能,但是会带来安全性下降。 为求平衡将synchronized优化为不在是无所和重锁两个状态,新增偏向锁和轻量级锁来平衡安全性和性能问题 synchro…

【一起啃书】《机器学习》第四章决策树

第四章 决策树 4.1 基本流程 决策树是一类常见的机器学习方法,是基于树结构来进行决策的,通过对训练样本的分析来确定划分属性,来模拟人类决策过程。 一般的,一棵决策树包含一个根结点、若干个内部结点和若干个叶结点,…

分页查询工具类

package xyz.huanggy.minio.upload.Util; import java.util.ArrayList; import java.util.List; public class PageBean<T> {/*** 功能&#xff1a;分页工具类*/private int pageSize; // 每页记录数private int pageNo; // 当前页private int totalPages; // 总页数priv…

【Redis】Lua快速入门使用

【Redis】Lua快速入门使用 文章目录【Redis】Lua快速入门使用1. 概述2. 数据类型2.1 变量2.2 循环3. 函数4. 条件控制1. 概述 Lua 是一种轻量小巧的脚本语言&#xff0c;用标准C语言编写并以源代码形式开放&#xff0c; 其设计目的是为了嵌入应用程序中&#xff0c;从而为应用…

vue+Nodejs+Koa搭建前后端系统(二)--koa-generator创建项目及分析

前言 采用上一篇vueNodejsKoa搭建前后端系统&#xff08;一&#xff09;–简易版创建的项目目录的基础上&#xff0c;创建新的后端服务项目server2使用koa-generator脚手架创建后端项目计算机系统为Windows 10 专业版 小说中&#xff0c;终成眷属一般就结局了&#xff0c;但现…

ESP32在ESP-IDF框架下为LVGL(v8.3)配置SD卡文件系统

踩坑记录 1、如果SD卡曾经做过系统盘&#xff08;比如说&#xff1a;作为树莓派的系统盘&#xff09;&#xff0c;那么要把系统盘的分区合并成一个&#xff08;这个网上有很多教程&#xff09;&#xff0c;并重新格式化&#xff0c;否则实验会失败。 2、并不是买回来的新的SD卡…

基于Vant组件库二次封装组件(TS+Vue3.x环境)

1. 今天的需求是封装一个 Navigation Bar 导航栏组件&#xff0c;目的是给到App几乎所有的页面复用&#xff1a; 2. 因为之前的项目里使用过Vant组件库&#xff0c;笔者第一时间想到了Vant组件库中的 NavBar 组件&#xff0c;和当前App的需求匹配度很高。Vant组件库的 NavBar 组…

压箱底教程分享,手把手教会你如何注册target账号和下单

喜欢套利的朋友肯定都认识target这个平台吧&#xff0c;它是美国热门的综合性海淘网站之一。东哥近日收到私信有朋友向我请教在注册target账号时遇到的一些问题&#xff0c;所以今天东哥想跟大家分享的就是就是target账号注册教程和下单流程&#xff0c;让也想注册target账号的…

软考第五章 无线通信网

无线通信网 无线通信网包括面向语音通信的移动电话系统以及面向数据传输的无线局域网和无线广域网。 WiFI底层是如何传输数据的呢 1.移动通信 1.1 蜂窝通信系统 1980年中期&#xff0c;欧洲和日本都建立了第一代蜂窝移动电话系统。蜂窝网络把一个地理区域划分成若干个称为…

Vue2-黑马(五)

目录&#xff1a; &#xff08;1&#xff09;vue2-组件重用 &#xff08;2&#xff09;vue2-element ui安装 &#xff08;3&#xff09;vue2-ElementUI-table &#xff08;4&#xff09;Element-ui-分页pagination &#xff08;1&#xff09;vue2-组件重用 页面上有很多的…

PyTorch中的符号索引和函数索引用法

Pytorch中很多函数都采用的是函数式索引的思路&#xff0c;而且使用函数式索引对代码可读性会有很大提升。 张量的符号索引 张量也是有序序列&#xff0c;我们可以根据每个元素在系统内的顺序位置&#xff0c;来找出特定的元素&#xff0c;也就是索引。 一维张量的索引 一维…

离线安装JumpServer

官网操作手册&#xff1a; https://docs.jumpserver.org/zh/v3/installation/setup_linux_standalone/offline_install/ 环境要求&#xff1a;&#xff08;内存最小需要4G&#xff09; 架构图 安装部署 1、下载 JumpServer官网下载&#xff1a; https://community.fit2cloud…