Spec-Zone.ru › Ansible

Создание объекта K8S

  • Введение
  • Требования к сценарию
  • Предположения
  • Ограничения
  • Описание примера

    • Ожидаемый результат
    • Устранение неполадок

Введение

Это руководство покажет, как использовать Ansible для создания объектов Kubernetes, таких как поды, развёртывания и секреты.

Требования к сценарию

  • Программное обеспечение

    • Необходимо установить Ansible версии 2.9.17 или выше
    • Модуль Python kubernetes должен быть установлен на контроллере Ansible (или на целевом узле, если выполнение производится не на localhost)
    • Кластер Kubernetes
    • Бинарный файл Kubectl, установленный на контроллере Ansible
  • Доступ / учётные данные

    • Kubeconfig, настроенный для указанного кластера Kubernetes

Предположения

  • У пользователя есть необходимые права для создания, удаления и обновления ресурсов в указанном кластере Kubernetes.

Ограничения

  • Коллекция community.kubernetes 2.0.0 переименована в kubernetes.core

Описание примера

В этом примере мы создадим под в указанном кластере Kubernetes. В следующем плейбуке Ansible показаны основные параметры, необходимые для этого.

---
- hosts: localhost
  collections:
    - kubernetes.core
  tasks:
    - name: Create a pod
      kubernetes.core.k8s:
        state: present
        definition:
          apiVersion: v1
          kind: Pod
          metadata:
            name: "utilitypod-1"
            namespace: default
            labels:
              app: galaxy
          spec:
            containers:
              - name: utilitypod
                image: busybox

Поскольку Ansible использует API Kubernetes для выполнения действий, в этом примере мы будем подключаться непосредственно к кластеру Kubernetes.

Для начала нам потребуется несколько сведений. Здесь используется Kubeconfig, предварительно настроенный на вашем компьютере. Обычно файл Kubeconfig находится по адресу ~/.kube/config. Настоятельно рекомендуется хранить конфиденциальную информацию, например пароли и сертификаты пользователей, более безопасным способом — с помощью ansible-vault или учётных данных Ansible Tower.

Теперь необходимо предоставить информацию о создаваемом поде. С помощью параметра definition модуля kubernetes.core.k8s указывается шаблон пода (PodTemplate). Этот шаблон пода идентичен тому, который передаётся команде kubectl.

Ожидаемый результат

  • После выполнения этого плейбука вы увидите небольшой фрагмент вывода в формате JSON. В нём показаны различные параметры, возвращённые модулем и кластером для только что созданного пода.
{
    "changed": true,
    "method": "create",
    "result": {
        "apiVersion": "v1",
        "kind": "Pod",
        "metadata": {
            "creationTimestamp": "2020-10-03T15:36:25Z",
            "labels": {
                "app": "galaxy"
            },
            "name": "utilitypod-1",
            "namespace": "default",
            "resourceVersion": "4511073",
            "selfLink": "/api/v1/namespaces/default/pods/utilitypod-1",
            "uid": "c7dec819-09df-4efd-9d78-67cf010b4f4e"
        },
        "spec": {
            "containers": [{
                "image": "busybox",
                "imagePullPolicy": "Always",
                "name": "utilitypod",
                "resources": {},
                "terminationMessagePath": "/dev/termination-log",
                "terminationMessagePolicy": "File",
                "volumeMounts": [{
                    "mountPath": "/var/run/secrets/kubernetes.io/serviceaccount",
                    "name": "default-token-6j842",
                    "readOnly": true
                }]
            }],
            "dnsPolicy": "ClusterFirst",
            "enableServiceLinks": true,
            "priority": 0,
            "restartPolicy": "Always",
            "schedulerName": "default-scheduler",
            "securityContext": {},
            "serviceAccount": "default",
            "serviceAccountName": "default",
            "terminationGracePeriodSeconds": 30,
            "tolerations": [{
                    "effect": "NoExecute",
                    "key": "node.kubernetes.io/not-ready",
                    "operator": "Exists",
                    "tolerationSeconds": 300
                },
                {
                    "effect": "NoExecute",
                    "key": "node.kubernetes.io/unreachable",
                    "operator": "Exists",
                    "tolerationSeconds": 300
                }
            ],
            "volumes": [{
                "name": "default-token-6j842",
                "secret": {
                    "defaultMode": 420,
                    "secretName": "default-token-6j842"
                }
            }]
        },
        "status": {
            "phase": "Pending",
            "qosClass": "BestEffort"
        }
    }
}
  • В примере выше значение ‘changed’ равно True, что означает, что в указанном кластере началось создание пода. В зависимости от вашей среды это может занять некоторое время.

Устранение неполадок

Что следует проверить

  • Проверьте правильность указанных имени пользователя и пароля
  • Проверьте, что в Kubeconfig указаны правильные значения

См. также

Клиент Python для Kubernetes

Страница клиента Python для Kubernetes на GitHub

Клиент Python для Kubernetes — трекер ошибок

Трекер ошибок клиента Python для Kubernetes

Установка Kubectl

Руководство по установке Kubectl

Работа с плейбуками

Введение в плейбуки

Использование зашифрованных переменных и файлов

Использование Vault в плейбуках

© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/kubernetes/core/docsite/kubernetes_scenarios/scenario_k8s_object.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API