Особенности ЯП в Kubernetes
Java
1. Проверяем как видны лимиты на память в поде
Для этого выполним команду:
kubectl run --image centos test -- free -h
Проверим логи, для чего выполним команду:
kubectl logs test
Результат будет примерно следующим:
total used free shared buff/cache available
Mem: 3.9Gi 1.8Gi 303Mi 3.0Mi 1.7Gi 1.8Gi
Swap: 0B 0B 0B
Обратите внимание, что в поде видна вся память, доступная на ноде. Что логично, ведь мы не указывали никаких лимитов при создании пода.
Теперь попробуем запустить тот же под с лимитами по памяти. Сначала удаляем старый под:
kubectl delete po test
После завершения предыдущей операции создаем новый, указывая лимит в 128Mi памяти:
kubectl run --limits="memory=128Mi" --image centos test -- free -h
Проверим логи, для чего выполним команду:
kubectl logs test
И обнаружим результат эквивалентный предыдущему:
total used free shared buff/cache available
Mem: 3.9Gi 1.8Gi 303Mi 3.0Mi 1.7Gi 1.8Gi
Swap: 0B 0B 0B
Тоже самое касается и CPU. Можно проверить с помощью указания лимита на поде
--limit="cpu=100m"и выполнения командыlscpu
Удалим за собой тестовый под:
kubectl delete po test
Интерпретируемые языки
1. Тестим автоопределение CPU
Запускаем под с Nginx. Для этого выполним команду:
kubectl run --image nginx:1.15 --limits="cpu=100m" test
Заходим в контейнер:
kubectl exec -t -i test bash
Внутри контейнера ставим утилиту ps:
apt-get update -y && apt-get install -y procps
Проверяем конфигурацию Nginx:
cat /etc/nginx/nginx.conf
По умолчанию выставлен worker_processes 1
Видим что запущен один воркер:
ps aux | grep nginx
Правим конфиг Nginx на автоопределение воркеров:
sed -i 's/worker_processes 1;/worker_processes auto;/g' /etc/nginx/nginx.conf
Релоадим Nginx:
nginx -s reload
Проверяем количество запущенных воркеров:
ps aux | grep nginx
Обратите внимание, что несмотря на выставленный лимит для пода в 100m CPU, Nginx запустил воркеров по количеству ядер на хосте
Удалим за собой под:
kubectl delete po test