Hel*_*ova 9 kubernetes kubernetes-helm
我正在尝试部署更新。安装工作正常,但是当我更改作业的 yaml 文件中的图像字段并尝试滚动更新时,会发生错误。
\n\n\n\n\n错误:升级失败:无法使用种类作业修补“dev1-test-db-migrate-job”:Job.batch“dev1-test-db-migrate-job”无效:spec.template:无效值:core.PodTemplateSpec{ ObjectMeta:v1.ObjectMeta{名称:"",GenerateName:"",命名空间:"",SelfLink:"",UID:"",ResourceVersion:"",Generation:0,CreationTimestamp:v1.Time{时间:时间。时间{wall:0x0,ext:0,loc:(*time.Location)(nil)}},DeletionTimestamp:(*v1.Time)(nil),DeletionGracePeriodSeconds:(*int64)(nil),标签:map[ string]string{“controller-uid”:“e60854c6-9a57-413c-8f19-175a755c9852”,“作业名称”:“dev1-test-db-migrate-job”,“target-app”:“db-migrate ", "target-domain":"dev1...", "target-service":"test"}, 注解:map[string]string(nil), OwnerReferences:[]v1.OwnerReference(nil), Finalizers: []string(nil), ClusterName:"", ManagedFields:[]v1.ManagedFieldsEntry(nil)}, Spec:core.PodSpec{Volumes:[]core.Volume(nil), InitContainers:[]core.Container(nil) ), 容器:[]core.Container{core.Container{名称:"app", 图片:"...:insurance-master-682", 命令:[]string{"/bin/sh", "-c "}, Args:[]string{"java -jar ./db/liquibase.jar --logLevel=debug --classpath=./db/mariadb-java-client-2.5.3.jar --driver=org. mariadb.jdbc.Driver --changeLogFile=./db/changelog-insurance.xml --url=$DB_HOST --username=$DB_USER --password=$DB_PASSWORD update"},工作目录:"",端口:[]core .ContainerPort(nil), EnvFrom:[]core.EnvFromSource{core.EnvFromSource{前缀:"", ConfigMapRef:(*core.ConfigMapEnvSource)(nil), SecretRef:(*core.SecretEnvSource)(0xc01a48c8a0)}}, Env :[]core.EnvVar(nil), 资源:core.ResourceRequirements{限制:core.ResourceList{"cpu":resource.Quantity{i:resource.int64Amount{value:200, scale:-3}, d:资源。 infDecAmount{Dec:(*inf.Dec)(nil)}, s:"200m", 格式:"DecimalSI"}, "内存":resource.Quantity{i:resource.int64Amount{值:268435456, 规模:0} , d:resource.infDecAmount{Dec:(*inf.Dec)(nil)}, s:"", 格式:"BinarySI"}}, 请求:core.ResourceList{"cpu":resource.Quantity{i:resource .int64Amount{值:100,比例:-3},d:resource.infDecAmount{Dec:(*inf.Dec)(nil)},s:“100m”,格式:“DecimalSI”},“内存”:资源.Quantity{i:resource.int64Amount{值:134217728,scale:0},d:resource.infDecAmount{Dec:(*inf.Dec)(nil)},s:"",格式:"BinarySI"}}} , VolumeMounts:[]core.VolumeMount(nil), VolumeDevices:[]core.VolumeDevice(nil), LivenessProbe:(*core.Probe)(nil), ReadinessProbe:(*core.Probe)(nil), StartupProbe:( *core.Probe)(nil)、Lifecycle:(*core.Lifecycle)(nil)、TerminationMessagePath:"/dev/termination-log"、TerminationMessagePolicy:"File"、ImagePullPolicy:"IfNotPresent"、SecurityContext:(*core. SecurityContext)(零),标准输入:假,StdinOnce:假,TTY:假}},EphemeralContainers:[] core.EphemeralContainer(nil),RestartPolicy:“从不”,TerminationGracePeriodSeconds:(* int64)(0xc014591f78),ActiveDeadlineSeconds:(* int64)(nil),DNSPolicy:“ ClusterFirst", NodeSelector:map[string]string(nil), ServiceAccountName:"", AutomountServiceAccountToken:(*bool)(nil), NodeName:"", SecurityContext:(*core.PodSecurityContext)(0xc010460000), ImagePullSecrets:[] core.LocalObjectReference{core.LocalObjectReference{Name:"artifactory-tradeplace-registry"}}, 主机名:"", 子域名:"", Affinity:(*core.Affinity)(nil), SchedulerName:"default-scheduler",容忍:[]core.Toleration(nil),HostAliases:[]core.HostAlias(nil),PriorityClassName:“”,优先级:(* int32)(nil),PreemptionPolicy:(* core.PreemptionPolicy)(nil),DNSConfig :(*core.PodDNSConfig)(nil)、ReadinessGates:[]core.PodReadinessGate(nil)、RuntimeClassName:(*string)(nil)、开销:core.ResourceList(nil)、EnableServiceLinks:(*bool)(nil) , TopologySpreadConstraints:[]core.TopologySpreadConstraint(nil)}}:字段是不可变的
\n
我仍然不明白哪个字段应该是不可变的,可能是 Image,但是它很奇怪,我可以嵌入 Image 是有道理的。
\n\n例如,当我将字段图像从 ...: Insurance-master-682 更改为 ...: Insurance-master-681 时,会发生错误
\n\n我每次安装或更新时都会更改图表文件,并更改版本字段。\n那么,有人遇到过这种情况吗?\n虽然我看到唯一的出路是在更新之前应用“kubectl删除作业...”
\n\n\'templetes\' 目录中的 yaml 的一部分:
\n\napiVersion: batch/v1\nkind: Job\nmetadata:\n labels:\n target-domain: dev1...\n target-service: test\n name: dev1-test-db-migrate-job\nspec:\n backoffLimit: 0\n template:\n metadata:\n labels:\n target-app: db-migrate\n target-domain: dev1...\n target-service: test\n spec:\n containers:\n - args:\n - java -jar ./db/liquibase.jar --logLevel=debug --classpath=./db/mariadb-java-client-2.5.3.jar\n --driver=org.mariadb.jdbc.Driver --changeLogFile=./db/changelog-insurance.xml\n --url=$DB_HOST --username=$DB_USER --password=$DB_PASSWORD update\n command:\n - /bin/sh\n - -c\n envFrom:\n - secretRef:\n name: dev1-secret-config-deploy-for-app-gk5b59mb86\n image: ...:insurance-master-682\n imagePullPolicy: IfNotPresent\n name: app\n resources:\n limits:\n cpu: 200m\n memory: 256Mi\n requests:\n cpu: 100m\n memory: 128Mi\n imagePullSecrets:\n - name: artifactory-tradeplace-registry\n restartPolicy: Never\nRun Code Online (Sandbox Code Playgroud)\n\nChart.yaml 示例
\n\napiVersion: v2\nname: \ndescription: A Helm chart for Kubernetes\ntype: application\nversion: 0.1.20200505t154055\nappVersion: 1.16.0\nRun Code Online (Sandbox Code Playgroud)\n
小智 13
需要删除现有作业,因为作业中的模板部分是不可变或不可更新的。所以你有以下两个选择。
ttlSecondsAfterFinished允许帮助在指定时间段后自动删除作业。例如: apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-ttl
spec:
ttlSecondsAfterFinished: 100
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
Run Code Online (Sandbox Code Playgroud)
小智 7
您需要删除现有作业并重新运行。可能无法重新运行相同的作业。问题似乎出在工作名称上。当我尝试使用相同的名称升级时,我确实看到了类似的情况,例如:“dev1-test-db-migrate-job”。
| 归档时间: |
|
| 查看次数: |
27732 次 |
| 最近记录: |