Эта директория содержит манифесты для выполнения домашних заданий по курсу Kubernetes.
Файл: redis-deployment.yaml
Описание: Конфигурация для развертывания Redis без пароля с фиксированной версией образа.
Особенности:
- Redis запускается без пароля (используется переменная
ALLOW_EMPTY_PASSWORD: "yes") - Фиксированная версия образа:
bitnami/redis:6.0.13 - Настроены resource limits для production-ready конфигурации
- Service типа ClusterIP для внутреннего доступа
Применение:
kubectl apply -f redis-deployment.yamlПроверка:
# Проверить Deployment
kubectl get deployment redis
# Проверить Pod
kubectl get pods -l app=redis
# Проверить Service
kubectl get service redis
# Проверить подключение
kubectl run redis-client --rm -it --restart=Never \
--image=redis:6.0.13 -- redis-cli -h redis pingФайл: nginx-complete.yaml
Описание: Полная конфигурация nginx с ConfigMap, Deployment, Service и Ingress для маршрутизации по префиксу /test.
Компоненты:
- ConfigMap с конфигурацией nginx, возвращающей "Hello from k8s"
- Deployment с 2 репликами и health probes
- Service типа ClusterIP для внутреннего доступа
- Ingress для маршрутизации запросов с префиксом
/test
Особенности:
- ConfigMap подключен как volume в
/etc/nginx/conf.d - Настроены liveness и readiness probes
- Ingress использует rewrite-target для удаления префикса
/test - Resource limits для production-ready конфигурации
Применение:
kubectl apply -f nginx-complete.yamlПроверка:
# Проверить все ресурсы
kubectl get configmap nginx-config
kubectl get deployment nginx
kubectl get service nginx
kubectl get ingress nginx-ingress
# Локальная проверка через port-forward
kubectl port-forward service/nginx 8080:80
curl http://localhost:8080
# Проверка через Ingress (если настроен ingress controller)
kubectl get ingress nginx-ingress
curl http://<ingress-ip>/testminikube addons enable ingress
kubectl get pods -n ingress-nginxkubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
kubectl wait --namespace ingress-nginx \
--for=condition=ready pod \
--selector=app.kubernetes.io/component=controller \
--timeout=90s# Ingress уже встроен (traefik)
kubectl get svc -n kube-system traefikЦель: Написать команды kubectl для контейнера Redis из предыдущего задания.
# Вариант 1: Через Deployment
kubectl exec deployment/redis -- ps aux
# Вариант 2: Через конкретный Pod (сначала получить имя)
kubectl get pods -l app=redis
kubectl exec redis-<pod-id> -- ps aux
# Вариант 3: Интерактивный режим
kubectl exec -it deployment/redis -- ps auxОжидаемый вывод:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
1001 1 0.1 0.1 51728 8192 ? Ssl 10:00 0:01 redis-server
# Вариант 1: За последние 5 минут
kubectl logs deployment/redis --since=5m
# Вариант 2: С follow (в реальном времени)
kubectl logs deployment/redis --since=5m -f
# Вариант 3: Для конкретного пода
kubectl logs redis-<pod-id> --since=5m
# Вариант 4: Последние 100 строк + 5 минут
kubectl logs deployment/redis --since=5m --tail=100Дополнительные варианты:
# Логи за последний час
kubectl logs deployment/redis --since=1h
# Логи за определенное время
kubectl logs deployment/redis --since-time=2025-01-20T10:00:00Z
# Все логи с начала
kubectl logs deployment/redis# Вариант 1: Удаление конкретного пода (Deployment создаст новый)
kubectl delete pod redis-<pod-id>
# Вариант 2: Удаление пода по label
kubectl delete pod -l app=redis
# Вариант 3: Удаление всего Deployment (удалит и поды)
kubectl delete deployment redis
# Вариант 4: Удаление Deployment и Service
kubectl delete deployment redis
kubectl delete service redis
# Вариант 5: Удаление через файл
kubectl delete -f redis-deployment.yaml
# Вариант 6: Проверка удаления
kubectl get pods -l app=redis -wПримечание: При удалении только пода Deployment автоматически создаст новый под для поддержания желаемого количества реплик.
# Вариант 1: Проброс через Deployment
kubectl port-forward deployment/redis 6379:6379
# Вариант 2: Проброс через конкретный Pod
kubectl port-forward pod/redis-<pod-id> 6379:6379
# Вариант 3: Проброс через Service
kubectl port-forward service/redis 6379:6379
# Вариант 4: Проброс на другой локальный порт
kubectl port-forward deployment/redis 16379:6379
# Вариант 5: Проброс на все интерфейсы
kubectl port-forward --address 0.0.0.0 deployment/redis 6379:6379
# Вариант 6: В фоновом режиме
kubectl port-forward deployment/redis 6379:6379 &Проверка после проброса:
# В другом терминале проверить подключение
redis-cli -h localhost -p 6379 ping
# Ожидаемый вывод: PONG
# Или через telnet
telnet localhost 6379
# Или через curl (для HTTP сервисов)
curl localhost:6379Остановка проброса:
# Нажать Ctrl+C в терминале с port-forward
# Или если в фоне, найти процесс
ps aux | grep port-forward
kill <PID># 1. Выполнить команду в контейнере
kubectl exec deployment/redis -- ps aux
# 2. Посмотреть логи
kubectl logs deployment/redis --since=5m
# 3. В одном терминале запустить проброс
kubectl port-forward deployment/redis 6379:6379
# 4. В другом терминале проверить подключение
redis-cli -h localhost -p 6379 ping
# 5. Удалить под и проследить создание нового
kubectl get pods -l app=redis -w &
kubectl delete pod -l app=redis
# Вы увидите, как старый под удаляется и создается новыйЦель: Создать yaml-файлы для развёртки nginx с ConfigMap, Deployment, Service и Ingress.
Исходная конфигурация nginx:
location / {
add_header Content-Type text/plain;
return 200 'Hello from k8s';
}Требования:
- ConfigMap с конфигом nginx
- Deployment, который подключает этот ConfigMap
- Service для доступа
- Ingress, который направляет запросы по префиксу
/testна наш сервис
Решение: Используйте файл nginx-complete.yaml, который содержит все необходимые компоненты.
Критерии оценки:
- ✅ ConfigMap содержит корректную конфигурацию nginx
- ✅ Deployment подключает ConfigMap как volume
- ✅ Service направляет трафик на Deployment
- ✅ Ingress маршрутизирует по префиксу
/test
# Выполнить команду в контейнере
kubectl exec deployment/redis -- ps aux
# Просмотр логов за последние 5 минут
kubectl logs deployment/redis --since=5m
# Проброс порта для отладки
kubectl port-forward deployment/redis 6379:6379
# Удаление пода (Deployment создаст новый)
kubectl delete pod -l app=redis# Просмотр содержимого ConfigMap
kubectl describe configmap nginx-config
# Проверка логов nginx
kubectl logs deployment/nginx
# Проброс порта для тестирования
kubectl port-forward service/nginx 8080:80# Удалить все ресурсы Redis
kubectl delete -f redis-deployment.yaml
# Удалить все ресурсы nginx
kubectl delete -f nginx-complete.yaml
# Или удалить по отдельности
kubectl delete deployment redis
kubectl delete service redis
kubectl delete deployment nginx
kubectl delete service nginx
kubectl delete configmap nginx-config
kubectl delete ingress nginx-ingress