Чеклист для запуска или миграции приложений в Kubernetes

93e14cacdfb3100ae60d820b9c778651.jpg

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

Планировщик Kubernetes использует их в качестве одной из метрик, чтобы решить, на какой узел лучше всего  разместить ваш Pod. 

Неограниченное количество модулей (без ограничений по ресурсам) может привести к чрезмерному  использованию ресурсов и потенциальному сбою узла (и kubelet). 

То же самое относится и к ограничениям процессора. 

Запросы (requests) — это ресурсы, которые контейнер гарантированно получит. То есть это своего рода  минимальные системные требования, которые нужны приложению для работы. Kubernetes всегда планирует  размещение подов на узлах так, чтобы обеспечить необходимые запросы для всех подов. 

Ограничения (limits) — это максимальные значения выделяемых ресурсов. Kubernetes гарантирует, что приложение никогда не получит больше ресурсов, чем указано в ограничениях. 

Если под попытается превысить ресурс, Kubernetes поступит по-разному в зависимости от типа ресурса. 

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

RAM — несжимаемый ресурс, его невозможно ограничить. Ведь если приложению просто не выделить  запрашиваемую память, оно, скорее всего, перестанет нормально работать. Поэтому если под запросит  больше памяти, чем указано в ограничениях, Kubernetes перезапустит под. 

По умолчанию для всех продуктовых немспейсов используются LimitRanges. Если вы не задали  ресурсы для вашего контейнера, то будут использоваться дефолтовые параметры. Они имеют  следующие значения:  

   spec:  

    limits:  

 — default:  

        cpu: 250m 

        memory: 512Mi 

      defaultRequest:  

        cpu: 250m 

        memory: 512Mi 

      max:  

        cpu:»2» 

        memory: 16Gi 

      maxLimitRequestRatio:  

        cpu:»4» 

        memory:»2» 

      min:  

        cpu: 50m 

        memory: 64Mi 

      type: Container

При использовании universalChart определите в своем values.yaml блок с секцией resources, чтобы указать  необходимые ресурсы для вашего контейнера с приложением. 

Пример:  

resources:  

 limits:  

 cpu: 2 

 memory: 4Gi 

 requests:  

 cpu: 1 

 memory: 2Gi 

© Habrahabr.ru