【问题标题】:Openshift 3.11 - edit deployment config - cant add commandOpenshift 3.11 - 编辑部署配置 - 无法添加命令
【发布时间】:2019-11-10 01:09:06
【问题描述】:

我正在尝试在 OpenShift Web 控制台中编辑部署配置的 yaml。

我只是想添加一个command 和一些args。我有另一个具有正确语法和缩进的工作示例。

但是,当我将其复制到部署配置中时,由于验证错误,我无法保存它。但是该错误与我所做的更改无关。

错误信息是:

无法处理资源。 原因:DeploymentConfig.apps.openshift.io "my-sdk" 无效:[spec.template.spec.containers[0].name:必填值,spec.template.spec.containers[0].image:必填值]

例如,我有来自工作部署配置的以下 sn-p:

    spec:
      containers:
        - env:
            - name: MY_DB_HOST
              value: postgresql
            - name: MY_DB_NAME
              value: MY
            - name: MY_DB_PASSWORD
              value: MY
            - name: MY_DB_USER
              value: MY
            - name: MY_CACHE_ENABLED
              value: 'false'
          image: >-
            172.30.1.1:5000/myapp/my-sdk@sha256:eb485f011eaab9342b7fcf272c9f22dded9c238987f1dec932f8e1640ac18251
          imagePullPolicy: Always
          name: my-sdk
          ports:
            - containerPort: 8080
              protocol: TCP

然后我尝试将其更改为以下内容:

    spec:
      containers:
        - args:
            - '-myarg'
          command:
            - node
        - env:
            - name: MY_DB_HOST
              value: postgresql
            - name: MY_DB_NAME
              value: MY
            - name: MY_DB_PASSWORD
              value: MY
            - name: MY_DB_USER
              value: MY
            - name: MY_CACHE_ENABLED
              value: 'false'
          image: >-
            172.30.1.1:5000/myapp/my-sdk@sha256:eb485f011eaab9342b7fcf272c9f22dded9c238987f1dec932f8e1640ac18251
          imagePullPolicy: Always
          name: my-sdk
          ports:
            - containerPort: 8080
              protocol: TCP

通过此更改,我得到了上述错误。 我 99% 确定我所做的更改是有效的,因为我只是从功能部署配置中应对它。而且错误消息似乎与更改无关。

更新

现在我有一个包含 commandarg 值的有效部署配置。

当我尝试删除这些,而不修改任何其他 yaml 或缩进时,我收到以下无用的验证错误:

无法处理资源。 原因:版本“v1”中的 ReplicationController 不能作为 ReplicationController 处理:v1.ReplicationController.Spec:v1.ReplicationControllerSpec.Template:v1.PodTemplateSpec.Spec:v1.PodSpec.TerminationGracePeriodSeconds:SecurityContext:SchedulerName:RestartPolicy:DNSPolicy:Containers:decode切片:期望 [ 或 n,但发现 {,在 ...|y 的 #10 字节中发现错误:“文件”},“dnsPolic|...,更大的上下文 ...|ermination-log”,“terminationMessagePolicy” ":"File"},"dnsPolicy":"ClusterFirst","re​​startPolicy":"Alway|...

【问题讨论】:

  • 整个envargs 部分需要再缩进一级。那些的“-”应该与command相同的缩进。
  • 有时将您想要使用的内容插入json2yaml.com 并查看 JSON 中的结果会很有帮助,因为如果您不熟悉 YAML,它会更清楚地显示结构。
  • 请更新您的新 yaml 文件。请提供您的 openshift 和 kubernetes 版本。

标签: kubernetes openshift


【解决方案1】:

一个例子:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx@sha256:e3456c851a152494c3e4ff5fcc26f240206abac0c9d794affb40e0714846c451
        env:
         - name: DEMO_GREETING
           value: "Hello from the environment"
        command: ["echo"]
        args: ["$(GREETING) $(HONORIFIC) $(NAME)"] 
        ports:
        - containerPort: 80

请遵循文档: Using environment variables inside of your config

此外,请根据错误image: Required value 使用图像行image: >- 验证您的规格

【讨论】:

    【解决方案2】:

    在 ReplicationController 中,它们应该具有选择器(在 RC 规范中)和标签(模板规范)以匹配要启动的容器。因此,基于错误,您可能无法了解这一点,因为这将更加通用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 2021-03-22
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2019-05-22
      • 2021-06-16
      相关资源
      最近更新 更多