Управление ресурсами с помощью Kubernetes LimitRange

KubernetesKubernetesBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (lab) вы узнаете о Kubernetes LimitRange, который используется для установки ограничений на потребление ресурсов в подах (pods) Kubernetes. LimitRange - это функция Kubernetes, которая помогает вам управлять ресурсами, выделяемыми подам, и предотвращать проблемы с конкуренцией за ресурсы.

Вы пройдете через серию пошаговых инструкций, чтобы понять различные аспекты LimitRange, начиная с простых примеров и постепенно переходя к более сложным сценариям. Каждый шаг будет включать примеры кода в виде манифестов YAML, которые вы можете применить к своему кластеру Kubernetes, чтобы увидеть, как LimitRange работает на практике.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("Kubernetes")) -.-> kubernetes/BasicsGroup(["Basics"]) kubernetes(("Kubernetes")) -.-> kubernetes/BasicCommandsGroup(["Basic Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/AdvancedCommandsGroup(["Advanced Commands"]) kubernetes(("Kubernetes")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["Troubleshooting and Debugging Commands"]) kubernetes/BasicsGroup -.-> kubernetes/initialization("Initialization") kubernetes/BasicCommandsGroup -.-> kubernetes/create("Create") kubernetes/BasicCommandsGroup -.-> kubernetes/edit("Edit") kubernetes/AdvancedCommandsGroup -.-> kubernetes/apply("Apply") kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("Describe") subgraph Lab Skills kubernetes/initialization -.-> lab-15819{{"Управление ресурсами с помощью Kubernetes LimitRange"}} kubernetes/create -.-> lab-15819{{"Управление ресурсами с помощью Kubernetes LimitRange"}} kubernetes/edit -.-> lab-15819{{"Управление ресурсами с помощью Kubernetes LimitRange"}} kubernetes/apply -.-> lab-15819{{"Управление ресурсами с помощью Kubernetes LimitRange"}} kubernetes/describe -.-> lab-15819{{"Управление ресурсами с помощью Kubernetes LimitRange"}} end

Запуск кластера Minikube

Перед созданием ресурсов вам нужен работающий кластер Kubernetes. Minikube - это легковесная среда Kubernetes, которая запускается на вашем локальном компьютере.

  1. Перейдите в рабочую директорию:

    Откройте терминал и перейдите в папку проекта по умолчанию:

    cd /home/labex/project
  2. Запустите Minikube:

    Запустите Minikube для инициализации кластера Kubernetes:

    minikube start
    • Эта команда настраивает однодневный кластер Kubernetes на вашем локальном компьютере.
    • В зависимости от производительности вашей системы Minikube может потребовать несколько минут для запуска.
  3. Проверьте, что Minikube запущен:

    Проверьте статус кластера Minikube:

    minikube status
    • Найдите компоненты, такие как kubelet и apiserver, перечисленные как Running.
    • Если кластер не запущен, запустите команду minikube start снова.

Если у вас возникли проблемы с запуском Minikube, используйте minikube delete для сброса среды при необходимости.

Создание простого LimitRange

На этом шаге вы создадите простой LimitRange, который устанавливает ограничения на ресурсы ЦПУ и памяти для подов (pods) в пространстве имен (namespace). Вот как это можно сделать:

  1. Создайте новый файл YAML с именем limitrange.yaml со следующим содержимым:
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      max:
        cpu: "1"
        memory: "1Gi"
      min:
        cpu: "100m"
        memory: "100Mi"
      default:
        cpu: "500m"
        memory: "500Mi"

Этот LimitRange устанавливает следующие ограничения:

  • Максимальное количество ЦПУ: 1 ядро
  • Максимальный объем памяти: 1 ГиБ
  • Минимальное количество ЦПУ: 100 миллиядер (100m)
  • Минимальный объем памяти: 100 МиБ
  • Значение ЦПУ по умолчанию: 500 миллиядер (500m)
  • Значение памяти по умолчанию: 500 МиБ
  1. Примените файл limitrange.yaml к вашему кластеру Kubernetes с помощью команды kubectl apply:
kubectl apply -f limitrange.yaml
  1. Проверьте, что LimitRange был успешно создан, выполнив следующую команду:
kubectl describe limitrange example-limitrange

Вы должны увидеть LimitRange example-limitrange в списке с ограничениями, указанными в разделе spec.

Применение LimitRange к подам (Pods)

На этом шаге вы создадите под (pod), который будет подчиняться LimitRange, созданному вами в разделе "Создание простого LimitRange". Вот как это можно сделать:

  1. Создайте новый файл YAML с именем pod.yaml со следующим содержимым:
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
    - name: nginx
      image: nginx

В этом определении пода создается простой под с одним контейнером, запускающим образ Nginx.

  1. Примените файл pod.yaml к вашему кластеру Kubernetes с помощью команды kubectl apply:
kubectl apply -f pod.yaml
  1. Проверьте, что под был успешно создан, выполнив следующую команду:
kubectl get pods example-pod

Вы должны увидеть под example-pod в списке со статусом Running.

  1. Проверьте ограничения ресурсов, примененные к поду, выполнив следующую команду:
kubectl describe pod example-pod

Вы должны увидеть ограничения по ЦПУ и памяти для пода, как они были определены.

Тестирование применения LimitRange

На этом шаге вы протестируете применение LimitRange, попробовав создать под (pod), который превышает ограничения ресурсов, определенные в LimitRange. Вот как это можно сделать:

  1. Создайте новый файл YAML с именем pod-exceeding-limits.yaml со следующим содержимым:
apiVersion: v1
kind: Pod
metadata:
  name: example-pod-exceeding-limits
spec:
  containers:
    - name: nginx
      image: nginx
      resources:
        limits:
          cpu: "2"
          memory: "2Gi"

В этом определении пода создается под с контейнером, который запрашивает ресурсы, превышающие ограничения, установленные в LimitRange (ЦПУ: 2 ядра, память: 2 ГиБ).

  1. Примените файл pod-exceeding-limits.yaml к вашему кластеру Kubernetes с помощью команды kubectl apply:
kubectl apply -f pod-exceeding-limits.yaml

Вы увидите, что операция создания пода отклонена. Сообщение об ошибке звучит так: Error from server (Forbidden): error when creating "pod-exceeding-limits.yaml": pod "example-pod-exceeding-limits" Forbidden: [Maximum cpu usage per container is 1, but limited to 2, maximum memory usage per container is 1Gi, but limited to 2Gi].

Обновление LimitRange

На этом шаге вы обновите LimitRange, созданный в разделе "Создание простого LimitRange", чтобы изменить ограничения ресурсов. Вот как это можно сделать:

  1. Измените файл limitrange.yaml, чтобы обновить ограничения ресурсов в соответствии с вашими требованиями. Например:
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      max:
        cpu: "2"
        memory: "2Gi"
      min:
        cpu: "200m"
        memory: "200Mi"
      default:
        cpu: "1"
        memory: "1Gi"

Обновленный LimitRange устанавливает следующие ограничения:

  • Максимальное количество ЦПУ: 2 ядра
  • Максимальный объем памяти: 2 ГиБ
  • Минимальное количество ЦПУ: 200 миллиядер (200m)
  • Минимальный объем памяти: 200 МиБ
  • Значение ЦПУ по умолчанию: 1 ядро
  • Значение памяти по умолчанию: 1 ГиБ
  1. Примените обновленный файл limitrange.yaml к вашему кластеру Kubernetes с помощью команды kubectl apply:
kubectl apply -f limitrange.yaml
  1. Проверьте, что LimitRange был успешно обновлен, выполнив следующую команду:
kubectl describe limitranges example-limitrange

В выводе вы должны увидеть обновленные ограничения ресурсов.

Итог

В этом практическом занятии (lab) вы узнали, как использовать LimitRange в Kubernetes для установки ограничений на потребление ресурсов в подах (pods). Вы начали с создания простого LimitRange, применили его к поду, проверили его применение, а затем обновили LimitRange, чтобы изменить ограничения ресурсов. LimitRange - это мощный инструмент для управления ресурсами в Kubernetes и обеспечения эффективного использования ресурсов в вашем кластере.