Перейти к содержанию

Работа с Kubernetes локально

🔹 Этап 3: Работа с Kubernetes локально


3.1 Установка локального кластера

Есть несколько вариантов для локальной практики:

  • Minikube — полноценный локальный кластер, запускается на виртуальной машине (VirtualBox, Hyper-V, Docker)

  • kind (Kubernetes in Docker) — легковесный кластер внутри Docker-контейнеров

  • k3s — облегчённый Kubernetes для локальной и слабой инфраструктуры

Для простоты и универсальности рекомендую Minikube или kind.


3.1.1 Установка Minikube (на примере macOS/Linux/Windows)

  1. Установи kubectl (CLI для управления Kubernetes):

  2. macOS (brew):

brew install kubectl
  • Linux:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
  1. Установи Minikube:

  2. macOS (brew):

brew install minikube
  • Linux:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
  1. Запусти кластер:
minikube start
  1. Проверь состояние:
kubectl get nodes

3.1.2 Установка kind (опционально)

  • Требует Docker, запускает Kubernetes в контейнерах:
curl -Lo ./kind https://kind.sigs.k8s.io/dl/latest/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
  • Создать кластер:
kind create cluster

3.2 Развёртывание простого приложения (nginx)

Создай файл deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

И файл service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - port: 80
      targetPort: 80
  type: NodePort

3.3 Запусти приложение в Kubernetes:

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

Проверь, что поды запустились:

kubectl get pods

Проверь сервисы:

kubectl get svc

3.4 Доступ к приложению

  • Для Minikube:
minikube service nginx-service

Это откроет в браузере страницу nginx.

  • Для kind — доступ сложнее, нужно пробрасывать порты вручную.

3.5 Основные команды для работы с кластером

  • Просмотр ресурсов:
kubectl get pods
kubectl get deployments
kubectl get services
  • Просмотр деталей:
kubectl describe pod <pod-name>
kubectl logs <pod-name>
  • Удаление ресурсов:
kubectl delete -f deployment.yaml
kubectl delete -f service.yaml