【问题标题】:OpenShift :: POD is not inheriting "name label" from the deployment configOpenShift :: POD 未从部署配置继承“名称标签”
【发布时间】:2018-11-27 19:29:37
【问题描述】:
  1. 我从 git repo(基于 Docker 的应用程序)创建了一个构建配置。

    oc new-build <git-url> --name=myApp

  2. 使用以下方法创建了部署配置:

    oc create dc myApp --image=<image-stream-repo>

我正在从 UI 向此部署配置添加标签。

  1. 现在,当我(从 UI)部署应用程序或使用 oc rollout 时,会创建 POD 并且应用程序正在 POD 中运行。

但标签(名称:myApp)未应用于 POD。 因此,service 中的 selector 无法识别 POD。该服务配置了标签name: myApp 作为 POD 选择器。

如果我转到创建的 POD 和 edit yaml 并在 labels 部分添加 name: myApp,则只有该 POD 被服务识别。

如果有人遇到过类似问题,请提供您的意见以解决此问题。

【问题讨论】:

  • oc new-app myApp 代替oc create dc,或者更明确一点,oc new-app --image-stream myApp。请注意,名称必须全部小写。
  • 很少需要像您一样使用oc create 显式创建dc。如果您使用oc new-app 部署映像,它将为您创建带有适当标签的服务。
  • 如果您还没有,建议您阅读免费电子书openshift.com/deploying-to-openshift

标签: kubernetes openshift openstack


【解决方案1】:

要使用DeploymentConfigPod 上设置标签,标签必须放在嵌套更深的键中,如下所示,否则它将设置在DeploymentConfig 本身上,而不是在Pod:

objects:
  - kind: DeploymentConfig
    apiVersion: v1
    metadata:
      name: my-name
      # labels: NOT HERE (FOR DC ONLY)!
    spec:
        replicas: 1
        selector:
          app: my-name
        strategy:
          type: Rolling
        template:
          metadata:
            labels:
              app: my-name
              myAppsGroup: myApp

您可以使用oc describe pod my-name验证pod标签的正确性

【讨论】:

    猜你喜欢
    • 2018-09-21
    • 2017-06-04
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2020-12-03
    相关资源
    最近更新 更多