我从 git 存储库(基于 Docker 的应用程序)创建了构建配置。
oc new-build <git-url> --name=myApp
使用以下方法创建部署配置:
oc create dc myApp --image=<image-stream-repo>
我正在从 UI 向此部署配置添加标签。
- 现在,当我部署应用程序(从 UI)或使用
oc rollout
,POD 已创建,应用程序正在 POD 中运行。
但标签(名称:myApp)未应用于 POD。因此 selector
在service
无法识别 POD。该服务配置有标签 name: myApp
作为 POD 选择器。
如果我转到创建的 POD 和 edit yaml
并添加 name: myApp
在labels
部分,只有那时 POD 才被服务识别。
如果有人遇到过类似问题,请提供您的意见以解决此问题。
最佳答案
要使用 DeploymentConfig
在 Pod
上设置标签,标签必须放置在嵌套更深的键中,如下所示,否则它将被在 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/