Fixed grammar issues and logo.

Signed-off-by: Pavel Kirilin <win10@list.ru>
This commit is contained in:
2021-12-10 11:54:53 +04:00
parent 68dcb8da74
commit c24d0917fe
8 changed files with 65 additions and 65 deletions

View File

@ -7,15 +7,15 @@ position: 4
# Проблема в изучении кубернетес
Многие люди, кто задавались вопросом как начать работать с
кубернетесом сталкивались с тем, что документация крайне
Многие люди, кто задавались вопросом "Как начать работать с
кубернетес?", сталкивались с тем, что документация крайне
большая сложная и нет нормального описания как
завернуть маленький проект из одного проекта в свой кластер или
как развернуть свой кластер без боли.
завернуть маленький проект из одного контейнра в свой кластер или
как развернуть сам кластер без боли.
А всё потому что вся документация нацелена на большие
production-ready системы с большим rps и тому подобным.
<br>
В данной статье я попробую исправить это вселенское
недопонимание используя k3s, свой комплюктер и немного знаний по кодингу.
@ -28,12 +28,12 @@ production-ready системы с большим rps и тому подобны
# Что такое кубернетес и почему это лучше докера
Многие ребята, кто хорошо знаком с докером и его
возможностями могут задаваться таким вопросом.
возможностями, могут задаваться таким вопросом.
Для тех кто в танке, напомню, что докер
имеет вариант запуска в режиме кластера.
Этот функционал называется docker swarm.
Этот функционал называется [docker swarm](https://docs.docker.com/engine/swarm/).
В целом, swarm отдалённо напоминает kubernetes,
так как в этом режиме докер, худо-бедно но умеет
так как в этом режиме докер худо-бедно умеет
автоскейлится и запускаться в кластере,
но это всё равно немного не то.
@ -54,7 +54,7 @@ production-ready системы с большим rps и тому подобны
Так как я в этой статье хотел затронуть
совсем базовые и практические вещи, то рассматривать
мы будем только крайне полезные компоненты.
мы будем только самые часто используемые компоненты.
- Container
- Pod
@ -65,12 +65,12 @@ production-ready системы с большим rps и тому подобны
- Secret
- ConfigMap
А теперь рассмотрим немного поподробнее.
А теперь рассмотрим каждый ресурс немного поподробнее.
## Container
Контейнеры не то чтобы часть специфичная для кубернетес.
С контейнерами вы можете быть знакомы из кучи систем.
Контейнеры не являются чем-то специфичным для кубернетес.
С контейнерами вы можете быть знакомы из кучи других систем.
В контексте кубера они не обладают никакими дополнительными
свойствами. Это ровно то же, что и контейнеры `containerd`
или те, с которыми вы возились с докером. Ничего нового.
@ -80,9 +80,9 @@ production-ready системы с большим rps и тому подобны
<b-message type="is-warning" has-icon>
Важная ремарка. Кубер начиная с 2021 кубернетес не поддерживает
докер как бэкенд. Теперь кубер будет общаться с
containerd напрямую. Это значит, что теперь перед использованием
Важная ремарка. Кубер, начиная с 2021 года, не поддерживает
докер как бэкенд. Теперь он будет общаться с
containerd напрямую. Это значит, что перед использованием
контейнеров собранных на локальной машине надо будет импортировать их
в `containerd` используя `ctr image import`.
@ -101,9 +101,9 @@ production-ready системы с большим rps и тому подобны
В поде находится от одного до множества контейнеров.
Интересная особенность пода в том, что все контейнеры
делят один сетевой адресс. Другими словами,
делят один сетевой адрес. Другими словами,
если у вас один из контейнеров открыл порт `3000`,
то другие контейнеры из пода эти порты использовать не смогут.
то другие контейнеры из пода этот порт использовать не смогут.
То есть, если вы хотите логически связанные приложения
поместить в под, то они могут ходить друг к другу через лупбек
@ -120,10 +120,10 @@ production-ready системы с большим rps и тому подобны
<br>
Deployment нужна именно для описания подов и создания
Deployment нужен именно для описания подов и создания
некоторых ресурсов, нужных для скейлинга.
Также с помощью деплойментов можно делать откаты приложения через
механиз роллбеков. Я это рассматривать не буду. Тут только база.
механиз роллбеков. Я это рассматривать не буду. В этой статье только база.
## Service
@ -147,7 +147,7 @@ Deployment нужна именно для описания подов и соз
Также сервис выступает как балансировщик.
<b-message type="is-info" has-icon>
Если вы хотите сделать запрос от одного пода до дргого внутри кластера, то
Если вы хотите сделать запрос от одного пода до дргого, внутри кластера, то
вам придётся использовать сервис.
<br>
Если вы попробуете сделать запрос напрямую по IP пода, то у вас, конечно же,
@ -157,7 +157,7 @@ Deployment нужна именно для описания подов и соз
## Ingress
Ингрессы это сервис описывающий куда пускать трафик,
Ингресс - это сервис описывающий куда пускать трафик,
который поступает снаружи кластера.
<div align="center">
@ -168,9 +168,9 @@ Deployment нужна именно для описания подов и соз
Принцип работы ингресса следующий:
Вы указываете хост ингресса и различные регексы пути.
Вы указываете хост ингресса и различные пути.
В зависимости от входящего запроса ингресс выбирает в какой сервис
направить его и в какой порт.
направить запрос и в какой порт.
Настройка ингресса достаточно гибкая и я не думаю,
что вы можете столкнуться с какими либо проблемами.
@ -218,10 +218,10 @@ Deployment нужна именно для описания подов и соз
- minikube
На первый взгляд minikube может показаться лучшим вариантом.
И он действительно хорош тем, что его легко почистить после
И он действительно хорош тем, что его легко развернуть и почистить после
своих экспериментов. Однако, там есть проблемы с ингрессами.
По факту они не работают и там надо окольными путями получать
адреса приложения.
адреса.
<br>
@ -238,11 +238,10 @@ k3s - это легковесная production-ready реализация k8s. I
## Подключение кластера
После установки в домашней дериктории должен был быть
После установки `kubectl` в домашней дериктории должен был быть
сгенерирован файл `.kube/config`. Этот файл содержит данные для
подключения к различным кластерам. `minikube` Сам добавляет
ключи для подключения к .kube/config. `K3S` не изменяет
никаким образом `.kube/config`, поэтому надо будет это сделать вручную.
ключи для подключения к .kube/config. `K3S` никак не изменяет `.kube/config`, поэтому надо будет это сделать вручную.
Для того, чтобы это сделать сначала разберёмся как выглядит конфиг.
@ -298,27 +297,28 @@ current-context: "k3s"
можете передать параметр `--context $CONTEXT_NAME`, где `$CONTEXT_NAME` это название контекста.
Чтобы достать данные для подключения к `k3s` надо посмотреть его конфиг
и скопировать данные. Либо выставить переменную среды, которая будет
и скопировать данные. Либо выставить переменную среды `KUBECONFIG`, которая будет
указывать конфиг k3s. Конфиг подключения `k3s` лежит в файле `/etc/rancher/k3s/k3s.yaml`.
Можете выполнить команду, которая будет просить kubectl использовать указанный конфиг:
`export KUBE_CONFIG=/etc/rancher/k3s/k3s.yaml`
`export KUBECONFIG=/etc/rancher/k3s/k3s.yaml`
<br>
Либо скопируйте нужные данные для подключения себе в `.kube/config`.
После настройки выполните команду и проверьте что вам вернулось
что-то подобное. Это значит, что никаких ресурсов пока в
кластере нет. Это мы исправим позже. Пока что можно сказать,
что подключение прошло успешно.
что-то подобное.
```bash
$ kubectl --context "my-context" get pods
No resources found in default namespace.
```
Если же у вас выпадает ошибка, например такая.
Это значит, что никаких ресурсов пока в
кластере нет. Это мы исправим чуть позже. Пока что можно сказать,
что подключение прошло успешно.
Если же у вас выпадает ошибка, например такая:
```
The connection to the server localhost:8080 was refused - did you specify the right host or port?
@ -331,18 +331,19 @@ sudo systemctl start k3s.service
```
Либо у вас неверные данные для входа.
Перепроверьте свой `.kube/config`.
### Мониторинг кластера
Для просматривания управления кластером используется cli утилита `kubectl`.
Но для того, чтобы с ней работать нужно получше понять что вообще в кластере есть.
Для просмотра ресурсов и управления кластером используется `kubectl`.
Но для того, чтобы с ней работать нужно получше понять, что вообще в кластере есть.
Для этого я советую использовать [Lens](https://k8slens.dev/). Это крайне
удобный интерфейс для управления своим кластером.
Также там есть очень клёвая настрока, которая сама включит мониторинг
Также там есть очень клёвая настройка, которая сама включит мониторинг
потребления памяти и процессора для всех подов и кластера в общем.
На локальной машине это не очень много смысла имеет,
На локальной машине это не имеет смысла,
а вот в проде было бы очень полезно.
Выглядит Lens примерно так:
@ -437,7 +438,7 @@ app.listen(port, host, () => {
Это всё. Сервер готов.
<hr>
Протестируем запуск сервера выполнив команду ниже и открыв в
Протестируем запуск сервера, выполнив команду ниже и открыв в
своём любимом браузере http://localhost:8080.
```
@ -501,7 +502,7 @@ docker run --rm -it -p 3400:8000 "s3rius/req-counter-express:latest"
- Вы можете запушить собранное приложение в [Docker HUB](https://hub.docker.com/) и использовать его.
- Можете использовать мой образ `s3rius/req-counter-express:latest`
- Импортировать собранный образ как tar файл и импортировать его в containerd напрямую.
- Сохранить собранный образ как tar файл и импортировать его в containerd напрямую.
Как это сделать почитать можно в [этой статье](https://cwienczek.com/2020/06/import-images-to-k3s-without-docker-registry/).
### Деплой в k8s
@ -645,7 +646,7 @@ service/req-counter-service created
Готово. Теперь вы можете зайти в lens, выбрать свой кластер из списка
и посмотреть как там поживает ваше приложение.
Также не забудьте указать неймспей, в который вы беплоиди приложение.
Также не забудьте указать неймспейс, в который вы деплоили приложение.
Выглядит это чудо примерно так:
@ -694,7 +695,7 @@ ingress.networking.k8s.io/req-counter-ingress unchanged
service/req-counter-service unchanged
```
Как можно видеть изменился только наш `Deployment`.
Как можно видеть, изменился только наш `Deployment`.
Остальные ресурсы остались нетронутыми.
Давайте посмотрим на поды в нашем неймспейсе.
@ -711,16 +712,15 @@ req-counter-deployment-764476db97-x28fr 1/1 Running 0 69s
нашего приложения.
Теперь я пойду и выполню кучу запросов по адресу http://req-counter.local/
и получу балансировку между подами из коробки, без дополнительных
Теперь можно выполнить кучу запросов по адресу http://req-counter.local/
и получить балансировку между подами из коробки, без дополнительных
конфигураций.
Если у вас не получается найти адрес. Добавьте данный хост себе в
`/etc/hosts` на линуксе или в `C:\Windows\System32\drivers\etc\hosts` на windows,
дописав в конец файла следующее:
```
...
```[/etc/hosts]
127.0.0.1 req-couter.local
```