Добро пожаловать в мир Kubernetes, где кластер становится вашим лучшим другом, а деплой приложений — захватывающим приключением! Если вы администратор Linux, то готовы к тому, чтобы покорить этот океан контейнеров и разбить свои приложения по островкам, которые будут работать более эффективно, чем ваша кофеварка на недосыпе.

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

Для начала, убедитесь, что у вас есть под рукой несколько виртуальных машин или облачных инстансов с установленным Linux. И да, старый добрый Debian или Ubuntu подойдут как нельзя кстати. Нам придется приготовить в первую очередь несколько инструментов: kubectl — командная строка для взаимодействия с Kubernetes и kubeadm — утилита для создания нашего кластера. Если вы не знаете, что такое kubeadm, то это как apt-get, но только для ваших кластеров.

Начинаем с установки Kubernetes. На каждой ноде (узле) вашего кластера выполните следующие команды:

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
sudo apt-mark hold kubelet kubeadm kubectl

Теперь, когда у нас все готово, запускаем наш кластер. На главной ноде (мастере) выполните:

sudo kubeadm init

Всё! Теперь вы только что создали свой первый кластер Kubernetes! Поскольку вы, вероятно, не любите каждый раз писать длинные команды, чтобы получить доступ к кубу, давайте настроим kubectl для своего пользователя:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Теперь можно порадовать глаз и запустить несколько команд:

kubectl get nodes

Если вас не испугали строки с вашим кластером, это значит, что вы на правильном пути. Нод может быть много, но не заигрывайтесь: у вас не больше 3-х могут быть вместе по соседству без серьёзной перепалки.

Теперь давайте задеплоим простое приложение, например наш любимый nginx. Для этого создайте файл с манифестом:

cat < 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
EOF

Поднимаем наше приложение:

kubectl apply -f nginx-deployment.yaml

Проверяем статус:

kubectl get deployments

А теперь вуаля! Мы подняли nginx с помощью Kubernetes как настоящий гуру. Что ж, всегда приятно видеть два работающих контейнера, которые служат вам верой и правдой.

Пожалуйста, не забывайте, что Kubernetes — это сила, но с великой силой приходит и великая ответственность. Следите за своими кластерами, как за любимыми питомцами! А если у вас возникнут трудности, просто вспомните, что у вас есть kubectl logs и kubectl describe, и все ваши беды будут позади!

Надеюсь, эта небольшая экскурсия в мир Kubernetes была вам полезна! И помните, всегда держите кластер под контролем – иначе он может начать развивать собственные амбиции. Удачи в ваших приключениях в контейнерном мире!