Awx-operator: Неверное количество экземпляров AWX (неуправляемый PostgreSQL, реплики> 1)

Созданный на 9 июл. 2021  ·  13Комментарии  ·  Источник: ansible/awx-operator

ТИП ВЫПУСКА
  • Сообщение об ошибке
РЕЗЮМЕ

После создания развертывания AWX с внешним (неуправляемым) PostgreSQL api / v2 / instance показывает количество <реплик

СРЕДА
  • Версия AWX: 19.1.0
  • Версия оператора: 0.12.0
  • Версия Kubernetes: 1.17.9
  • Метод установки AWX: оператор
ДЕЙСТВИЯ ПО ВОСПРОИЗВЕДЕНИЮ

kubectl apply -f awx-deploy.yml

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
  namespace: awx
spec:
  replicas: 2
  image_version: 19.1.0
  admin_user: admin
  admin_password_secret: awx-admin-password
  ingress_type: ingress
  ingress_annotations: |
   kubernetes.io/ingress.class: nginx
  hostname: awx-demo.example.com
  ingress_tls_secret: awx-ingress-tls
  web_resource_requirements:
     requests:
       cpu: 400m
       memory: 2Gi
     limits:
       cpu: 1000m
       memory: 4Gi
  task_resource_requirements:
     requests:
       cpu: 250m
       memory: 1Gi
     limits:
       cpu: 500m
       memory: 2Gi
  ee_resource_requirements:
     requests:
       cpu: 250m
       memory: 1Gi
     limits:
       cpu: 500m
       memory: 2Gi

---
apiVersion: v1
kind: Secret
metadata:
  name: awx-postgres-configuration
  namespace: awx
stringData:
  host: XXXX
  port: "XXXX"
  database: XXX
  username: XXX
  password: XXX
  type: unmanaged
type: Opaque
ОЖИДАЕМЫЕ РЕЗУЛЬТАТЫ

Конфигурация AWX HA с 2 экземплярами

ФАКТИЧЕСКИЕ РЕЗУЛЬТАТЫ

api / v2 / ping /

{
    "ha": false,
    "version": "19.1.0",
    "active_node": "awx-5776c59677-h9mrj",
    "install_uuid": "ba8b8bc6-1010-4e09-b5b2-08cc06901800",
    "instances": [
        {
            "node": "awx-5776c59677-h9mrj",
            "uuid": "5b18352d-24e7-47ce-a18d-e0e4cbd994d5",
            "heartbeat": "2021-07-09T09:09:26.165742Z",
            "capacity": 0,
            "version": "19.1.0"
        }
    ],
    "instance_groups": [
        {
            "name": "tower",
            "capacity": 0,
            "instances": []
        }
    ]
}

API / v2 / экземпляры /

{
    "count": 1,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 1,
            "type": "instance",
            "url": "/api/v2/instances/1/",
            "related": {
                "jobs": "/api/v2/instances/1/jobs/",
                "instance_groups": "/api/v2/instances/1/instance_groups/"
            },
            "uuid": "5b18352d-24e7-47ce-a18d-e0e4cbd994d5",
            "hostname": "awx-5776c59677-h9mrj",
            "created": "2021-07-09T09:08:31.072893Z",
            "modified": "2021-07-09T09:09:26.165742Z",
            "capacity_adjustment": "1.00",
            "version": "19.1.0",
            "capacity": 0,
            "consumed_capacity": 0,
            "percent_capacity_remaining": 0.0,
            "jobs_running": 0,
            "jobs_total": 0,
            "cpu": 0,
            "memory": 0,
            "cpu_capacity": 0,
            "mem_capacity": 0,
            "enabled": true,
            "managed_by_policy": true
        }
    ]
}

kubectl get pods -n awx
НАЗВАНИЕ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ ВОЗВРАЩАЕТСЯ
awx-5776c59677-74964 4/4 Бег 0 14 м
awx-5776c59677-h9mrj 4/4 Бег 0 14 мес.

kubectl exec pod / awx-5776c59677-74964 -n awx -c awx-web -it - / bin / bash
bash-4.4 $ awx-управление check_db
Версия базы данных: PostgreSQL 12.7 (Ubuntu 12.7-1.pgdg18.04 + 1) на x86_64-pc-linux-gnu, скомпилированный gcc (Ubuntu 7.5.0-3ubuntu1 ~ 18.04) 7.5.0, 64-разрядная версия

журналы kubectl -n awx pod / awx-5776c59677-74964 -c awx-task

...
Файл "/var/lib/awx/venv/awx/lib64/python3.8/site-packages/awx/main/managers.py", строка 107, у меня
Raise RuntimeError ("Не найдено экземпляров с текущим идентификатором хоста кластера")
RuntimeError: не найден экземпляр с текущим идентификатором хоста кластера
2021-07-09 09: 17: 27,304 INFO exited: callback-Receiver (статус выхода 1; не ожидается)
...

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ

В управляемом PostgreSQL такой проблемы замечено не было.

Проблема решается после

kubectl rollout restart -n развертывание awx / awx

kubectl get pods -n awx
НАЗВАНИЕ ГОТОВ СОСТОЯНИЕ ВОЗРАСТ ВОЗВРАЩАЕТСЯ
awx-686dd7df69-52kgh 4/4 Бег 0 4 мин. 26 сек.
awx-686dd7df69-v8w2g 4/4 Работает 0 4 мин. 23 сек.

api / v2 / ping /

{
    "ha": true,
    "version": "19.1.0",
    "active_node": "awx-686dd7df69-52kgh",
    "install_uuid": "ba8b8bc6-1010-4e09-b5b2-08cc06901800",
    "instances": [
        {
            "node": "awx-686dd7df69-52kgh",
            "uuid": "ea773db2-7007-47a8-9987-16ddc79d6ec3",
            "heartbeat": "2021-07-09T09:33:46.787935Z",
            "capacity": 0,
            "version": "19.1.0"
        },
        {
            "node": "awx-686dd7df69-v8w2g",
            "uuid": "acef28b0-3977-4dbe-8c10-e9c4f11adab8",
            "heartbeat": "2021-07-09T09:33:52.378214Z",
            "capacity": 0,
            "version": "19.1.0"
        }
    ],
    "instance_groups": [
        {
            "name": "tower",
            "capacity": 0,
            "instances": []
        }
    ]
}

API / v2 / экземпляры /

{
    "count": 2,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 3,
            "type": "instance",
            "url": "/api/v2/instances/3/",
            "related": {
                "jobs": "/api/v2/instances/3/jobs/",
                "instance_groups": "/api/v2/instances/3/instance_groups/"
            },
            "uuid": "ea773db2-7007-47a8-9987-16ddc79d6ec3",
            "hostname": "awx-686dd7df69-52kgh",
            "created": "2021-07-09T09:33:46.194006Z",
            "modified": "2021-07-09T09:33:46.787935Z",
            "capacity_adjustment": "1.00",
            "version": "19.1.0",
            "capacity": 0,
            "consumed_capacity": 0,
            "percent_capacity_remaining": 0.0,
            "jobs_running": 0,
            "jobs_total": 0,
            "cpu": 0,
            "memory": 0,
            "cpu_capacity": 0,
            "mem_capacity": 0,
            "enabled": true,
            "managed_by_policy": true
        },
        {
            "id": 4,
            "type": "instance",
            "url": "/api/v2/instances/4/",
            "related": {
                "jobs": "/api/v2/instances/4/jobs/",
                "instance_groups": "/api/v2/instances/4/instance_groups/"
            },
            "uuid": "acef28b0-3977-4dbe-8c10-e9c4f11adab8",
            "hostname": "awx-686dd7df69-v8w2g",
            "created": "2021-07-09T09:33:51.780698Z",
            "modified": "2021-07-09T09:33:52.378214Z",
            "capacity_adjustment": "1.00",
            "version": "19.1.0",
            "capacity": 0,
            "consumed_capacity": 0,
            "percent_capacity_remaining": 0.0,
            "jobs_running": 0,
            "jobs_total": 0,
            "cpu": 0,
            "memory": 0,
            "cpu_capacity": 0,
            "mem_capacity": 0,
            "enabled": true,
            "managed_by_policy": true
        }
    ]
}

Позже, если масштабировать до 3-х реплик, проблема та же, но также решается с помощью

kubectl rollout restart -n развертывание awx / awx

ЖУРНАЛЫ AWX-ОПЕРАТОРА
bug needs_devel medium operator

Все 13 Комментарий

logs.tar.gz

файлы журнала операторов и контейнеров

@tchellomello @rooftopcellist Если у кого-нибудь из вас будет немного времени на следующей неделе, не могли бы вы помочь разобраться в этом?

Если это необходимо, я могу воспроизвести и предоставить вам kubeconfig и внешний IP-адрес для API на несколько часов.

Работал у меня с внешней БД на моем конце, но я копаю еще немного.

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
X-API-Node: awx-toca-657778f5cb-7pdrp
X-API-Product-Name: AWX
X-API-Product-Version: 19.2.2
X-API-Time: 0.023s

{
    "ha": true,
    "version": "19.2.2",
    "active_node": "awx-toca-657778f5cb-7pdrp",
    "install_uuid": "e27ea7cb-c400-45fe-a595-9bb5217c71ac",
    "instances": [
        {
            "node": "awx-toca-657778f5cb-7pdrp",
            "uuid": "3a34f8fe-8336-4910-8c47-7193694a9536",
            "heartbeat": "2021-07-10T19:35:26.186881Z",
            "capacity": 296,
            "version": "19.2.2"
        },
        {
            "node": "awx-toca-657778f5cb-lm776",
            "uuid": "fab5cf31-ae1d-4ddc-8b55-459618c20845",
            "heartbeat": "2021-07-10T19:35:52.645367Z",
            "capacity": 293,
            "version": "19.2.2"
        }
    ],
    "instance_groups": [
        {
            "name": "tower",
            "capacity": 0,
            "instances": []
        },
        {
            "name": "controlplane",
            "capacity": 589,
            "instances": [
                "awx-toca-657778f5cb-7pdrp",
                "awx-toca-657778f5cb-lm776"
            ]
        },
        {
            "name": "default",
            "capacity": 0,
            "instances": []
        }

kubectl get pods -w  | grep awx-toca                                                              15:35:01
awx-toca-657778f5cb-7pdrp                                  4/4     Running     0          2d14h
awx-toca-657778f5cb-lm776                                  0/4     Pending     0          0s
awx-toca-657778f5cb-lm776                                  0/4     Pending     0          0s
awx-toca-657778f5cb-lm776                                  0/4     Init:0/1    0          0s
awx-toca-657778f5cb-lm776                                  0/4     PodInitializing   0          1s
awx-toca-657778f5cb-lm776                                  4/4     Running           0          23s


[awx-toca-657778f5cb-lm776 awx-toca-web] 2021-07-10 19:36:00,757 INFO     [-] awx.main.consumers client 'specific.d10caed53de54b76b34bc914c0ab92b6!290a7011729a4e5b8558e9519d1afd95' joined the broadcast group. 
[awx-toca-657778f5cb-lm776 awx-toca-web] 2021-07-10 19:36:00,757 INFO     [-] awx.main.consumers client 'specific.d10caed53de54b76b34bc914c0ab92b6!290a7011729a4e5b8558e9519d1afd95' joined the broadcast group. 
[awx-toca-657778f5cb-lm776 awx-toca-web] 2021-07-10 19:36:00,757 INFO     client 'specific.d10caed53de54b76b34bc914c0ab92b6!290a7011729a4e5b8558e9519d1afd95' joined the broadcast group. 
[awx-toca-657778f5cb-lm776 awx-toca-web] RESULT 2 

Проблема, вероятно, возникает, когда image_version = 19.1.0
Пробовал с 19.2.2, создание 2 реплик прошло успешно.

Но если потом установить реплики: 3 (масштаб от 2 до 3)

kubectl apply -f awx-deploy.yml

api / v2 / ping /

{
    "ha": false,
    "version": "19.2.2",
    "active_node": "awx-848f64cdb4-29pcv",
    "install_uuid": "88b63b97-2942-49c5-bc5f-e5006a7b5456",
    "instances": [
        {
            "node": "awx-848f64cdb4-spt82",
            "uuid": "27494bf7-6fa2-489e-bdb3-82466edbd49c",
            "heartbeat": "2021-07-12T09:48:24.680690Z",
            "capacity": 79,
            "version": "19.2.2"
        }
    ],
    "instance_groups": [
        {
            "name": "controlplane",
            "capacity": 79,
            "instances": [
                "awx-848f64cdb4-spt82"
            ]
        },
        {
            "name": "default",
            "capacity": 0,
            "instances": []
        }
    ]
}
kubectl rollout restart -n awx deployment/awx

api / v2 / ping /

{
    "ha": true,
    "version": "19.2.2",
    "active_node": "awx-657cd5b84-t5htk",
    "install_uuid": "88b63b97-2942-49c5-bc5f-e5006a7b5456",
    "instances": [
        {
            "node": "awx-657cd5b84-g8kx2",
            "uuid": "30e28fc4-8c88-4922-a7e1-0196fe790f2f",
            "heartbeat": "2021-07-12T10:00:33.162404Z",
            "capacity": 79,
            "version": "19.2.2"
        },
        {
            "node": "awx-657cd5b84-rg9v4",
            "uuid": "501a0ff7-9043-46f4-baae-4602de3107d2",
            "heartbeat": "2021-07-12T10:00:36.591979Z",
            "capacity": 79,
            "version": "19.2.2"
        },
        {
            "node": "awx-657cd5b84-t5htk",
            "uuid": "a3308acc-04e9-4da7-88cf-71048d666ffb",
            "heartbeat": "2021-07-12T10:00:38.958448Z",
            "capacity": 79,
            "version": "19.2.2"
        }
    ],
    "instance_groups": [
        {
            "name": "controlplane",
            "capacity": 237,
            "instances": [
                "awx-657cd5b84-g8kx2",
                "awx-657cd5b84-rg9v4",
                "awx-657cd5b84-t5htk"
            ]
        },
        {
            "name": "default",
            "capacity": 0,
            "instances": []
        }
    ]
}

С replicas:2 это был результат AWX API.

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
X-API-Node: awx-toca-657778f5cb-lm776
X-API-Product-Name: AWX
X-API-Product-Version: 19.2.2
X-API-Time: 0.015s

{
    "ha": true,
    "version": "19.2.2",
    "active_node": "awx-toca-657778f5cb-lm776",
    "install_uuid": "e27ea7cb-c400-45fe-a595-9bb5217c71ac",
    "instances": [
        {
            "node": "awx-toca-657778f5cb-4bzps",
            "uuid": "617ccf03-2231-44ef-b512-7b97d3207feb",
            "heartbeat": "2021-07-25T03:09:29.263282Z",
            "capacity": 293,
            "version": "19.2.2"
        },
        {
            "node": "awx-toca-657778f5cb-lm776",
            "uuid": "fab5cf31-ae1d-4ddc-8b55-459618c20845",
            "heartbeat": "2021-07-25T03:09:49.130909Z",
            "capacity": 293,
            "version": "19.2.2"
        }
    ],
    "instance_groups": [
        {
            "name": "tower",
            "capacity": 0,
            "instances": []
        },
        {
            "name": "controlplane",
            "capacity": 586,
            "instances": [
                "awx-toca-657778f5cb-4bzps",
                "awx-toca-657778f5cb-lm776"
            ]
        },
        {
            "name": "default",
            "capacity": 0,
            "instances": []
        }
    ]
}

Затем изменил спецификацию AWX kubectl edit awx awx-toca и установил replicas:3 получил 3, как и ожидалось:

kubectl get pods -w | grep awx                                                                                          23:10:10
awx-operator-df789fd9c-rqn2k                               1/1     Running     0          32h
awx-toca-657778f5cb-4bzps                                  4/4     Running     0          32h
awx-toca-657778f5cb-lm776                                  4/4     Running     78         14d
awx-toca-657778f5cb-28fq9                                  0/4     Pending     0          0s
awx-toca-657778f5cb-28fq9                                  0/4     Pending     0          0s
awx-toca-657778f5cb-28fq9                                  0/4     Init:0/1    0          0s
awx-toca-657778f5cb-28fq9                                  0/4     PodInitializing   0          2s
awx-toca-657778f5cb-28fq9                                  4/4     Running           0          4s

Посмотрев API, все заработало, как и ожидалось:

HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
X-API-Node: awx-toca-657778f5cb-4bzps
X-API-Product-Name: AWX
X-API-Product-Version: 19.2.2
X-API-Time: 0.014s

{
    "ha": true,
    "version": "19.2.2",
    "active_node": "awx-toca-657778f5cb-4bzps",
    "install_uuid": "e27ea7cb-c400-45fe-a595-9bb5217c71ac",
    "instances": [
        {
            "node": "awx-toca-657778f5cb-28fq9",
            "uuid": "7801777c-93de-416f-841e-0eb9a1b721d2",
            "heartbeat": "2021-07-25T03:10:55.501238Z",
            "capacity": 296,
            "version": "19.2.2"
        },
        {
            "node": "awx-toca-657778f5cb-4bzps",
            "uuid": "617ccf03-2231-44ef-b512-7b97d3207feb",
            "heartbeat": "2021-07-25T03:11:29.447748Z",
            "capacity": 293,
            "version": "19.2.2"
        },
        {
            "node": "awx-toca-657778f5cb-lm776",
            "uuid": "fab5cf31-ae1d-4ddc-8b55-459618c20845",
            "heartbeat": "2021-07-25T03:10:49.231003Z",
            "capacity": 293,
            "version": "19.2.2"
        }
    ],
    "instance_groups": [
        {
            "name": "tower",
            "capacity": 0,
            "instances": []
        },
        {
            "name": "controlplane",
            "capacity": 882,
            "instances": [
                "awx-toca-657778f5cb-28fq9",
                "awx-toca-657778f5cb-4bzps",
                "awx-toca-657778f5cb-lm776"
            ]
        },
        {
            "name": "default",
            "capacity": 0,
            "instances": []
        }
    ]
}

Помните, что любая команда kubecl scale --replicas введенная вручную, будет отменена оператором. Все изменения должны производиться непосредственно в спецификации AWX. @tklsnk, поскольку я не могу воспроизвести его, не могли бы вы подтвердить шаги, которые вы выполнили для его увеличения?

После развертывания с репликами = 2 я редактирую awx-deploy.yml (задайте реплики = 3) и выполняю kubectl apply -f awx-deploy.yml

@tklsnk да, это то, что я сделал здесь со своей стороны, однако я не могу воспроизвести ту же проблему.

Хорошо, попробую с другим кластером k8s.
Спасибо.

Хорошо, попробую с другим кластером k8s.
Спасибо.

Есть обновления по этому @tklsnk?

Извините, у меня еще не было возможности попробовать это. Надеюсь сделать на этой неделе.

Работает как положено с альтернативным кластером k8s. Вероятно проблема с конкретной реализацией k8s конкретного облачного провайдера.

Спасибо за отзыв @tklsnk

Была ли эта страница полезной?
0 / 5 - 0 рейтинги