Введение в Kubernetes: создание кластера и деплой приложений
Добро пожаловать в мир 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 была вам полезна! И помните, всегда держите кластер под контролем – иначе он может начать развивать собственные амбиции. Удачи в ваших приключениях в контейнерном мире!