как игнорировать случайное имя модуля kubernetes в файле развертывания - PullRequest
1 голос
/ 15 апреля 2020

Ниже приведен мой файл развертывания kubernetes -

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: boxfusenew
  labels:
    app: boxfusenew
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: boxfusenew
    spec:
      containers:
      - image: sk1997/boxfuse:latest
        name: boxfusenew
        ports:
        - containerPort: 8080

В этом файле развертывания в теге контейнера boxfusenew указано имя модуля. Поэтому я хочу, чтобы модуль, сгенерированный файлом развертывания, имел имя boxfusenew , но при развертывании ему присваивается случайное значение в виде - boxfusenew-5f6f67fc5-kmb7z .

Можно ли игнорировать случайные значения в имени модуля через файл развертывания ??

Ответы [ 2 ]

2 голосов
/ 15 апреля 2020

Не совсем, если вы не создаете сам Pod, а не развертывание.

Согласно документации Kubernetes :

Каждый объект в вашем кластере имеет Имя, которое является уникальным для этого типа ресурса. Каждый объект Kubernetes также имеет уникальный UID для всего кластера.

Например, в одном и том же пространстве имен может быть только один Pod с именем myapp-1234, но вы можете иметь один Pod и один Deployment, которые каждый с именем myapp-1234.

Для неуникальных предоставленных пользователем атрибутов Kubernetes предоставляет метки и аннотации.

Если вы создаете Pod с указанной c уникальной меткой, Вы можете использовать эту метку для запроса Pod, так что вам не нужно иметь точное имя.

Вы можете использовать jsonpath для запроса значений, которые вы хотите получить от вашего Pod при указанном развертывании c. Я создал пример, который может дать вам представление:

kubectl get pods -o=jsonpath='{.items[?(@.metadata.labels.app=="boxfusenew")].metadata.name}'

Это вернет имя модуля, который содержит метку app=boxfusenew. Вы можете взглянуть на некоторые другие примеры jsonpath здесь и здесь .

1 голос
/ 15 апреля 2020

Во-первых, какой вариант использования вы хотите достичь? Если вы хотите просто получить доступные модули, относящиеся к определенному развертыванию, вы можете использовать label и селектор. Например:

kubectl -n <namespace> get po -l <key>=<value>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...