Kubernetes部署/服务规范应用程序与运行标签

Kubernetes部署/服务规范应用程序与运行标签,kubernetes,Kubernetes,我正在尝试将k8s部署连接到(Oracle DB)部署/服务。以下是我的DB部署和服务: apiVersion: v1 kind: Service metadata: name: oracle-db labels: app: oracle-db spec: ports: - name: oracle-db port: 1521 protocol: TCP targetPort: 1521 selector: app: oracle-db

我正在尝试将k8s部署连接到(Oracle DB)部署/服务。以下是我的DB部署和服务:

apiVersion: v1
kind: Service
metadata:
  name: oracle-db
  labels:
    app: oracle-db
spec:
  ports:
  - name: oracle-db
    port: 1521
    protocol: TCP
    targetPort: 1521
  selector:
    app: oracle-db
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: oracle-db-depl
  labels:
    app: oracle-db
spec:
  selector:
    matchLabels:
      app: oracle-db
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: oracle-db
    spec:
      containers:
      - name: oracle-db
        image: oracledb:latest
        imagePullPolicy: Always
        ports:
        - containerPort: 1521
        env:
          ...

在标签部分,我想知道指定“run”和“app”(我都见过)之间的区别到底是什么。我浏览了k8s文档,没有找到答案。

实际上
run
app
之间的唯一区别是名称,标签用于在Kubernetes中识别对象,您可以给出您喜欢的名称,而不一定是app或run

您可能会在网上找到很多
run
,因为如果您通过命令命令创建对象,标签
run
将自动为您放置

当然,您可以将其更改为对您更有意义的键/值对

根据k8s:

标签用于指定对用户有意义和相关的对象的标识属性,但不直接暗示核心系统的语义

标签可用于组织和选择对象的子集

标签可以在创建时附着到对象,随后可以随时添加和修改。每个对象都可以定义一组键/值标签

对于给定对象,每个键都必须是唯一的


标签是任意的键值对。
app
run
没有特殊含义。可以为标签选择任何键和值。但是需要记住的一点是,服务的选择器需要有一个与部署中指定为标签的标签相匹配的标签,否则它将无法工作

因此,如果部署中有
app:oracle db
标签,则在服务选择器中有
app:oracle db
,如果部署中有
run:oracle db
标签,则在服务选择器中有
run:oracle db