我正在使用 Helm Chart 运行 Jenkins pod,并且在启动 jenkins 作业时有奇怪的日志。与我在值中设置的内容相比,请求的资源和限制似乎处于默认状态。
helm install stable/jenkins --name jenkins -f jenkins.yaml
从 UI 创建并运行随机作业后
Agent jenkins-agent-mql8q is provisioned from template Kubernetes Pod Template
---
apiVersion: "v1"
kind: "Pod"
metadata:
annotations: {}
labels:
jenkins/jenkins-slave: "true"
jenkins/label: "jenkins-jenkins-slavex"
name: "jenkins-agent-mql8q"
spec:
containers:
- args:
- "********"
- "jenkins-agent-mql8q"
env:
- name: "JENKINS_SECRET"
value: "********"
- name: "JENKINS_TUNNEL"
value: "jenkins-agent:50000"
- name: "JENKINS_AGENT_NAME"
value: "jenkins-agent-mql8q"
- name: "JENKINS_NAME"
value: "jenkins-agent-mql8q"
- name: "JENKINS_AGENT_WORKDIR"
value: "/home/jenkins/agent"
- name: "JENKINS_URL"
value: "http://jenkins:8080/"
image: "jenkins/jnlp-slave:3.27.1"
imagePullPolicy: "IfNotPresent"
name: "jnlp"
resources:
limits:
memory: "2Gi"
cpu: "2"
requests:
memory: "1Gi"
cpu: "1"
我的 Helm 值(value)观是
master:
(...)
resources:
requests:
cpu: "1"
memory: "1Gi"
limits:
cpu: "3"
memory: "3Gi"
agent:
resources:
requests:
cpu: "2"
memory: "2Gi"
limits:
cpu: "4"
memory: "3Gi"
知道为什么它会生成默认 1cpu/1Gi 到 2cpu/2Gi 的代理
最佳答案
我已经重现了您的场景,我将解释这对我来说是如何工作的。 我将 GKE 与 Kubernetes 1.15.3 和 HELM 2.16.1 结合使用。
我已将 Helm Chart 下载到本地计算机,并解压该文件以自定义 value.yaml:
$ helm fetch stable/jenkins
$ tar xzvf jenkins-1.9.16.tgz
在 jenkins 文件夹中,编辑 values.yaml
文件中的第 422-427 行。
agent:
...
requests:
cpu: "2"
memory: "2Gi"
limits:
cpu: "4"
memory: "3Gi"
...
这将配置代理容器以使用指定的资源生成。
如果需要,可以在文件中执行其他更改,在本例中我将使用默认值。
安装 Helm chart :
helm 安装 jenkins/-n jenkins
安装后,按照屏幕上的说明访问 jenkins 控制台。
要验证代理是否会使用配置的资源启动,让我们使用简单的 shell 命令创建一个新作业。
新项目 > 自由式项目
在作业配置中,选择下拉列表中“构建”部分上方的“执行 shell”。输入任何 linux 命令,例如 id
、ls
、uname -a
等...
保存并触发立即构建
按钮。
在 kubernetes 中验证新容器,在本例中,新代理容器的名称为 default-6w3fq
查看 Pod 描述:
kubectl 描述 pod default-6w3fq
Name: default-6w3fq
...
IP:
Containers:
jnlp:
Image: jenkins/jnlp-slave:3.27-1
...
Limits:
cpu: 4
memory: 3Gi
Requests:
cpu: 2
memory: 2Gi
...
您可以等待作业完成并查看作业日志,而不是使用 kubectl
命令。
我尝试使用默认值进行部署,并使用新值升级 helm 图表...没有任何反应。
当我使用 --force
标志运行升级时,这有效:
helm 升级 jenkins jenkins/--force
--force - force resource updates through a replacement strategy
引用文献: https://helm.sh/docs/helm/helm_upgrade/ https://github.com/helm/charts/tree/master/stable/jenkins
关于jenkins - 具有奇数资源编号的 Kubernetes Jenkins Slave,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999273/