我在Jenkins(https://plugins.jenkins.io/kubernetes-cd/)中使用kubernetes-cd插件成功部署了我的应用程序。
但是,我遇到了一个问题,当我再次运行该作业时,詹金斯人不会更新我的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推出提供的其他操作,如回滚
kubectl patch deployment my-deployment -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"build\":\"$CI_COMMIT_SHORT_SHA\"}}}}}}"
只要标签随每次构建而变化,您就可以在其中使用任何名称和任何值。
您可以使用Jenkins的kubectl cli plugin执行上述命令。