首页 > 解决方案 > Jenkins 中的 kubernetes 部署插件不会更新 pod

问题描述

我在 Jenkins ( https://plugins.jenkins.io/kubernetes-cd/ )中使用 kubernetes-cd 插件来成功部署我的应用程序。

在此处输入图像描述

但是,我遇到了一个问题,当我再次重新运行该作业时,jenkins 不会更新我的 pod(不会再次删除和创建新的 pod),因此我的代码更改不会受到影响。在我使用 kubernetes 集群中的 kubectl 命令删除 pod 手册并重新运行作业后,它会进行更改

下面是我的 yaml 文件。你知道如何解决这个问题吗?

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: tds-upload
  name: tds-upload
spec:
  replicas: 1
  selector:
    matchLabels:
      app: tds-upload
  template:
    metadata:
      labels:
        app: tds-upload
    spec:
      containers:
      - image: dev-master:5000/tds-upload:1.0.0
        imagePullPolicy: Always
        name: tds-upload

---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: tds-upload
  name: tds-upload
spec:
  ports:
  - nodePort: 31313
    port: 8889
    protocol: TCP
    targetPort: 8889
  selector:
    app: tds-upload
  type: NodePort

标签: jenkinskubernetesdevopskubernetes-pod

解决方案


有多种方法可以让 Kubernetes 部署新的更改。

  1. kubectl rollout restart deployment myapp

这是当前触发滚动更新并保留旧副本集以供 kubectl rollout 提供的其他操作(如回滚)的当前方式

  1. kubectl patch deployment my-deployment -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"build\":\"$CI_COMMIT_SHORT_SHA\"}}}}}}"

只要标签随每次构建而变化,您就可以在其中使用任何名称和任何值。

您可以使用 Jenkins 的kubectl cli 插件来执行上述命令。


推荐阅读