kubernetes命名空间中部署定义的唯一性

问题描述 投票:0回答:2

我们有多个环境,如dev,qa,prepod等。我们有基于环境的命名空间。现在我们将环境命名为后缀的服务。例如。,

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: k8s-order-service-develop-deployment
      namespace: dev
      labels:
        k8s-app: k8s-order-service-develop
    spec:
      selector:
        matchLabels:
          k8s-app: k8s-order-service-develop

相反,我可以在所有命名空间中使用以下内容吗?即deployment是否每个命名空间都是唯一的?

在开发环境中:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: k8s-order-service-deployment
      namespace: dev
      labels:
        k8s-app: k8s-order-service
    spec:
      selector:
        matchLabels:
          k8s-app: k8s-order-service

在qa env:

apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: k8s-order-service-deployment
      namespace: qa
      labels:
        k8s-app: k8s-order-service
    spec:
      selector:
        matchLabels:
          k8s-app: k8s-order-service
kubernetes namespaces
2个回答
2
投票

从部署定义中删除命名空间,并将其命名为deploy.yaml

 apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: k8s-order-service-develop-deployment
      labels:
        k8s-app: k8s-order-service-develop
    spec:
      selector:
        matchLabels:
          k8s-app: k8s-order-service-develop

然后,您可以使用以下命令将其部署在特定的命名空间中

kubectl create -f deploy.yaml -n <namespace-name>

ex: 
kubectl create -f deploy.yaml -n dev
kubectl create -f deploy.yaml -n qa

你可以看一下qazxsw poi的更多选择和灵活性

这样,您可以为不同的环境使用相同的部署文件。并且每个环境都与另一个环境隔离开来


0
投票

您绝对可以在不同的命名空间中创建相同的部署。在不正确的环境/命名空间中更新部署时要小心。使用命名空间作为shell提示符的一部分可能很有用。

© www.soinside.com 2019 - 2024. All rights reserved.