[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-kubernetes-chto-takoe-requests-i-limits-dlya-resursov":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},1322,"chto-takoe-requests-i-limits-dlya-resursov",26,"kubernetes","Kubernetes","☸️","Что такое Requests и Limits для ресурсов?","Requests — минимальное количество ресурсов, гарантированное контейнеру (используется Scheduler'ом для выбора ноды). Limits — максимальное количество ресурсов, которое контейнер может потребить.\n\n### Поведение при превышении\n\n| Ресурс | При превышении Limit |\n|---|---|\n| CPU | Контейнер троттлится (throttling), но не убивается |\n| Memory | Контейнер убивается (OOMKilled) и перезапускается |\n\n### Единицы измерения\n\n| Ресурс | Единицы | Примеры |\n|---|---|---|\n| CPU | Ядра или millicores | `1` = 1 ядро, `500m` = 0.5 ядра, `250m` = 0.25 ядра |\n| Memory | Байты с суффиксами | `128Mi` = 128 мебибайт, `1Gi` = 1 гибибайт |\n\n### Пример\n\n```yaml\nspec:\n  containers:\n    - name: app\n      image: my-registry\u002Fmy-java-app:1.0.0\n      resources:\n        requests:\n          memory: \"512Mi\"\n          cpu: \"250m\"\n        limits:\n          memory: \"1Gi\"\n          cpu: \"1000m\"\n```\n\n### QoS-классы (Quality of Service)\n\nKubernetes назначает Pod'у QoS-класс на основе Requests и Limits:\n\n| QoS-класс | Условие | Приоритет при вытеснении |\n|---|---|---|\n| Guaranteed | Requests == Limits для всех контейнеров | Последний (самый защищённый) |\n| Burstable | Requests \u003C Limits хотя бы у одного контейнера | Средний |\n| BestEffort | Нет ни Requests, ни Limits | Первый (вытесняется первым) |\n\n### Рекомендации для Java-приложений\n\n- Всегда устанавливайте и Requests, и Limits для памяти\n- Memory Limit должен учитывать: heap (`-Xmx`) + metaspace + thread stacks + native memory + буфер (~20-30%)\n- Пример: если `-Xmx512m`, то Memory Limit рекомендуется ставить `768Mi`-`1Gi`\n- Используйте JVM-флаги для корректной работы в контейнере:\n\n```yaml\nenv:\n  - name: JAVA_OPTS\n    value: >-\n      -XX:MaxRAMPercentage=75.0\n      -XX:+UseContainerSupport\n```\n\nФлаг `-XX:+UseContainerSupport` (включён по умолчанию с JDK 10+) позволяет JVM корректно определять память и CPU, доступные контейнеру, а не всей ноде.\n\n> **На собеседовании:** нужно знать разницу Requests vs Limits, три QoS-класса и формулу для Memory Limit Java-приложения. Частая ошибка — ставить `-Xmx` равным Memory Limit, забывая про metaspace и native memory, что приводит к OOMKilled.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Что такое Requests и Limits для ресурсов? — Gymterview","Requests — минимальное количество ресурсов, гарантированное контейнеру (используется Scheduler'ом для выбора ноды). Limits — максимальное количество ресурсов, к","Requests — минимальное количество ресурсов, гарантированное контейнеру (используется Scheduler'ом для выбора ноды). Limi",[7,13],"Requests — минимальное количество ресурсов, гарантированное контейнеру (используется Scheduler'ом для выбора ноды). Limits — максимальное количество ресурсов, которое контейнер может потребить.",true]