242 Star 2.2K Fork 756

GVP假诗人 / PowerJob

 / 详情

powerjob执行部署在k8s中的服务问题

待办的
创建于  
2023-02-23 14:31

因为部署到k8s中的业务服务都是虚拟Ip,每次更新发布ip都会变化,请问有何方案能够解决此问题。仅仅只能靠缩小更新ip地址的频率吗?有其它方式吗?

评论 (16)

ytqiao 创建了任务

目前看只能这样。
一般集群发布有任务失败也正常,任务配置适当的重试策略即可。

我看到配置任务的时候可以指定集群配置,这个配置意思如果我配置了一个机器,那么定时任务就只会调度到这一台机器上是吗?;两种方案:
1: powerjob以jar包方式部署,业务服务以k8s部署,这时候讲k8s服务中的service以nodepod策略映射出去,然后集群配置这一项直接配置这个映射出来的ip和端口。

2: powerjob和业务服务同时都在k8s部署,这时候这个集群配置直接配置一个serviceName 是不是就可以了。

我今天大概部署了单机的试了下,提几个建议麻烦考虑下。
1: 建议任务加上运行一次的按钮,目前的运行按钮,如果我的任务状态是关闭的,点完运行按钮就自动打开了,但是界面显示还是光比。
2:任务界面的执行器地址配置是为了debug方便,并且执行的时候还会与注册上来的地址比对,如果找不到就直接失败了。
3. 目前无法完美适应k8s环境,就算执行器地址刷新间隔再短,面对频繁部署变化的pod的ip地址还是会失败,正常情况如果k8s做了滚动更新,定时任务是不会失败的。建议配合 执行器地址 配置,如果配置了就无条件执行手动配置的,如果没有配置才读取自动注册。这样就能完美适应k8s环境;
3.1: 如果server和执行器都部署在k8s,那直接手动配置为pod的serviceName,这样server只需要无条件执行就把路由交给了k8s。如果server在物理机,执行器在k8s,那么直接手动配置pod的service的nodeport就行了。

感谢你的建议,我会认真考虑的~

我想把server搞成依赖引入 便于扩展也是想解决这个问题
搞成依赖就可以自己扩展对接注册中心了 这样只要做AB发布就可以解决这个问题

4.3.1 我帮你把 server 打成一个二方包了,你可以试试。
理论上配置下 PowerJob 的 Bean 扫描 + 注入依赖的配置文件是能启动的。

https://central.sonatype.com/artifact/tech.powerjob/powerjob-server/4.3.1

可以提供后续版本的server包嘛

现在这样直接打的包bean扫描不到,麻烦作者在打包插件上加个<classifier>exec</classifier>,同时打成普通包和指定classifier为exec的包才能被扫描到。完整配置如下:

 <!-- SpringBoot maven plugin -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${springboot.version}</version>
                <configuration>
                    <mainClass>tech.powerjob.server.PowerJobServerApplication</mainClass>
                    <classifier>exec</classifier>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>build-info</goal>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

但我比较好奇你们怎么依赖这个 exec 包🤔简单查了下没看到相关的资料🤔

直接引用就可以了

我这边尝试直接引用,但是无法找到其中的bean

		<dependency>
			<groupId>tech.powerjob</groupId>
			<artifactId>powerjob-server-starter</artifactId>
			<version>5.0.1-beta</version>
			<classifier>exec</classifier>
		</dependency>

直接引用就行了,不用加exec

很奇怪,4.3.6的版本,不加exec可以找powerjob-server-core包下面的类,但是5.0.1-beta的版本类无法找到,我尝试对比maven仓库中的pom文件,发现打包方式是一样的

输入图片说明

4.3.3 版本已新增 server 的 fatjar 包

可以了,感谢

为啥后续版本又不这样打包了啊

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(6)
647525 kfcfans 1589424914 1766278 javalionli 1585201115 395644 yhan219 1578922597 5423464 kilige 1578986422
Java
1
https://gitee.com/KFCFans/PowerJob.git
git@gitee.com:KFCFans/PowerJob.git
KFCFans
PowerJob
PowerJob

搜索帮助