Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 运行pod.yaml时规范无效_Kubernetes_Google Kubernetes Engine - Fatal编程技术网

Kubernetes 运行pod.yaml时规范无效

Kubernetes 运行pod.yaml时规范无效,kubernetes,google-kubernetes-engine,Kubernetes,Google Kubernetes Engine,当我运行我的Pod时,我得到的Pod(cas de)无效规范:禁止的Pod更新可能不会更改除spec.containers[*].image,spec.initContainers[*].image,spec.activeDeadlineSeconds或spec.tolerations以外的字段(仅添加到现有的公差) 然而,我在kubernetes网站上搜索,没有发现任何错误: (我真的不明白我的错误在哪里) 在Pod或部署中设置volumeMounts更好吗 apiVersion: v1 ki

当我运行我的Pod时,我得到的Pod(cas de)无效规范:禁止的Pod更新可能不会更改除
spec.containers[*].image
spec.initContainers[*].image
spec.activeDeadlineSeconds
spec.tolerations
以外的字段(仅添加到现有的公差)

然而,我在kubernetes网站上搜索,没有发现任何错误: (我真的不明白我的错误在哪里)

在Pod或部署中设置
volumeMounts
更好吗

apiVersion: v1
kind: Pod 
metadata:
  name: cas-de
  namespace: ds-svc
spec:
  containers:
  - name: ds-mg-cas
    image: "docker-all.xxx.net/library/ds-mg-cas:latest"
    imagePullPolicy: Always
    ports:
    - containerPort: 8443
    - containerPort: 6402
    env:
    - name: JAVA_APP_CONFIGS
      value: "/apps/ds-cas/configs"
    - name: JAVA_EXTRA_PARAMS
      value: "-Djava.security.auth.login.config=./config/jaas.config -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6402"
    volumeMounts:
    - name: ds-cas-config
      mountPath: "/apps/ds-cas/context"
  volumes:
    - name: ds-cas-config
      hostPath:
        path: "/apps/ds-cas/context"

YAML模板是有效的。某些字段可能已被更改,但被禁止,然后执行
kubectl apply…


看起来更像是一种发展。解决方案是使用
kubectl delete pod cas de
命令删除现有pod,然后执行
kubectl apply-f file.yaml
kubectl create-f file.yaml

在对象最初创建后,不允许更改对象上的几个字段。作为一个具体示例,请注意,
volumeMounts
“无法更新”。如果遇到这些情况之一,则需要删除并重新创建对象(可能首先使用不同的名称创建新对象)

在Pod或部署中设置
volumeMounts
更好吗

不要使用裸豆荚;始终更喜欢使用管理POD的控制器之一,通常是部署


更改为部署实际上可以解决此问题,因为更新部署的pod规范将经历创建新pod、等待可用pod,然后为您删除旧pod的过程。它从不尝试就地更新Pod。

您是在创建新Pod还是在更新Pod?还有,这个吊舱已经是部署的一部分了吗?