В чем разница между модулем и развертыванием в kubernetes?


Я создавал стручки с type:deployment но я вижу, что некоторые документы использует type:pod, точнее документация для multi-контейнер, модули:

apiVersion: v1
kind: Pod
metadata:
  name: ""
  labels:
    name: ""
  namespace: ""
  annotations: []
  generateName: ""
spec:
  ? "// See 'The spec schema' for details."
  : ~

но для создания стручков я могу просто использовать тип развертывания:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: ""
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: ""
    spec:
      containers:
        etc

Я заметил, что документация pod говорит:

команда create может быть использована для непосредственного создания модуля, или она может создайте модуль или модули с помощью развертывания. Оно сильно рекомендуемый что вы используете для создания РМО. Он наблюдает за неудачей стручки и запустят новые стручки по мере необходимости для поддержания указанного число. Если вы не хотите, чтобы развертывание контролировало ваш модуль (например, ваш pod записывает непостоянные данные, которые не переживут перезапуск, или ваш стручок должен быть очень недолговечным), вы можете создать стручок непосредственно с помощью команды create.

Примечание: мы рекомендуем использовать для создания капсулы. Вы должны использовать этот инструкции ниже, только если вы не хотите создавать развертывание.

но при этом возникает вопрос о том, что kind:pod хорошо? Можете ли вы каким-то образом ссылаться на модули в развертывании? Я не видел выхода. Похоже, что вы получаете со стручками некоторые дополнительные метаданные, но ни один из вариантов развертывания, таких как replica или политику перезагрузки. Что хорошего в модуле, который не сохраняет данные, переживает перезапуск? Я думаю, что смогу создать многоконтейнерный модуль с развертыванием как что ж.

2 69

2 ответа:

и Pod, и развертывание являются полноценными объектами в API Kubernetes. Развертывание управляет созданием модулей с помощью реплик. Что это сводится к тому, что развертывание будет создавать модули со спецификациями, взятыми из шаблона. Весьма маловероятно, что вам когда-либо понадобится создавать стручки непосредственно для производственного варианта использования.

ответ Радека очень хорош, но я хотел бы поделиться своим опытом, вы почти никогда не будете использовать объект С видpod, потому что это не имеет никакого смысла на практике.

потому что ты нужен развертывание объект-или другие объекты API Kubernetes, такие как контроллер репликации или replicaset - это нужно держать реплики (стручки) жив (это точки с помощью kubernetes).

что вы будете использовать на практике для стандартного приложения являются:

  1. развертывание объекта (где вы укажете свой контейнер/контейнеры приложений), в котором будет размещен контейнер вашего приложения с некоторыми другими спецификациями.

  2. сервис объекта (это похоже на объект группировки и дает ему так называемый виртуальный IP (cluster IP) для pods которые имеют определенную метку - а те pods в основном это контейнеры приложений, которые вы развернули с прежним развертывание