how to pod create

This commit is contained in:
Swfuse 2022-09-04 12:20:13 +03:00 committed by GitHub
parent cc801426b8
commit fed9c9f66f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -182,6 +182,7 @@
- [Опиши архитектуру кубернетес кластера, из чего состоит?](#%D0%BE%D0%BF%D0%B8%D1%88%D0%B8-%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%83-%D0%BA%D1%83%D0%B1%D0%B5%D1%80%D0%BD%D0%B5%D1%82%D0%B5%D1%81-%D0%BA%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80%D0%B0-%D0%B8%D0%B7-%D1%87%D0%B5%D0%B3%D0%BE-%D1%81%D0%BE%D1%81%D1%82%D0%BE%D0%B8%D1%82)
- [Что такое pod?](#%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-pod)
- [В чем разница между подом и контейнером?**](#%D0%B2-%D1%87%D0%B5%D0%BC-%D1%80%D0%B0%D0%B7%D0%BD%D0%B8%D1%86%D0%B0-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-%D0%BF%D0%BE%D0%B4%D0%BE%D0%BC-%D0%B8-%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D0%BE%D0%BC)
- [Как создается pod? Какие компоненты задействуются при его создании?](#%D0%BA%D0%B0%D0%BA-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%B5%D1%82%D1%81%D1%8F-%D0%BF%D0%BE%D0%B4-%D0%BA%D0%B0%D0%BA%D0%B8%D0%B5-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D1%8B-%D0%B7%D0%B0%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D1%83%D1%8E%D1%82%D1%81%D1%8F-%D0%BF%D1%80%D0%B8-%D0%B5%D0%B3%D0%BE-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8)
- [Может ли под запуститься на двух разных узлах?](#%D0%BC%D0%BE%D0%B6%D0%B5%D1%82-%D0%BB%D0%B8-%D0%BF%D0%BE%D0%B4-%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D1%82%D0%B8%D1%82%D1%8C%D1%81%D1%8F-%D0%BD%D0%B0-%D0%B4%D0%B2%D1%83%D1%85-%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D1%85-%D1%83%D0%B7%D0%BB%D0%B0%D1%85)
- [Что такое ReplicaSet?](#%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-replicaset)
- [Что такое Deployment?](#%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-deployment)
@ -4117,6 +4118,45 @@ https://access.redhat.com/articles/3129891
---
### Как создается под? Какие компоненты задействуются при его создании?
- Ответ
Предварительная информация.
Воркер узлы состоят из трех компонентов.
kubelet - это модуль коммуникации сервера с kubeapi.
Он сообщает информацию о себе в куб апи. И принимает ее оттуда же.
CRI - container runtime engine - штука, которая непосредственно создает контейнер.
proxy kube server - нужен для взаимодействия узлов между собой, например, когда вычислительные мощности требуют задействовать более, чем один узел.
Первое что задействуется - команда kubectl.
Далее оно попадает на kubeAPI.
KubeAPI - является основным компонентом управления кластером кубера.
Далее kubeapi аутентифицирует и валидирует запрос. Проверит кто делает запрос, и проверит есть ли у запрашиваемого доступ к кластеру.
Далее апи сервер запишет этот под в etcd.
Etcd - это хранилище данных, которое распределено по кластеру, и является "точкой правды" для кластера кубера.
Далее etcd возвращает ответ в апи о том, что под создан. Но по факту пока что еще ничего не создано кроме записи в базе.
Далее в дело вступает планировщик, scheduler. Он следит за нагрузкой которую необходимо создать.
Он определяет на какую ноду можно разместить тот или иной под.
Он периодически опрашивает куб апи на предмет наличия задач.
Шедулер создает поды на воркер узлах, и смотрит на доступные вычивлительные мощности, место и на ограничения.
После того, как он определяет где можно создать подходящий под, он сообщает об этом в kubeAPI.
kubeapi обращается в kubelet той ноды, на которую указал шедулер, как на подходящую.
kubelet работает вместе с CRI, который создаст под, в котором работает контейнер.
![pod-create](https://github.com/Swfuse/devops-interview/blob/main/imgs/pod-create.png)
---
### Может ли под запуститься на двух разных узлах?
- Ответ