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

use*_*394 4 kubernetes

我正在尝试将 k8s 部署连接到(Oracle 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 Code Online (Sandbox Code Playgroud)

我想知道在标签部分中,指定“run”与“app”(我都见过使用过)之间到底有什么区别。我查阅了 k8s 文档,但找不到答案。

Jul*_*sta 5

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

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

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

根据 k8s文档

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

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

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

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


Arg*_*dhu 5

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

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