Что такое гиперкуба?

Я пытаюсь настроить 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 - это набор двоичных файлов

  1. Кубэ-apiproxy
  2. Кубэ-планировщик
  3. Kube-контроль-менеджер
  4. kubelet
  5. Кубэ-прокси

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, что упрощает развертывание.