Подготовка кластера

Ознакомьтесь со следующими рекомендациями по подготовке кластера перед развертыванием ArcGIS Enterprise on Kubernetes.

Пространство имен

ArcGIS Enterprise on Kubernetes требует собственного выделенного пространства имен. Перед запуском сценария развертывания необходимо создать пространство имен. Для запуска нескольких развертываний ArcGIS Enterprise on Kubernetes в одном кластере потребуется уникальное пространство имен для каждого развертывания.

Квота ресурсов

В модулях ArcGIS Enterprise on Kubernetes определены запросы и ограничения для ЦПУ и памяти. Если в пространстве имен есть объект ResourceQuota, квота должна быть выше суммы запросов и ограничений всех модулей. Эти значения различаются в зависимости от выбранного архитектурного профиля, как описано ниже.

Примечание:

Если вы обновляетесь до 11.1, вы сначала должны обновить значения квоты ресурсов в области имен в соответствии с требованиями 11.1.

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

Профиль повышенной доступности:

spec: 
    hard: 
      limits.cpu: "230" 
      limits.memory: 394Gi 
      requests.cpu: "36" 
      requests.memory: 188Gi

Профиль стандартной доступности:

spec: 
    hard: 
      limits.cpu: "198" 
      limits.memory: 326Gi 
      requests.cpu: "32" 
      requests.memory: 130Gi

Профиль разработки:

spec: 
    hard: 
      limits.cpu: "144" 
      limits.memory: 226Gi 
      requests.cpu: "20" 
      requests.memory: 86Gi

Сетевые требования к пространству имен

Если вы используете Kubernetes NetworkPolicies, убедитесь, что в пространстве имен ArcGIS Enterprise разрешена непрерывная связь между модулем-модулем и модулем-сервисом.

Кроме того, убедитесь, что модули в пространстве имен имеют доступ к серверу Kubernetes API. Сервер API доступен через сервис, названный Kubernetes в пространстве имен по умолчанию. Модули ArcGIS Enterprise используют полное доменное имя (FQDN) kubernetes.default.svc.cluster.local для запроса к серверу API.

Примечание:

cluter.local - домен кластера по умолчанию.

Политика безопасности модулей

Примечание:

PodSecurityPolicy было удалено в Kubernetes v1.25.

ArcGIS Enterprise on Kubernetes развертывает Elasticsearch для поддержки различных объектов организации ArcGIS Enterprise. По умолчанию Elasticsearch использует каталог mmapfs для хранения необходимых индексов. Ограничения операционной системы по умолчанию на количество карт могут быть недостаточными для развертывания. Elasticsearch рекомендует значение vm.max_map_count по умолчанию, равное 262144. Чтобы изменить значение по умолчанию, на каждом узле требуются повышенные (root) права.

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

  • Если у кластера Kubernetes нет политики безопасности модуля, но он разрешает запускать контейнеры как привилегированные, никаких действий выполнять не нужно:
  • Запуск как привилегированного - если в кластере Kubernetes определена безопасность модулей и разрешается запуск контейнеров как привилегированных, нужно разрешить служебной учетной записи Elasticsearch запускать контейнеры как привилегированные. Другим служебным учетным записям не требуется запускать контейнеры как привилегированные. ArcGIS Enterprise on Kubernetes может запускать привилегированный контейнер инициализации в узле, на котором работает Elasticsearch, что меняет значение vm.max_map_count. Скрипт развертывания ArcGIS Enterprise on Kubernetes создает служебную учетную запись, чтобы использовать аутентификацию сервера API для процессов внутри модулей. Модуль Elasticsearch использует собственную сервисную учетную запись, которая не используется совместно с другими рабочими нагрузками. Служебная учетная запись Elasticsearch по умолчанию - arcgis-elastic-serviceaccount. Вы можете предоставить служебной учетной записи доступ к политике безопасности модуля с помощью RBAC Roles и RoleBindings. Для OpenShift вы можете предоставить служебной учетной записи доступ к ограничениям привилегированного контекста безопасности, добавив следующее в разделе пользователя.
    “-system:serviceaccount: <Namespace>:arcgis-elastic-serviceaccount"
    
  • Запуск как привилегированного - если для кластера Kubernetes определена безопасность контейнеров и для служебной учетной записи ElasticSearch запрещен запуск контейнеров как привилегированных, вы должны подготовить каждый узел вручную, выполнив следующую команду от имени пользователя root:
    sysctl -w vm.max_map_count=262144
    
  • Если вы создали ресурс PodSecurityPolicy, нужно выполнить авторизацию следующих служебных учетных записей в пространстве имен ArcGIS Enterprise.
    • arcgis-admin-serviceaccount
    • arcgis-elastic-serviceaccount
    • arcgis-ingress-serviceaccount
    • arcgis-prometheus-serviceaccount
    • arcgis-queue-serviceaccount
    • по умолчанию

    Контейнеры ArcGIS Enterprise on Kubernetes можно запускать без прав root. Однако у управляющего аспекта fsGroup и supplementalGroups должен быть либо PodSecurityPolicy, либо RunAsAny диапазон, включающий значение 117932853, как показано в следующих примерах.

    supplementalGroups:
        rule: 'RunAsAny'
    fsGroup:
        rule: 'RunAsAny'
    
    supplementalGroups:
      rule: 'MustRunAs'
      ranges:
        # Forbid adding the root group.
        - min: 117932853
          max: 117932853
    
    fsGroup:
      rule: 'MustRunAs'
      ranges:
        # Forbid adding the root group.
        - min: 117932853
          max: 117932853
    

Примечание:

Необходимо разрешить подам в кластере запуск с FSGroup и SupplementalGroup ID 117932853.

Стандарты безопасности модулей

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

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

  • Привилегированный - это неограниченный стандарт безопасности модуля, который обеспечивает неограниченный доступ к широкому спектру разрешений. ArcGIS Enterprise может работать на этом уровне без каких-либо изменений конфигурации. Этот уровень допускает известное повышение прав доступа внутри кластера, поэтому запуск на этом уровне не рекомендуется.
  • Базовый уровень - это более ограниченный стандарт безопасности модулей, который предотвращает доступ к файловой системе хоста из модулей и имеет ограничения на типы других томов и возможностей. ArcGIS Enterprise может выполняться на базовом уровне принудительного исполнения с помощью изменения базовых рабочих узлов вне контекста запущенного приложения и установки для свойства ALLOW_PRIVILEGED_CONTAINERS значения false в файле свойств развертывания перед развертыванием.

    Чтобы обеспечить гибкость групп рабочих узлов, администратор должен использовать скриптовый процесс для увеличения значения параметра vm.max_map_count до 262144 на каждом вновь подготовленном узле путем непосредственного изменения шаблона запуска.

  • Ограниченный — ограниченный стандарт безопасности модуля предлагает самые строгие ограничения безопасности и требует, чтобы большинство свойств securityContext было задано явно. В этой версии ArcGIS Enterprise не может запускаться на ограниченном уровне.

Для получения дополнительной информации см. раздел Допуск к безопасности модулей и Стандарты безопасности модулей.

Сервер метрик

Чтобы воспользоваться преимуществами горизонтального автоматического масштабирования модулей в ArcGIS Enterprise on Kubernetes, серверу метрик необходимо извлекать показатели потребления ресурсов модулей из процесса kubelet на каждом запущенном узле. Дополнительные сведения см. в разделе Сервер метрик Kubernetes.