bash - 字段是不可变的 k8s
问题描述
我正在尝试将应用程序部署到 kubernetes 上的 GCP,但是,部署失败并出现错误the job spec is invalid ... the field is immutable
。
在迁移作业中,我有一段 bash 格式如下:
args:
- |
/cloud_sql_proxy -instances=xxxxxxxxxxx:europe-west1:xxxxxxxxxxx=tcp:5432 -credential_file=/secrets/cloudsql/credentials.json -log_debug_stdout=true &
CHILD_PID=$!
(while true; do echo "waiting for termination file"; if [[ -f "/tmp/pod/main-terminated" ]]; then kill ; echo "Killed as the main container terminated."; fi; sleep 1; done) &
wait
if [[ -f "/tmp/pod/main-terminated" ]]; then exit 0; echo "Job completed. Exiting..."; fi
但是当文件执行时,在 GCP 上的 yaml 中,我看到该命令已用引号引起来,然后它返回上述错误。
解决方案
我收到这条消息the job spec is invalid ... the field is immutable
是出于不同的原因,想在这里简要分享一下。
我试图应用这个 yaml 文件:
apiVersion: extensions/v1beta1
kind: Deployment
spec:
selector:
matchLabels:
app: application-name
...
事实证明,这个 yaml 将替换同一 Deployment 的先前版本。当我跑步时,kubectl get deployment application-name -o yaml
我看到了这个:
apiVersion: extensions/v1beta1
kind: Deployment
spec:
selector:
matchLabels:
app: application-name
track: stable
...
显然,spec.selector.matchLabels
当前是一个数组,我试图用一个字符串替换它。我的修复是删除部署并重新部署它。
推荐阅读
- mysql - 计数行显示Null时如何设置0?
- sql - 如何使用以下输出的日期功能
- windows - CryptStringToBinary 错误?还是我不明白什么?
- wordpress - 如何使用 Timber / Twig 将脚本排入队列 | 为什么这不起作用?
- ios - 在 Xcode 上找不到框架 FirebaseInstanceID
- r - 将数据帧转置为列 R 中的模式变化
- python-3.x - 单击 Flask 上的提交(表单)时,如何保留我放在 TextArea 上的文本?
- excel - 在非活动工作表中更新 Excel 中的 UDF 时出错
- c++ - 递归函数c ++的复杂性
- azure - Azure DevOps - 复制文件任务:不允许使用与号 (&) 字符