Что такое гиперкуба?
Я пытаюсь настроить kubernetes в aws и следую инструкциям на https://github.com/kubernetes/kubernetes/blob/master/docs/getting-started-guides/docker-multinode
Я не мог понять, что подразумевается под гиперкубом. Может кто-нибудь, пожалуйста, объясните мне, что это такое и как это работает?
И еще один вопрос у меня во время выполнения команды
sudo docker run \
--volume=/:/rootfs:ro \
--volume=/sys:/sys:ro \
--volume=/dev:/dev \
--volume=/var/lib/docker/:/var/lib/docker:rw \
--volume=/var/lib/kubelet/:/var/lib/kubelet:rw \
--volume=/var/run:/var/run:rw \
--net=host \
--privileged=true \
--pid=host \
-d \
gcr.io/google_containers/hyperkube:v${K8S_VERSION} \
/hyperkube kubelet \
--api-servers=http://localhost:8080 \
--v=2 --address=0.0.0.0 --enable-server \
--hostname-override=127.0.0.1 \
--config=/etc/kubernetes/manifests-multi \
--cluster-dns=10.0.0.10 \
--cluster-domain=cluster.local
он запускает один модуль по умолчанию. Из документации команды выглядит, как будто она получает манифест модуля из --config=/etc/kubernetes/manifests-multi
. Но этого каталога нет в моем хосте. Может кто-нибудь, пожалуйста, скажите мне, откуда он получает этот манифест?
Ответы
Ответ 1
Kubernetes - это набор демонов/двоичных файлов:
-
kube-apiserver
(kube-apiserver
мастер), -
kubelet
(запуск/остановка контейнеров, синхронизация конф.), -
kube-scheduler
(менеджер ресурсов) -
kube-controller-manager
(контролировать RC и поддерживать желаемое состояние) -
kube-proxy
(выставлять сервисы на каждом узле) -
kubectl
(CLI)
Двоичный файл гиперкуба представляет собой двоичный файл "все в одном" (аналогично busybox
), объединяющий все ранее раздельные двоичные файлы.
Следующая команда:
hyperkube kubelet \
--api-servers=http://localhost:8080 \
--v=2 \
--address=0.0.0.0 \
--enable-server \
--hostname-override=127.0.0.1 \
--config=/etc/kubernetes/manifests-multi \
--cluster-dns=10.0.0.10 \
--cluster-domain=cluster.local
запускает демон kubelet
.
Ответ 2
Kubernetes - это набор двоичных файлов
- Кубэ-apiproxy
- Кубэ-планировщик
- Kube-контроль-менеджер
- kubelet
- Кубэ-прокси
hyperkube - это оболочка для всех этих двоичных файлов. Таким образом, после развертывания гиперкуба будут установлены все двоичные файлы. Нет необходимости устанавливать эти двоичные файлы по отдельности.
Ответ 3
Если вам больше нужна работа с кластером, работающим в AWS, а не с помощью опыта по привлечению каждого компонента вручную (который вам не стоит беспокоиться, если вы не делаете это ради обучения) d настоятельно рекомендуем использовать сценарии под ключ для создания кластера AWS, как описанные здесь.
Для всех, кто смотрит этот вопрос/ответ, в документах в документе, как выбрать метод создания кластера, который соответствует вашим потребностям.
Что касается вашего вопроса о гиперкубе, конфигурационный файл встроен в изображение докеры гиперкуба, как вы можете видеть из его Dockerfile, любопытно.
Ответ 4
Я начинаю свое путешествие в кубернете, но если вы посмотрите на источник в github, вы увидите, откуда происходит гиперкуба. Он встроен в ядро кубернетов - https://github.com/kubernetes/kubernetes/blob/master/cmd/hyperkube/hyperkube.go
Kubernetes предназначен для того, чтобы принимать контейнеры на совершенно новый уровень и обертывать их в том, что вызывает звонки Google. Гиперкуба - и, пожалуйста, исправьте меня, если я ошибаюсь, это арка/krux/основа планирования, создания и управления контейнерами, составляющими блок, и, по сути, запускает показ, следовательно, имя "гиперкуба". Кроме того, гиперкуба быстро реагирует на события и способна принимать решения "на лету" относительно вашего состояния службы/стека/контейнера/хоста.
Если вам нужен простой способ начать работу с кубернетами, я рекомендую попробовать ранчо (не rancherOS), поскольку rancherlabs только что реализовал развертывание кубернетов в свои встроенные стеки - также ранчо использует компоновку докеров, а также то, что он вызывает rancher-compose - при создании стека/службы вы можете взглянуть на элементы, составляющие этот стек/службу, и контейнеры внутри этого стека в формате yml - это поможет вам лучше понять элементы, которые составляют сервисов и стеков, которые вы запускаете, а также помогаете устранять проблемы при ручном развертывании - это основано на gui, но вы можете добавить свой хост к любому серверу ранцера, бросить некоторые столы регистрации, такие как kabana или sysdig, и если ваша работа с клиентом - до тех пор, пока хост зарегистрирован у rancher (нет, я вообще не работаю для них) - вы можете зарегистрировать любой хост с помощью ранчо, добавив хост и указав обычай. Кроме того, rancher действительно может управлять кубернетами/стеками/томами на хостинговых платформах - это потрясающе. Это отличный способ визуализировать и посмотреть, что происходит с вашими докерными хостами.
Я надеюсь, что это ответит на некоторые вопросы, а также приведет вас в правильном направлении.
Это создатель решений и даритель жизни кластера кубернетов.
Ответ 5
Hyperkube - это оболочка для всех двоичных файлов сервера API. Способ работы Kubernetes заключается в использовании hyperkube
для вызова сервера API, планировщика, диспетчера контроллеров, kube-proxy и kubelet.
Теперь все эти двоичные файлы, которые определяют главный узел, используют манифест YAML для определения служб, упомянутых выше. Вы всегда можете выбрать тип развертывания в контейнере или на хосте в зависимости от сценария развертывания.
Эти манифесты pod для сервисов фактически определяют желаемое состояние для ваших сервисов, которое хранится в etcd, с которого сначала готовится сервер api.
Теперь, когда манифесты pod определены, вы можете использовать hyperkube
для настройки этих сервисов для работы внутри контейнеров или на хосте.
Таким образом, hyperkube
в двух словах - это ядро для всех сервисов, и единственная цель этого hyperkube
- управлять всеми сервисами внутри кластера Kubernetes, что упрощает развертывание.