community.general.kubevirt_rs – Управление репликазеты виртуальных машин KubeVirt
Примечание
Этот плагин входит в коллекцию community.general (версия 1.3.2).
Для его установки используйте: ansible-galaxy collection install community.general
Для использования в плейбуке укажите: community.general.kubevirt_rs
Краткое описание
- Используйте Python SDK Openshift для управления состоянием репликазеты виртуальных машин KubeVirt.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- openshift >= 0.8.2
- python >= 2.7
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии | |
|---|---|---|---|
| affinity словарь | Описывает правила планирования аффинитета узла для виртуальной машины. | ||
| hard словарь | Если требования аффинитета, указанные в этом поле, не выполняются во время планирования, виртуальная машина не будет запланирована на узел. Если требования аффинитета, указанные в этом поле, перестают выполняться в какой-то момент во время выполнения виртуальной машины (например, из-за обновления метки виртуальной машины), система может или не может попытаться в конечном итоге удалить виртуальную машину с узла. При наличии нескольких элементов списки узлов, соответствующие каждому term, пересекаются, т.е. должны быть удовлетворены все условия. | ||
| soft словарь | Планировщик будет отдавать предпочтение планированию виртуальных машин на узлы, которые удовлетворяют выражениям аффинитета, указанным в этом поле, но он может выбрать узел, нарушающий одно или несколько выражений. Узел, который предпочтительнее всего, — это узел с наибольшей суммой весов, т.е. для каждого узла, который удовлетворяет всем требованиям планирования (запрос ресурсов, выражения аффинитета requiredDuringScheduling и т.д.), вычислить сумму, перебирая элементы этого поля и добавляя weight к сумме, если узел имеет виртуальные машины, которые соответствуют соответствующему term; узлы с наибольшей суммой являются наиболее предпочтительными. | ||
| anti_affinity словарь | Описывает правила планирования антиаффинитета виртуальной машины, например, избегание размещения этой виртуальной машины на том же узле, зоне и т.д., что и некоторые другие виртуальные машины. | ||
| hard словарь | Если требования антиаффинитета, указанные в этом поле, не выполняются во время планирования, виртуальная машина не будет запланирована на узел. Если требования антиаффинитета, указанные в этом поле, перестают выполняться в какой-то момент во время выполнения виртуальной машины (например, из-за обновления метки виртуальной машины), система может или не может попытаться в конечном итоге удалить виртуальную машину с узла. При наличии нескольких элементов списки узлов, соответствующие каждому term, пересекаются, т.е. должны быть удовлетворены все условия. | ||
| soft словарь | Планировщик будет отдавать предпочтение планированию виртуальных машин на узлы, которые удовлетворяют выражениям антиаффинитета, указанным в этом поле, но он может выбрать узел, нарушающий одно или несколько выражений. Узел, который предпочтительнее всего, — это узел с наибольшей суммой весов, т.е. для каждого узла, который удовлетворяет всем требованиям планирования (запрос ресурсов, выражения антиаффинитета requiredDuringScheduling и т.д.), вычислить сумму, перебирая элементы этого поля и добавляя weight к сумме, если узел имеет виртуальные машины, которые соответствуют соответствующему term; узлы с наибольшей суммой являются наиболее предпочтительными. | ||
| api_key строка | Токен, используемый для аутентификации с API. Также может быть указан через переменную среды K8S_AUTH_API_KEY. | ||
| bootloader строка | Укажите загрузчик виртуальной машины. По умолчанию все виртуальные машины используют BIOS для загрузки. | ||
| ca_cert путь | Путь к сертификату CA, используемому для аутентификации с API. Для предотвращения ошибок проверки сертификата необходимо предоставить весь цепочку сертификатов. Также можно указать через переменную среды K8S_AUTH_SSL_CA_CERT. псевдонимы: ssl_ca_cert | ||
| client_cert путь | Путь к сертификату, используемому для аутентификации с API. Также можно указать через переменную среды K8S_AUTH_CERT_FILE. псевдонимы: cert_file | ||
| client_key путь | Путь к файлу ключа, используемому для аутентификации с API. Также можно указать через переменную среды K8S_AUTH_KEY_FILE. псевдонимы: key_file | ||
| cloud_init_nocloud словарь | Представляет источник пользовательских данных cloud-init NoCloud. Данные NoCloud будут добавлены в качестве диска к виртуальной машине. В гостевой системе требуется правильная установка cloud-init. Дополнительная информация https://kubevirt.io/api-reference/master/definitions.html#_v1_cloudinitnocloudsource
| ||
| context строка | Имя контекста, найденного в файле конфигурации. Также можно указать через переменную среды K8S_AUTH_CONTEXT. | ||
| cpu_cores целое число | Количество ядер процессора. | ||
| cpu_features список / элементы=строка | Список словарей для настройки функций, предоставляемых выбранной моделью процессора.
Примечание: атрибут политики может быть опущен или содержать одну из следующих политик: force, require, optional, disable, forbid.
Примечание: в случае, если политика опущена для функции, она по умолчанию будет require. Дополнительная информация о политиках: https://libvirt.org/formatdomain.html#elementsCPU
| ||
| cpu_limit целое число | Преобразуется в значение millicore и умножается на 100. Результирующее значение — это общее количество времени работы процессора, которое может использовать контейнер каждые 100 мс. Виртуальная машина не может использовать больше своего времени работы процессора в течение этого интервала. | ||
| cpu_model строка | Модель процессора. Список доступных моделей можно посмотреть здесь: https://github.com/libvirt/libvirt/blob/master/src/cpu_map/index.xml.
Примечание: Пользователь может определить модель процессора по умолчанию как default-cpu-model в kubevirt-config ConfigMap, если не задано, используется host-model.
Примечание: Убедитесь, что модель процессора узла, на котором вы запускаете виртуальную машину, имеет ту же или более высокую семейство процессоров.
Примечание: Если модель процессора не была определена, у виртуальной машины будет модель процессора, наиболее близкая к той, которая используется на узле, на котором работает виртуальная машина. | ||
| cpu_shares целое число | Укажите доли процессорного времени. | ||
| disks список / элементы=строка | Список словарей, которые определяют диски виртуальной машины. Диск может быть доступен через четыре различных типа: disk, lun, cdrom, floppy. Все возможные параметры конфигурации доступны в https://kubevirt.io/api-reference/master/definitions.html#_v1_disk
Каждый диск должен указать volume, который объявляет тип тома диска. Все возможные параметры конфигурации тома доступны в https://kubevirt.io/api-reference/master/definitions.html#_v1_volume. | ||
| force булево |
| Если установлено значение no, и state — present, существующий объект будет заменён. | |
| headless строка | Укажите, должна ли виртуальная машина иметь подключенное минимальное конфигурирование устройства видео и графики. По умолчанию для VirtualMachineInstance будет применена минимальная конфигурация устройства видео и графики. Устройство видео совместимо с VGA и имеет размер памяти 16 МБ. | ||
| host строка | Укажите URL для доступа к API. Также можно указать через переменную среды K8S_AUTH_HOST. | ||
| hostname строка | Указывает имя хоста виртуальной машины. Имя хоста будет установлено либо через DHCP, cloud-init (если настроен), либо будет использовано имя виртуальной машины. | ||
| hugepage_size строка | Укажите размер огромной страницы. | ||
| interfaces список / элементы=строка | Интерфейс определяет виртуальный сетевой интерфейс виртуальной машины (также называется передним интерфейсом). Все возможные параметры конфигурации интерфейсов доступны в https://kubevirt.io/api-reference/master/definitions.html#_v1_interface
Каждый интерфейс должен указать network, который объявляет, к какому логическому или физическому устройству он подключен (также называется бэкендом). Все возможные параметры конфигурации сети доступны в https://kubevirt.io/api-reference/master/definitions.html#_v1_network. | ||
| kubeconfig путь | Путь к существующему файлу конфигурации Kubernetes. Если не указан и не указаны другие параметры подключения, клиент openshift попытается загрузить файл конфигурации по умолчанию из ~/.kube/config.json. Также можно указать через переменную среды K8S_AUTH_KUBECONFIG. | ||
| labels словарь | Метки — это пары «ключ/значение», которые прикреплены к виртуальным машинам. Метки предназначены для указания идентифицирующих атрибутов виртуальных машин, которые имеют смысл и относятся к пользователям, но не подразумевают семантики для основной системы. Метки могут быть использованы для организации и для выбора подмножеств виртуальных машин. Метки могут быть прикреплены к виртуальным машинам во время создания и впоследствии добавлены и изменены в любое время. Подробнее о метках, используемых для внутренней реализации https://kubevirt.io/user-guide/#/misc/annotations_and_labels
| ||
| machine_type строка | Тип машины QEMU — это фактический чипсет виртуальной машины. | ||
| memory string | Объем памяти, который должен быть запрошен виртуальной машиной. Например, 1024Mi. | ||
| memory_limit string | Максимальный объем памяти, который может быть использован виртуальной машиной. Например, 1024Mi. | ||
| merge_type list / elements=string |
| Указывает, нужно ли переопределить стандартный подход к слиянию патчей определенным типом. Если указано несколько типов слияния, они будут использоваться в заданном порядке. По умолчанию ['strategic-merge', 'merge'], что идеально подходит для использования одних и тех же параметров для типов ресурсов, которые объединяют пользовательские ресурсы и встроенные ресурсы, так как определения пользовательских ресурсов обычно не могут быть обновлены с помощью обычного стратегического слияния. | |
| name string / required | Имя набора реплик виртуальной машины. | ||
| namespace string / required | Пространство имен, в котором существует набор реплик виртуальной машины. | ||
| node_affinity dictionary | Описывает правила планирования привязки виртуальных машин, например, размещение виртуальной машины на одном узле, в одной зоне и т. д. вместе с другими виртуальными машинами. | ||
| hard dictionary | Если требования по привязки, указанные в этом поле, не выполнены на этапе планирования, виртуальная машина не будет размещена на узле. Если требования по привязки, указанные в этом поле, перестанут выполняться в какой-то момент во время выполнения виртуальной машины (например, из-за обновления), система может или не может попытаться в конечном итоге выгнать виртуальную машину с её узла. | ||
| soft dictionary | Планировщик отдаёт предпочтение размещению виртуальных машин на узлах, которые удовлетворяют выражениям привязки, указанным в этом поле, но может выбрать узел, нарушающий одно или несколько из них. Узел, который предпочтительнее всего, — это узел с наибольшей суммой весов, т. е. для каждого узла, который соответствует всем требованиям планирования (запрос ресурсов, выражения привязки requiredDuringScheduling и т. д.), вычислите сумму, перебирая элементы этого поля и добавляя weight к сумме, если узел соответствует соответствующим выражениям match_expressions; узлы с наибольшей суммой являются наиболее предпочтительными. | ||
| password string | Укажите пароль для аутентификации с API. Также может быть указан через переменную окружения K8S_AUTH_PASSWORD. Обратитесь к описанию параметра username, чтобы узнать, когда применим этот параметр. | ||
| persist_config boolean |
| Указать, сохранять ли токен обновления конфигурации kube. Также может быть указан через переменную окружения K8S_AUTH_PERSIST_CONFIG. Когда контекст k8s использует учетные данные пользователя с токенами обновления (например, oidc или gke/gcloud auth), токен обновляется библиотекой k8s python, но по умолчанию не сохраняется. Поэтому старый токен обновления может истечь, и следующая аутентификация может завершиться неудачей. Установка этого флага в значение true укажет библиотеке k8s python сохранить новый токен обновления в файл конфигурации kube. По умолчанию false. Обратите внимание, что текущая версия библиотеки k8s python пока не поддерживает установку этого флага в значение True. Исправление для этой библиотеки k8s python находится здесь: https://github.com/kubernetes-client/python-base/pull/169 | |
| proxy string | URL HTTP-прокси, который следует использовать для подключения. Также может быть указан через переменную окружения K8S_AUTH_PROXY. Обратите внимание, что этот модуль не подхватывает стандартные настройки прокси из среды (например, HTTP_PROXY). | ||
| replicas integer | Количество желаемых pod. Это указатель для различения явного нуля и отсутствия указания. По умолчанию replicas равняется 1, если набор реплик создаётся впервые. | ||
| resource_definition dictionary | Частичное YAML-описание создаваемого/обновляемого объекта. Здесь можно определить параметры ресурсов Kubernetes, не охваченные параметрами этого модуля. ПРИМЕЧАНИЕ: resource_definition имеет более низкий приоритет, чем параметры модуля. Если вы попытаетесь определить, например, metadata.namespace здесь, это значение будет проигнорировано, и вместо него будет использовано значение namespace. Псевдонимы: definition, inline | ||
| selector dictionary / required | Selector — это запрос метки над набором виртуальных машин. | ||
| smbios_uuid string | Для обеспечения согласованного представления виртуализированного оборудования для гостевой ОС можно задать UUID SMBIOS. | ||
| state string |
| Создание или удаление наборов реплик виртуальных машин. | |
| subdomain string | Если указано, полное доменное имя виртуальной машины будет hostname.subdomain.namespace.svc.cluster_domain. Если не указано, у виртуальной машины не будет имени домена. Запись DNS будет разрешать виртуальную машину, независимо от того, может ли сама виртуальная машина получить имя хоста. | ||
| tablets list / elements=string | Укажите планшеты, которые будут использоваться в качестве входных устройств. | ||
| username string | Укажите имя пользователя для аутентификации с API. Также может быть указан через переменную окружения K8S_AUTH_USERNAME. Обратите внимание, что это работает только с кластерами, настроенными для использования HTTP Basic Auth. Если ваш кластер имеет другой тип аутентификации (например, OAuth2 в OpenShift), этот параметр не будет работать должным образом, и вам следует обратиться к модулю k8s_auth, так как он может сделать то, что вам нужно. | ||
| validate_certs boolean |
| Указывает, нужно ли проверять сертификаты SSL API-сервера. Также может быть указан через переменную окружения K8S_AUTH_VERIFY_SSL. Псевдонимы: verify_ssl | |
| wait boolean |
|
True, если модуль должен ждать, пока ресурс не перейдёт в нужное состояние. | |
| wait_sleep string добавлено в 0.2.0 community.general | По умолчанию: 5 | Количество секунд, которые необходимо ждать между проверками. | |
| wait_timeout integer | По умолчанию: 120 | Время в секундах, которое модуль должен ждать, пока ресурс не перейдёт в нужное состояние. | |
Примечания
Примечание
- Клиент OpenShift Python оборачивает клиент K8s Python, предоставляя полный доступ ко всем API и моделям, доступным на обеих платформах. Подробную информацию о версии API и дополнительную информацию см. на странице https://github.com/openshift/openshift-restclient-python
- Чтобы избежать ошибок проверки сертификатов SSL при
validate_certs= True, полная цепочка сертификатов API-сервера должна быть предоставлена черезca_certили в файле kubeconfig. - Для использования этого модуля необходимо установить OpenShift Python SDK. Чтобы убедиться, что он установлен с правильной версией, можно создать следующую задачу: pip: name=openshift>=0.8.2
Примеры
- name: Create virtual machine replica set 'myvmir'
community.general.kubevirt_rs:
state: present
name: myvmir
namespace: vms
wait: true
replicas: 3
memory: 64M
labels:
myvmi: myvmi
selector:
matchLabels:
myvmi: myvmi
disks:
- name: containerdisk
volume:
containerDisk:
image: kubevirt/cirros-container-disk-demo:latest
path: /custom-disk/cirros.img
disk:
bus: virtio
- name: Remove virtual machine replica set 'myvmir'
community.general.kubevirt_rs:
state: absent
name: myvmir
namespace: vms
wait: true
Возвращаемые значения
Общие возвращаемые значения документированы здесь, следующие поля уникальны для этого модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| kubevirt_rs complex | успех | Набор реплик виртуальных машин, управляемый пользователем. Этот словарь содержит все значения, возвращаемые API KubeVirt; все параметры описаны здесь https://kubevirt.io/api-reference/master/definitions.html#_v1_virtualmachineinstance
|
Авторы
- Команда KubeVirt (@kubevirt)
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.10/collections/community/general/kubevirt_rs_module.html