大佬,我现在环境里的 jenkins-casc-config CM 里就是带有 podman 的标签,jenkisfile 里面也把 docker 改为 podman 了,但是提示 podman 的命令不存在。。。。
该怎么办呢
大佬,我现在环境里的 jenkins-casc-config CM 里就是带有 podman 的标签,jenkisfile 里面也把 docker 改为 podman 了,但是提示 podman 的命令不存在。。。。
该怎么办呢
koalawangyang 我用这种环境试了下,可以操作,有什么不同吗?
pipeline {
agent {
node {
label 'maven'
}
}
stages {
stage('stage-rbzgp') {
agent none
steps {
container('maven') {
sh '''
alias docker=podman
docker ps
podman ps
'''
}
}
}
}
}
感谢大佬回复,我昨天做了一些测试,发现了更多信息,我在此列出,可能需要 KS 官方来修复。
crictl image ls
查看已有镜像,发现只有这么一个镜像:docker.io/kubesphere/builder-maven:v3.2.0
,并不是用的含有 podman 的镜像。crictl rmi docker.io/kubesphere/builder-maven:v3.2.0
来删除镜像,然后重新运行流水线,看是否会拉取含有 podman 的镜像。builder-maven:v3.2.0
镜像又被拉下来了。kubesphere-devops-system
名称空间中的 devops-jenkins
Deployment,进入 /var/jenkins_home/cascconfigs/
目录,确认存在 jenkins.yaml 和 jenkins_user.yaml 文件,并且jenkins_user.yaml是我修改后的CM 内容。devops-jenkins
Pod。Error: mount /var/lib/containers/storage/overlay:/var/lib/containers/storage/overlay, flags: 0x1000: operation not permitted
privileged: true
,而 jenkins_user.yaml 文件中的 maven 标签对应的 privileged: false
,猜测和这个有关。true
后,再次重启devops-jenkins
Pod。上面的步骤是我排查的过程,大概的意思就是我升级了 k8s 到 v1.24,改用 containerd 作为 CRI ,同时升级了 Kubesphere 版本到 v3.3.1,之前的流水线运行失败,提示无法连接 docker daemon,问题根源是 devops jenkins 没有加载到正确的配置文件,从而没有使用含有 podman 标签的镜像,最终导致 docker 命令异常。
而现在官网上的文档中使用的示例均以 docker 为例,而未来大家都升级 k8s 版本后,可能陆续会遇到我的这个问题,因此建议 KS 官方看看是否可以尽快修复该问题,谢谢。
koalawangyang 非常详细,应该是版本升级 + 切换 CRI 时,配置文件有问题
已经在 kubesphere 的 devops 上提交了 issue:kubesphere/ks-devops#900
会尽快安排排查和修复,再次感谢您的详细反馈。
大佬,您客气了,能帮到开源社区就好,多谢您的帮助~
koalawangyang 大佬 ,podman镜像里面的registries.conf文件在哪里配置的呢?想修改podman里面的镜像加速。
k8s-taye 有一个办法应该可以 就是根据 https://github.com/kubesphere/devops-agent/blob/master/base/podman/Dockerfile 自己构建镜像
不知道kubesphere有没有提供更加方便的方法
k8s-taye 配置 registries.conf,参考下这个帖子:https://www.kubesphere.io/forum/d/9454-devops-podman
robin2023 哦哦,那 podman registries.conf 配置可以参考 https://blog.csdn.net/kiritow/article/details/113854996 ;
yudong 请问,在kubesphere的流水线中创建的容器,比如:“nodejs”(image: “kubesphere/builder-nodejs:v3.2.0-podman”),怎么修改这个容器的registries.conf 配置以增加镜像加速的url?
robin2023 麻烦试下在 ks 集群各个 worker 节点上配置下 podman 镜像加速,具体的配置方式可以参考下网络上的其他资料,例如:https://juejin.cn/post/7151042056935669768 ;
yudong 你好,我遇到了与上面类似的问题,就是在使用KubeSphere流水线进行镜像构建时,需要依赖基础镜像 FROM openjdk:8-jdk ,实际运行时,会有一定概率 20%~30% 基础镜像拉取失败,查看日志发现是由于从docker官方镜像仓库拉取镜像超时导致的。因此我想是否可以修改podman的配置,使用国内的镜像加速服务。但是我发现podman是运行在Jenkins的agent / maven 的容器内的,而这个maven容器是动态创建的容器组中的实例,也就是说我进入maven的容器内修改了podman的配置,可以暂时使得修改后的配置生效,但是一旦容器销毁重建,修改后的配置就失效了,后续的构建还是会从docker官方仓库拉取镜像。不知道我的理解是否正确呢?
如果我的理解正确,那么是否可以有什么办法在KubeSphere平台中通过修改devops-system或者devops-worker中的某个配置的方式,比如类似于修改 kubesphere-devops-worker的ConfigMap:ks-devops-agent 来修改maven的配置,添加国内的mirror的方式。 是否可以通过类似的方式永久的修改podman的配置呢?比如将podman的配置挂载到某个configmap,比如 configmap/ks-devops-agent 中呢?
我这边自己修改了一下,
1 在项目 kubesphere-devops-worker 中修改 configmap/ks-devops-agent 添加数据
键:PodmanSetting
值:pomand配置文件,例如:
unqualified-search-registries = ["docker.io"]
[[registry]]
prefix = "docker.io"
location = "xxx.mirror.aliyuncs.com"
insecure = true
注意:xxx.mirror.aliyuncs.com
要替换成自己的阿里云镜像加速地址
2 在项目 kubesphere-devops-system 中修改 configmap/jenkins-casc-config,在要使用的agent的容器配置中修改数据挂载:
containers:
- name: "maven"
resources:
requests:
ephemeral-storage: "1Gi"
limits:
ephemeral-storage: "10Gi"
volumeMounts:
- name: config-volume
mountPath: /opt/apache-maven-3.5.3/conf/settings.xml
subPath: settings.xml
volumes:
- name: config-volume
configMap:
name: ks-devops-agent
items:
- key: MavenSetting
path: settings.xml
securityContext:
fsGroup: 1000
修改为:
containers:
- name: "maven"
resources:
requests:
ephemeral-storage: "1Gi"
limits:
ephemeral-storage: "10Gi"
volumeMounts:
- name: config-volume
mountPath: /opt/apache-maven-3.5.3/conf/settings.xml
subPath: settings.xml
- name: podman-config-volume
mountPath: /etc/containers/registries.conf
subPath: registries.conf
volumes:
- name: config-volume
configMap:
name: ks-devops-agent
items:
- key: MavenSetting
path: settings.xml
- name: podman-config-volume
configMap:
name: ks-devops-agent
items:
- key: PodmanSetting
path: registries.conf
securityContext:
fsGroup: 1000
也就是增加了
volumeMounts:
- name: podman-config-volume
mountPath: /etc/containers/registries.conf
subPath: registries.conf
和
volumes:
- name: podman-config-volume
configMap:
name: ks-devops-agent
items:
- key: PodmanSetting
path: registries.conf
jenkins-casc-config内有2个配置文件,我都进行了同样的修改,只改了maven,其他的agent根据需要可以做类似的改动,实测有效,挂载到configmap中的podman的配置确实生效了。