Модуль управления конфигурациями узлов (Shturval Node Config)

Модуль управления конфигурациями узлов (Shturval Node Config) является продуктом внутренней разработки платформы “Штурвал”.

Shturval Node Config обеспечивает:

  • централизованное управление конфигурационными параметрами узлов кластера;
  • автоматическое применение конфигураций на узлах кластера;
  • защиту работоспособности кластера.

Модуль является критически важным для работы платформы “Штурвал” (недоступен для отключения). По умолчанию модуль устанавливается в клиентские кластеры и кластер управления во включенном состоянии.

Для просмотра состояния сервиса перейдите на страницу Установленные сервисы раздела Сервисы и репозитории. Найдите Модуль управления конфигурациями узлов (shturval-node-config) и нажмите Управлять.

Скриншот

std1 std

Для корректной работы модуля должен быть включен Компонент модуля управления конфигурациями узлов (shturval-node-config-crds).

Контроллер Shturval Node Config оперирует кастомными ресурсами (Custom Resource):

NCI

Для применения конфигурации узлов контроллер использует кастомные ресурсы NodeConfigItems (NCI). NCI могут быть переиспользованы в разных кластерах. Механизм лейблов позволяет выбирать узлы, для которых требуется применение NCI.

Пример NCI
apiVersion: node.shturval.tech/v1beta2
kind: NodeConfigItem
metadata:
  annotations:
    updatedDate: 2025-02-26T10:18:40Z
    username: kubernetes-admin
  creationTimestamp: 2025-02-26T10:18:40Z
  finalizers:
    - node.shturval.tech/finalizer
  generation: 13
  name: generic-init-config
  resourceVersion: "1993844"
  uid: c64d9844-6928-4742-822a-c75141dcf556
spec:
  certificates:
    - exist: true
      name: shturval.crt
      url: repo.su:443
  files:
    - group: root
      mode: "0700"
      owner: root
      path: /etc/kubernetes
      type: directory
  nodeconfigselector:
    kubernetes.io/os: linux
  packages:
    - adhoccmd:
        postinstallmustsucceed: false
        preinstallmustsucceed: false
      name: shturvald
      setlock: false
      state: present
      version: 2.11.0
  runtimecfg:
    cgroupdriver: systemd
    pauseimage: r.shturval.tech/pause:3.10
    registries:
      - capabilities:
          - resolve
          - pull
        host: https://repo.su:443
        name: r.shturval.tech
  sysctl:
    file: /etc/sysctl.d/90-shturval.conf
    param:
      fs.inotify.max_user_instances: "8192"
      kernel.panic: "10"
      kernel.panic_on_oops: "1"
      net.bridge.bridge-nf-call-iptables: "1"
      net.ipv4.ip_forward: "1"
      vm.max_map_count: "262144"
      vm.overcommit_memory: "1"
  systemdunits:
    - active: true
      enabled: true
      name: containerd
    - active: true
      enabled: true
      name: kubelet
status:
  ready: true
  selectednodeconfigs: # Выбранные узлы для применения конфигурации
    - redos5t6q
    - redos9aex
  updatednodeconfigs:  # Список узлов, к которым применена конфигурация
    - redos5t6q
    - redos9aex

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

  • создания Linux-пользователей для системных компонентов на Control Plane узлах;
  • настройки KubeAPI-сервера на Control Plane узлах;
  • настройки параметров Container Runtime, параметры Sysctl, Systemd-юниты, период ротации кубовых сертификатов, доверенные сертификаты;
  • установки пакетов для shturvald (containerd) на всех узлах.

В некоторых случаях для применения изменений конфигурации узла или при обновлении кластера может потребоваться перезапуск узла. В таких случаях Shturval Node Config обеспечивает автоматический перезапуск с предварительным распределением подов по другим узлам. Чтобы контролировать перезапуск узла в ручном режиме, воспользуйтесь инструкцией, как защитить узлы от автоматического перезапуска .

Node Config

Контроллер Shturval Node Config использует кастомные ресурсы (Custom Resource) Node Config (NC), в которых на основе селекторов агрегирует применяемые NCI к одному узлу.

Пример Node Config
apiVersion: node.shturval.tech/v1beta2
kind: NodeConfig
metadata:
  annotations:
    node.shturval.tech/initchecksum: 4b0ef0
    node.shturval.tech/ssh: accessed
  labels:
    beta.kubernetes.io/arch: amd64
    beta.kubernetes.io/os: linux
    hostname: redos5t6q
    infra: vsphere
    kubernetes.io/arch: amd64
    kubernetes.io/hostname: redos5t6q
    kubernetes.io/os: linux
    node-role.kubernetes.io/workers: ''
    node.shturval.tech/applygroup: workers
  name: redos5t6q
  ownerReferences:
    - apiVersion: v1
      blockOwnerDeletion: true
      controller: true
      kind: Node
      name: redos5t6q
      uid: 257f60b0-9b5d-4b8a-b124-e0bd443cfd6f
    - apiVersion: node.shturval.tech/v1beta2
      kind: NodeConfigItem
      name: generic-init-config
      uid: c64d9844-6928-4742-822a-c75141dcf556
status:
  ncistate:
    - name: generic-init-config
      state: applied
  ready: true
spec:
  applygroup: workers
  nodeconfigitems: # Список NCI для конфигурации узла
    - generic-init-config
×