---
title: 'User data в группах нод Managed Kubernetes'
sidebar_label: 'User data'
description: 'Как указать пользовательские параметры для настройки кластера, примеры скриптов с user data'
sidebar_position: 11
toc_max_heading_level: 3
---

import Formbricks from '@theme/MDXComponents/Formbricks'
import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'

# User data в группах нод Managed Kubernetes

User data в группах нод Managed Kubernetes — пользовательские параметры для настройки и персонализации нод кластера. Передаются как скрипт в формате cloud-config (текстовые файлы с YAML-синтаксисом) или как bash-скрипт. Скрипты автоматически кодируются в Base64, а затем передаются на сервер, на котором расположены ноды кластера Managed Kubernetes. На сервере скрипты выполняются с помощью агента [cloud-init](https://cloud-init.io/). Использование user data помогает ускорить и автоматизировать процесс настройки нод кластера Managed Kubernetes.

[Указать user data](#specify-user-data) можно при создании кластера или добавлении новой группы нод.

Подробнее о форматах скриптов cloud-config и bash в инструкции [User data formats](https://cloudinit.readthedocs.io/en/latest/topics/format.html) документации cloud-init.

В скриптах можно передавать параметры для настройки рабочих нод и
установки дополнительного программного обеспечения на ноды вне кластера Managed Kubernetes. Например:

* [отключить IPv6](#disable-ipv6);
* [создать каталог и загрузить в него файлы по сети](#create-directory-download-file).

## Указать user data \{#specify-user-data}

Указать user data можно при создании кластера на [облачном сервере](/managed-kubernetes/create/create-cloud-cluster.mdx) и [выделенном сервере](/managed-kubernetes/create/create-dedicated-cluster.mdx) или при [добавлении новой группы нод](/managed-kubernetes/node-groups/create-node-group.mdx):

* в панели управления — скрипт с данными, которые не закодированы в Base64, в поле **User data**. Максимальный размер скрипта с данными, которые не закодированы в Base64, — 47 КБ;

* через Terraform — только скрипт с данными, которые закодированы в Base64, в аргумент **user\_data**. Максимальный размер скрипта — 65 535 байт. Применимо только для кластера на облачном сервере.

После добавления user data изменить скрипт нельзя.

## Примеры user data \{#user-data-script-examples}

### Отключить IPv6 \{#disable-ipv6}

<Tabs queryString="disable-ipv6">
  <TabItem value="cloud-config" default>
    <TabItemLabel>
      Cloud-config
    </TabItemLabel>

    ```yaml
    #cloud-config

    runcmd:
    - echo "options ipv6 disable=1" >> /etc/modprobe.d/ipv6.conf
    - sysctl -a
    - DisableIPv6Conf="/etc/sysctl.d/99-ipv6-disable.conf"
    - cat /dev/null > $DisableIPv6Conf
    - echo '# Custom sysctl Parameter for ipv6 disable' >> $DisableIPv6Conf
    - echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> $DisableIPv6Conf
    - echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> $DisableIPv6Conf
    - sysctl --system
    - sysctl -p
    - sysctl -a | grep -ie "local_port" -ie "ipv6" | sort
    ```
  </TabItem>

  <TabItem value="bash-script">
    <TabItemLabel>
      Bash-скрипт
    </TabItemLabel>

    ```bash
    #!/bin/bash -v
    # Disable IPv6 Kernel Module
    echo "options ipv6 disable=1" >> /etc/modprobe.d/ipv6.conf
    # Disable IPv6 Kernel Parameter
    sysctl -a
    DisableIPv6Conf="/etc/sysctl.d/99-ipv6-disable.conf"
    cat /dev/null > $DisableIPv6Conf
    echo '# Custom sysctl Parameter for ipv6 disable' >> $DisableIPv6Conf
    echo 'net.ipv6.conf.all.disable_ipv6 = 1' >> $DisableIPv6Conf
    echo 'net.ipv6.conf.default.disable_ipv6 = 1' >> $DisableIPv6Conf
    sysctl --system
    sysctl -p
    sysctl -a | grep -ie "local_port" -ie "ipv6" | sort
    ```
  </TabItem>
</Tabs>

### Создать каталог и загрузить в него файлы по сети \{#create-directory-download-file}

<Tabs queryString="create-directory-download-file">
  <TabItem value="cloud-config" default>
    <TabItemLabel>
      Cloud-config
    </TabItemLabel>

    ```yaml
    #cloud-config

    runcmd:
    - mkdir /run/mydir
    - [ wget, "http://example.com", -O, /run/mydir/index.html ]
    ```
  </TabItem>

  <TabItem value="bash-script">
    <TabItemLabel>
      Bash-скрипт
    </TabItemLabel>

    ```bash
    #!/bin/bash
    mkdir /run/mydir
    wget http://example.com -O /run/mydir/index.html
    ```
  </TabItem>
</Tabs>

<Formbricks />
