Nano Hash - криптовалюты, майнинг, программирование

Запросить ЦП к модулю с помощью Azure AKS не удается

Я использую кластер AKS с K8s v1.16.15.

Я следую этому простому примеру, чтобы назначить некоторый процессор для модуля, и он не работает. https://kubernetes.io/docs/tasks/configure-pod-container/assign-cpu-resource/

После применения этого yaml-файла для запроса,

apiVersion: v1
kind: Pod
metadata:
  name: cpu-demo
  namespace: cpu-example
spec:
  containers:
  - name: cpu-demo-ctr
    image: vish/stress
    resources:
      limits:
        cpu: "1"
      requests:
        cpu: "0.5"
    args:
    - -cpus
- "2"

Если я попробую Kubectl describe pod ... я получу следующее:

Events:
Type     Reason            Age        From               Message
----     ------            ----       ----               -------
Warning  FailedScheduling  <unknown>   default-scheduler  0/1 nodes are available: 1 Insufficient cpu.

Но процессоры кажутся доступными, если я запускаю верхние узлы kubectl, я получаю:

CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%

702m         36%    4587Mi          100%

Возможно, это связано с какой-то конфигурацией AKS, но я могу это понять.

Вы имеете представление о том, что происходит?

Заранее большое спасибо!!

02.12.2020

Ответы:


1

Kubernetes будет решать, где модуль может планировать использование ресурсов, выделяемых узлами, а не реального использования ресурсов. Вы можете увидеть доступный для вашего узла ресурс, используя kubectl describe node <your node name>. Дополнительные сведения см. В разделе Емкость и выделяемая емкость. Как я вижу в журналах событий, 0/1 nodes are available: 1 Insufficient cpu., у вас есть только один рабочий узел, а у узла недостаточно ресурсов процессора для запуска вашего модуля с requests.cpu: "0.5". Планирование Pod основано на размере ресурса запросов, а не на его ограничениях.

02.12.2020

2

Предыдущий ответ хорошо объясняет причины, по которым это могло произойти. Что можно добавить, так это то, что при планировании модулей, в которых есть запрос, вы должны знать, какие ресурсы потребляют другие объекты кластера. Системные объекты также используют ваши ресурсы. Даже с небольшим кластером вы, возможно, включили какое-то дополнение, которое будет потреблять ресурсы узла.

Таким образом, у вашего узла есть определенный объем ЦП и памяти, который он может выделить для подов. При планировании планировщик будет учитывать только узлы с достаточным количеством нераспределенных ресурсов для удовлетворения ваших желаемых запросов. Если объем нераспределенного ЦП или памяти меньше того, что запрашивает модуль, Kubernetes не будет планировать этот модуль для этого узла, потому что этот узел не может предоставить минимальный объем, требуемый модулем.

Если вы опишете свой узел, вы увидите модули, которые уже работают и потребляют ваши ресурсы, и все allocated resources:

Namespace                   Name                                           CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                   ----                                           ------------  ----------  ---------------  -------------  ---
  default                     elasticsearch-master-0                         1 (25%)       1 (25%)     2Gi (13%)        4Gi (27%)      8d
  default                     test-5487d9b57b-4pz8v                          0 (0%)        0 (0%)      0 (0%)           0 (0%)         27d
  kube-system                 coredns-66bff467f8-rhbnj                       100m (2%)     0 (0%)      70Mi (0%)        170Mi (1%)     35d
  kube-system                 etcd-minikube                                  0 (0%)        0 (0%)      0 (0%)           0 (0%)         16d
  kube-system                 httpecho                                       0 (0%)        0 (0%)      0 (0%)           0 (0%)         34d
  kube-system                 ingress-nginx-controller-69ccf5d9d8-rbdf8      100m (2%)     0 (0%)      90Mi (0%)        0 (0%)         34d
  kube-system                 kube-apiserver-minikube                        250m (6%)     0 (0%)      0 (0%)           0 (0%)         16d
  kube-system                 kube-controller-manager-minikube               200m (5%)     0 (0%)      0 (0%)           0 (0%)         35d
  kube-system                 kube-scheduler-minikube                        100m (2%)     0 (0%)      0 (0%)           0 (0%)         35d
  kube-system                 traefik-ingress-controller-78b4959fdf-8kp5k    0 (0%)        0 (0%)      0 (0%)           0 (0%)         34d

Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests      Limits
  --------           --------      ------
  cpu                1750m (43%)   1 (25%)
  memory             2208Mi (14%)  4266Mi (28%)
  ephemeral-storage  0 (0%)        0 (0%)
  hugepages-1Gi      0 (0%)        0 (0%)
  hugepages-2Mi      0 (0%)        0 (0%)

Теперь самое важное, что вы можете с этим сделать:

  1. Вы можете включить автомасштабирование, чтобы система автоматически подготавливает узел и дополнительные необходимые ресурсы. Это, конечно, предполагает, что у вас закончились ресурсы и вам нужно больше
  2. Вы можете подготовить соответствующий узел самостоятельно (в зависимости от того, как вы загрузили свой кластер)
  3. Отключите любые дополнительные сервисы, которые могут забирать нужные ресурсы, которые вам не нужны.
03.12.2020
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..