记录使用k8s API 删除pod中的文件

首先是接口定义

    /**
     * 删除job缓存
     *
     * @param jobId jobId
     * @return
     * @throws Exception
     */
    @ApiOperation(value = "删除当前job的缓存", notes = "根据jobId进行删除" )
    @RequestMapping(value = "/{jobId}/dependency", method = RequestMethod.DELETE)
    public BaseResult deleteDependByJobId(@PathVariable("jobId") Long jobId,
                                          @RequestParam(value = "path") String path){
        //path = (K8sConstant.PVC_VOLUME_PATH +dependenceName+ path).replace("//","/");
        dependenceService.deletedependency(jobId,path);
        return BaseResult.ok();
    }

原意是删除上次流水线的缓存


    @Override
    public void deletedependency(Long jobId, String path) {
        DevopsJenkinsJob jenkinsJob = jobService.getById(jobId);
        Long envId = jenkinsJob.getEnvId();
        EnvInfo envInfo = envInfoDao.selectById(envId);
        K8sEnvDetail k8sEnvDetail = JSON.parseObject(envInfo.getEnvDetail(), K8sEnvDetail.class);
        KubernetesClient client = K8sOperation.getK8sClient(k8sEnvDetail, envInfo.getJenkinsType());
        //判断是否存在pod
        Pod pod = getPodbyJobName(client, k8sEnvDetail.getNamespace(), jenkinsJob.getJobName());
        //deleteFile0(client,pod,Arrays.asList(path));
        client.pods().inNamespace(pod.getMetadata().getNamespace()).withName(pod.getMetadata().getName())
                .inContainer("maven") // 如果Pod中只有一个容器,不需要指定
                .writingOutput(System.out)
                .exec("sh", "-c", "rm -rf " + path);
    }

    private Pod getPodbyJobName(KubernetesClient client, String namesapce, String jobName) {
        //判断是否存在pod

        List<Pod> pods = client.pods().inNamespace(namesapce).withLabel("jenkins", "slave").list().getItems();
        client.pods().withLabelIn(jobName);
        if (CollUtil.isNotEmpty(pods)) {
            //获取最后创建的pod
            Pod pod = pods.stream().max((s1, s2) -> StrUtil.compare(s1.getMetadata().getCreationTimestamp(), s2.getMetadata().getCreationTimestamp(), Boolean.TRUE)).get();
            return pod;
        }
        return new Pod();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值