jenkins - 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
解决方案
有多种方法可以让 Kubernetes 部署新的更改。
kubectl rollout restart deployment myapp
这是当前触发滚动更新并保留旧副本集以供 kubectl rollout 提供的其他操作(如回滚)的当前方式
kubectl patch deployment my-deployment -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"build\":\"$CI_COMMIT_SHORT_SHA\"}}}}}}"
只要标签随每次构建而变化,您就可以在其中使用任何名称和任何值。
您可以使用 Jenkins 的kubectl cli 插件来执行上述命令。
推荐阅读
- php - 在使用 PHP 将数据插入 mysql 之前截断
- android - 更改外部库的布局文件
- php - 谷歌应用商店销售报告下载自动化
- php - 在php中将第一个值从数据库设置到底部
- vue.js - Framework7 选项卡
- java - 模块化应用程序 UI 测试脚本的最佳方法是什么?
- angular - 模态弹出窗口以角度显示
- javascript - 无法在 JavaScript 音板中播放音频(此处为新手)
- sql - 存在查询未产生预期结果时的 T-SQL 案例
- powershell - New-ComplianceSearchAction 参数“ShareRootPath”无效