kubernetes - OpenShift::POD 未从部署配置继承 "name label"

标签 kubernetes openshift openstack

  1. 我从 git 存储库(基于 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。因此 selectorservice无法识别 POD。该服务配置有标签 name: myApp作为 POD 选择器。

如果我转到创建的 POD 和 edit yaml并添加 name: myApplabels部分,只有那时 POD 才被服务识别。

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

最佳答案

要使用 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标签的正确性

关于kubernetes - OpenShift::POD 未从部署配置继承 "name label",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53506820/

相关文章:

kubernetes - kube-proxy不更新iptables

ssl - 域名(开发、暂存、生产)的最佳实践是什么?

redis - 在 openshift 的另一个档位上与 redis 连接

tomcat - OpenShift 专业版 : Binary Deployment With Changed Version Of Tomcat Configuration

docker - OpenStack上的Docker在获取之后和生命周期之前,npm卡住了

openstack - 我想用 microStack 设置一个多节点 OpenStack,但它总是失败,我做错了什么?

kubernetes - Azure Kubernetes 服务 : using an NGINX ingress controller with a Ocelot-based API gateway

kubernetes - 如何撤消 kubectl create deploy?

azure - Azure Openshift 集群的持久卷

linux - Openstack-架桥