Как использовать команду docker swarm update для изменения настроек кластера Docker Swarm

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь управлять и изменять настройки Docker Swarm. Вы начнете с инициализации Docker Swarm на своей машине, сделав ее менеджером кластера (swarm manager).

После инициализации вы узнаете, как просматривать текущую конфигурацию своего кластера с помощью команды docker swarm inspect. Это позволит вам увидеть настройки по умолчанию. Затем в рамках практического занятия вы научитесь обновлять ключевые параметры кластера, а именно период истечения срока действия сертификатов узлов и лимит хранения истории задач, используя команду docker swarm update. Наконец, вы убедитесь, что изменения были успешно применены, проверив настройки кластера еще раз.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/inspect -.-> lab-555246{{"Как использовать команду docker swarm update для изменения настроек кластера Docker Swarm"}} docker/system -.-> lab-555246{{"Как использовать команду docker swarm update для изменения настроек кластера Docker Swarm"}} end

Инициализация Docker Swarm

На этом этапе вы научитесь инициализировать Docker Swarm. Docker Swarm представляет собой группу машин, на которых запущен Docker и которые объединены в кластер. После присоединения к кластеру вы можете продолжать использовать знакомые вам команды Docker, а сам кластер распределит их по узлам.

Для инициализации кластера используйте команду docker swarm init. Эта команда превращает текущую машину в менеджер кластера (swarm manager).

Откройте терминал и выполните следующую команду для инициализации Docker Swarm:

docker swarm init

Вы должны увидеть вывод, похожий на следующий, который указывает на то, что кластер был успешно инициализирован и предоставляет команду для присоединения других узлов к этому кластеру:

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.99.100:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Эта команда делает текущую машину менеджером кластера. В реальной жизни обычно используется несколько менеджеров для обеспечения высокой доступности, но для этого практического занятия одного менеджера достаточно.

Просмотр текущих настроек кластера

На этом этапе вы научитесь просматривать текущие настройки вашего Docker Swarm. Это полезно для понимания текущей конфигурации и для проверки изменений после обновления настроек.

Для просмотра настроек кластера используйте команду docker swarm inspect. Эта команда предоставляет подробную информацию о кластере, включая его идентификатор, дату создания и различные настройки конфигурации.

Откройте терминал и выполните следующую команду для проверки Docker Swarm:

docker swarm inspect

Вывод будет представлять собой JSON - объект, содержащий конфигурацию кластера. Найдите раздел Spec, который содержит настраиваемые параметры. Обратите внимание на поля Orchestration и Dispatcher, так как они содержат настройки, связанные с историей задач и сертификатами узлов.

Например, вы можете увидеть вывод, похожий на следующий (точные значения могут отличаться):

[
  {
    "ID": "xxxxxxxxxxxx",
    "Version": {
      "Index": 10
    },
    "CreatedAt": "2023-10-27T10:00:00.000000000Z",
    "UpdatedAt": "2023-10-27T10:00:00.000000000Z",
    "Spec": {
      "Orchestration": {
        "TaskHistoryRetentionLimit": 5
      },
      "Raft": {
        "SnapshotInterval": 10000,
        "KeepOldSnapshots": 0,
        "LogEntriesForSlowFollowers": 500,
        "ElectionTick": 3,
        "HeartbeatTick": 1
      },
      "Dispatcher": {
        "HeartbeatPeriod": 5000000000
      },
      "CAConfig": {
        "NodeCertExpiry": 7776000000000000,
        "ExternalCAs": null,
        "SigningCACert": "...",
        "SigningCAKey": "...",
        "ForceRotate": 0
      },
      "TaskDefaults": {
        "LogDriver": null
      }
    },
    "TLSInfo": {
      "TrustRoot": "...",
      "CertIssuerSubject": "CN=swarm-ca",
      "CertIssuerPublicKey": "..."
    },
    "RootRotationInProgress": false
  }
]

В разделе Spec вы можете найти TaskHistoryRetentionLimit в секции Orchestration и NodeCertExpiry в секции CAConfig. Именно эти настройки мы будем изменять на следующих этапах.

Обновление срока действия сертификатов узлов

На этом этапе вы научитесь обновлять срок действия сертификатов узлов в вашем Docker Swarm. Сертификаты узлов используются для безопасного обмена данными между узлами кластера. По умолчанию эти сертификаты истекают через 3 месяца. Возможно, вам захочется изменить этот период в соответствии с вашими политиками безопасности и эксплуатационными потребностями.

Для обновления срока действия сертификатов узлов используйте команду docker swarm update с флагом --cert-expiry. Значение для --cert-expiry задается в виде строки, представляющей продолжительность времени, например, 24h означает 24 часа, 720h - 30 дней (720 часов), а 0 - отключение срока действия (не рекомендуется для использования в производственной среде).

Обновим срок действия сертификатов узлов до 30 дней (720 часов). Откройте терминал и выполните следующую команду:

docker swarm update --cert-expiry 720h

Вы должны увидеть подтверждение обновления в выводе:

Swarm updated.

Эта команда обновляет конфигурацию кластера, устанавливая новый срок действия сертификатов. Новые сертификаты узлов, выданные после этого обновления, будут иметь новый срок действия. Существующие сертификаты будут по-прежнему истекать в соответствии с датой их выдачи и предыдущими настройками срока действия, если вы не принудительно обновите сертификаты.

Обновление лимита хранения истории задач

На этом этапе вы научитесь обновлять лимит хранения истории задач в вашем Docker Swarm. Лимит хранения истории задач определяет, сколько завершенных или неудачных задач сохраняется в истории кластера. Хранение истории задач может быть полезно для отладки и мониторинга, но сохранение слишком большого количества задач может потреблять избыточные ресурсы.

Для обновления лимита хранения истории задач используйте команду docker swarm update с флагом --task-history-limit. Значение для --task-history-limit представляет собой целое число, обозначающее количество задач, которые нужно сохранить.

Обновим лимит хранения истории задач до 10. Откройте терминал и выполните следующую команду:

docker swarm update --task-history-limit 10

Вы должны увидеть вывод, подтверждающий обновление:

Swarm updated.

Эта команда обновляет конфигурацию кластера, чтобы сохранять историю последних 10 завершенных или неудачных задач.

Проверка обновленных настроек кластера

На этом последнем этапе вы убедитесь, что настройки кластера, обновленные на предыдущих этапах, были успешно применены. Вы снова используете команду docker swarm inspect и проверяете значения параметров NodeCertExpiry и TaskHistoryRetentionLimit.

Откройте терминал и выполните следующую команду для проверки настроек Docker Swarm:

docker swarm inspect

Просмотрите выходные данные в формате JSON. Найдите раздел Spec, а затем проверьте значения параметра NodeCertExpiry в разделе CAConfig и TaskHistoryRetentionLimit в разделе Orchestration.

Вы должны увидеть, что NodeCertExpiry теперь установлено в значение 2592000000000000 (что соответствует 30 дням в наносекундах), а TaskHistoryRetentionLimit установлено в значение 10.

Например, соответствующие части выходных данных должны выглядеть следующим образом:

[
    {
        ...
        "Spec": {
            "Orchestration": {
                "TaskHistoryRetentionLimit": 10
            },
            ...
            "CAConfig": {
                "NodeCertExpiry": 2592000000000000,
                ...
            },
            ...
        },
        ...
    }
]

Проверяя конфигурацию кластера, вы можете убедиться, что обновления были успешно применены.

Резюме

В этом практическом занятии вы научились инициализировать Docker Swarm с помощью команды docker swarm init, превращая текущую машину в менеджер кластера. Затем вы узнали, как просматривать текущие настройки кластера с помощью команды docker swarm inspect, которая предоставляет подробный вывод в формате JSON о конфигурации кластера, включая раздел Spec с настраиваемыми параметрами.

После инициализации и проверки настроек вы практиковали обновление конкретных параметров кластера. Вы научились изменять период истечения срока действия сертификата узла и лимит хранения истории задач с помощью команды docker swarm update. Наконец, вы убедились, что эти изменения были успешно применены, снова использовав команду docker swarm inspect и проверив обновленную конфигурацию в выходных данных.