Это перекрестная запись статьи, которую я написал для Sysadvent Анкет Пожалуйста, зайдите на их сайт, чтобы взглянуть на статьи, написанные для этого года! Также огромная благодарность Адам Уитлок для редактирования помощи.
Теперь с шоу!
Традиционно были очень четкие боевые линии для применения и развертывания инфраструктуры. Когда вам нужно запустить виртуальную машину, вы запускаете ее на своей платформе виртуализации (OpenStack, VMware и т. Д.) И когда вам нужно запустить рабочую нагрузку контейнера, вы запускаете ее на своей контейнерной платформе (Kubernetes). Но когда вы развертываете свое приложение, вам действительно волнует, где оно работает? Или вам просто заботится, что он работает где-то ?
Здесь я вошел в это обсуждение, и я быстро понял, что в большинстве случаев мне было все равно. Что я знал, так это то, что мне нужно было иметь то, что мне нужно, чтобы построить свое приложение или пройти обучение. Я также знал, что если бы я мог избежать необходимости управлять несколькими наборами автоматизации — это было бы еще больше. Так что, если бы я мог запустить оба на одной платформе, я был абсолютно на борту, чтобы сделать это.
Что такое Кубевирт?
Kubevirt это набор инструментов, используемых для запуска виртуальных машин в верхней части среды Kubernetes. Возможно, вам нужно было прочитать это несколько раз, но это верные виртуальные машины, работающие поверх вашей контейнерной платформы. Нет необходимости в отдельной виртуальной машине, работающей в другом месте, только одно место для развертывания всех ваших вещей. Я уверен, что, как и многие другие, вы слышали: «Вы можете запустить что угодно в контейнере!». Хотя это в основном правда, это не обязательно гарантирует, что это не будет сложно, иначе это не заставит вас принимать некоторые ужасные решения на этом пути. Так что, если вы обнаружите, что направляетесь по этому пути, задайте себе следующий вопрос: «Если вы можете иметь оба при снижении вашей стоимости (как технических, так и умственных), что вас останавливает?»
Какие преимущества предоставляет Kubevirt?
Итак, какие фактические преимущества предоставляет Kubevirt? Исходя из моего опыта, это уменьшает когнитивную нагрузку на людей, которые пытаются развернуть ваше приложение (будь то ручное развертывание или автоматизацию для этих развертываний). Вместо того, чтобы управлять несколькими рабочими процессами, которые знают, когда что -то собирается на платформу A или платформу B — теперь у нас есть общая модель развертывания. И это ямль вниз по друзьям.
И хотя у всех нас могут быть свои меры с YAML, это уменьшает когнитивный подъем необходимости выяснить, на что вы смотрите, когда вы вручаете новое приложение для работы. Вы можете не знать точно Что вы развертываете, но вы можете с уверенностью предположить, что вы просто Kubectl Apply -f
вдали от выяснения. Эта стандартизация может значительно повысить эффективность ваших команд Dev/OPS/DevOps, потому что теперь они все работают и общаются в общем наборе инструментов, а не разбивают их на более мелкие команды, основанные на различных наборах.
Второе преимущество, которое вы можете получить от использования Kubevirt, — это (потенциальная) экономия от консолидации вашего технологического стека. Вместо того, чтобы запускать отдельные наборы инфраструктуры для ваших виртуализации и контейнерных платформ, вы можете начать консолидацию этих стеков для общих целей. Чтобы быть ясным, это не будет чем -то, что вы машут волшебной палочкой, и это внезапно станет консолидированным стеком. Это будет больше похоже на (что -то что -то). Однако, как только вы начнете это путешествие, вы начнете видеть потенциальную экономию в таких вещах, как программное обеспечение и затраты на коммунальные услуги. В зависимости от ваших рабочих нагрузок, вы также можете увидеть дополнительное преимущество в том, что они способны полностью уменьшить вашу инфраструктуру, потому что Kubernetes может быть лучше в упаковке/планировании ваших приложений вместе, чем другие системы. Эти преимущества имеют тенденцию различаться в зависимости от рабочей нагрузки, поэтому ваш пробег может варьироваться.
Последнее преимущество, которое приходит на ум, — это то, что предоставляет вам контейнерная платформа. Когда виртуальная машина умирает, она, как правило, остается мертвой, пока что -то не скажет, чтобы она снова включилась — будь то что -то внутри самой платформы виртуализации или какой -либо другой системы мониторинга, которая либо говорит ему (или говорит кому -то), чтобы вернуть его в Интернете. Даже на данный момент система может вернуться в Интернет, но она может быть не в отличной форме (Re: Healthy). Способность планирования, которую предоставляет Kubernetes, является огромным повышением из -за того, что если что -то запланировано, он будет продолжать убедиться, что он работает. И с такими вещами, как Late и Greathy Preses, теперь вы бесплатно получаете эти компоненты мониторинга низкого уровня. Таким образом, необходимость привлечь либо внешнюю систему, либо члены вашей команды, уменьшается только от этих возможностей. Так что теперь, если что -то пойдет не так, это действительно пошло не так, прежде чем вам понадобится заняться. (чувствует, что мне нужен здесь книга)
Сценарий: создание Ansible Training на Kubernetes
Эти детали все в порядке и тщательно, но для меня всегда полезно видеть эти инструменты в действии, прежде чем я склонен понять некоторые из этих концепций. Так что я собираюсь пройти через сценарий, в котором я заставил меня смотреть на Кубевирт. Все началось с отсутствия разрешений, которые мне были нужны …
Я работал с клиентом, и мы быстро поняли, что нам нужно быстро догнать их, если мы сможем быть полезными для них за небольшое количество времени, которое мы запланировали вместе. Это означало, что мне нужно было представить инструменты, убедиться, что они смогли работать с ними (Re: Установить и использовать их), а затем убедиться, что они будут в хорошей форме, когда мы уйдем. Мы делаем это много, поэтому помощи людям вставать на скорость, меня совсем не беспокоило. Однако следующая часть информации мне дали Призраки Я в любое время, когда слышу это.
У нас нет привилегий на наших местных машинах.
Слушать. Я понимаю. Мы живем в страшном мире. Всегда есть кто -то, кто хочет пробить дыру в вашей организации. Но должен быть баланс. Вы должны убедиться, что люди, которых вы используете, имеют возможность выполнять свою работу. В противном случае вы тратите ценное время, которое есть у ваших людей, которые могут быть потрачены на предоставление ценности вашей организации и эффективно говорят им, чтобы они сидели на руках, пока кто -то не скажет им, что они могут снова начать работать. Я также понимаю, что есть способы эффективного управления этими типами рисков. Это не было одно из этих времен.
Так что сойду с моей мыльной коробки и обратно в наш сценарий. Как только я услышал это, и мне было объяснено, что должно произойти, чтобы получить необходимое программное обеспечение на их машины, я знал, что мне нужно придумать план. Чтобы быть успешным здесь, мне нужно было иметь возможность получить набор инструментов (в первую очередь Ansible) на их локальные машины, а затем убедиться, что у них есть набор машин для работы. Проблема номер один был утвержден эти инструменты для установки. На высоком уровне это требовало значительного количества документов (билеты, подписи и т. Д.). Следующая часть заключалась в том, чтобы получить подходящие команды, чтобы предоставить набор виртуальных машин каждому из наших разработчиков, чтобы они могли использовать их, чтобы познакомиться с Ansible. Меня дала приблизительная оценка, которая по сути разжевывалась в половину нашего запланированного времени вместе, прежде чем мы их получим. Учитывая, что мы не могли многое сделать, не знакомы с инструментами заранее, это было не стартовым для меня.
Так что пришло время проявить творческий подход.
Проблема?
Итак, давайте сначала четко определим проблему. Мне нужно было получить Ansible в руках разработчиков и предоставить им способ начать изучение этой технологии.
Это требовало следующего:
- (1) Рабочая станция для запуска Ansible из
- (2) VM для работы с Ansible против
🚨🚨 Примечание: Да, я мог бы использовать эту единственную рабочую станцию, чтобы запустить Ansible от Ansible Antry. Однако я хотел обеспечить лучшую иллюстрацию преимуществ Ansible, наряду с тем, как он используется в реальном сценарии. 🚨🚨
Цель?
Итак, у нас есть четко определенная проблема. На данный момент у меня, по крайней мере, был кластер, доступный для меня на протяжении всей помолвки. Я также знал, что у клиента также будет доступен кластер. Цель здесь заключалась в том, чтобы оба подняться на них по новым технологиям, а также гарантировать, что они смогли «забрать его домой» с ними, чтобы они могли начать подъем других в своей организации. Хотя я мог бы просто решить это своими собственными облачными деньгами, это не решило бы именно то, что мы там пытались сделать. Конечно, это было добровольное ограничение, но я решил, что это было действительным из-за ограничений, которые были установлены в их организации, и, вероятно, потребуется некоторое время, чтобы расслабиться, прежде чем они (мы надеемся).
Решение!
Это когда я столкнулся с Кубевиртом. Я быстро понял, что у нас был весь доступ, который нам нужно было иметь возможность развернуть и запускать вещи в кластере. Таким образом, после быстрого подтверждения концепции я почувствовал уверенность, что мы можем сделать то, что нам нужно, чтобы сделать все в кластере. Большая задача в то время заключалась в том, чтобы мы смогли общаться по сети, используя протоколы, для которых нам необходимы (в первую очередь SSH, требуемый Ansible). Вероятно, было множество лучших способов решить эту проблему, и есть абсолютно лучшие способы, которыми я знаю об этом сейчас. Но чтобы избежать необходимости немного копаться в сети Kubernetes, я буду придерживаться самого простого взлома решения, который я нашел, чтобы решить проблему в то время. Так что без дальнейшей задержки давайте приступим к работе.
Шаг 1: Найдите себе платформу Kubernetes
В то время как этот сценарий первоначально был запущен в кластере OpenShift, это будет работать на любой платформе Kubernetes. Чтобы все было просто, я буду использовать Добрый Анкет Единственное, что вам нужно, чтобы получить этот запуск, — это взять добрый релиз от Github и, чтобы Docker работал на вашей машине. Для целей этой статьи мы будем использовать добрую версию v0.6.0 Анкет
Как только мы сняли бинар, нам нужно убедиться, что это где -то на нашем пути. Нам также нужно определить, как будет выглядеть наш кластер. Давайте создадим каталог под названием kv-demo
а затем создайте следующий файл с названием cluster.yml
Анкет
kind: Cluster apiVersion: kind.sigs.k8s.io/v1alpha3 nodes: - role: control-plane - role: worker
Что нам даст, так это кластер Master и 1 Worker для начала работы. Все, что нам нужно сделать сейчас, это развернуть это, и мы будем готовы начать работу. Вы можете сделать это со следующей командой: КОНТРАЦИЯ CREATE CLUSTE cluster.yml-name kv-demo
Анкет После запуска этой команды вы увидите вывод, похожий на приведенный ниже:
Creating cluster "kv-demo" ... ✓ Ensuring node image (kindest/node:v1.16.3) 🖼 ✓ Preparing nodes 📦 ✓ Writing configuration 📜 ✓ Starting control-plane 🕹️ ✓ Installing CNI 🔌 ✓ Installing StorageClass 💾 ✓ Joining worker nodes 🚜 Set kubectl context to "kind-kv-demo" You can now use your cluster with: kubectl cluster-info --context kind-kv-demo Thanks for using kind! 😊
Пока это соответствует, перейдите к следующему шагу.
Шаг 2: Установите Kubevirt
Теперь, когда у нас есть платформа для развертывания, мы можем продолжить и запустить необходимые компоненты. Для этого примера мы будем использовать Kubevirt V0.23.0 Анкет Если вы хотите использовать CLI virtctl
, вот откуда вы можете схватить его. В противном случае нет ничего, что вам не нужно непосредственно из этого репозитория, так как мы будем ссылаться на файлы удаленно.
Вложенная проверка виртуализации
Первое, что вам нужно сделать, это увидеть, включена ли вложенная виртуализация на вашем хосте. Для этого запустите следующее: CAT/SYS/MODULE/KVM_INTEL/PARAMETRES/Inted
Анкет Если ответ Y
, затем перейдите к следующему шагу. Если ответ N
, тогда вам нужно создать ConfigMap со следующим: kubectl Создать configmap kubevirt-config -n kubevirt-из-за литератора
Анкет
Развернуть оператор Kubevirt
Как только конфигурация на месте, мы можем развернуть начальные компоненты Kubevirt. Первая часть, которую необходимо создать, — это оператор. Запустите следующее для развертывания оператора: kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/v0.23.0/kubevirt-operator.yaml
Анкет Это развертывает следующие компоненты:
Kubevirt
Пространство именKubevirts
Пользовательское определение ресурсаkubevirt.io:operator
кластерролKubevirt-Operator
Сервисная учетная записьKubevirt-Operator
кластерролKubevirt-Operator
ClusterRoleBindingVirt-Operator
развертывание
Как только вы увидите эти объекты, вам нужно будет следить за ходом вашего развертывания. Вы можете следить за этим, наблюдая за созданием стручков в Kubevirt
Пространство имен с Kubectl Get Pods -n Kubevirt -W
Анкет Как только вы увидите, что все работает и готово, мы можем перейти к следующему шагу. Вы можете увидеть вывод ниже для эталонного вывода.
NAME READY STATUS RESTARTS AGE virt-operator-6b494c9fc8-l466w 1/1 Running 0 4m28s virt-operator-6b494c9fc8-zql77 1/1 Running 0 4m28s
Развернуть Kubevirt
Теперь, когда наш оператор работает и работает, мы можем создать пользовательский ресурс, который сообщит оператору развернуть самого Кубевирта. Это состоит из virt-api
, ВИДЕР-КОНТРОЛЛЕР
и Virt-Handler
составные части. Если вы заинтересованы в архитектурной специфике развертывания, вы можете увидеть хорошее описание Здесь от команды KV. Как только вы будете готовы развернуть эти компоненты, вы можете запустить следующее: kubectl create -f https://github.com/kubevirt/kubevirt/releases/download/v0.23.0/kubevirt-r.yaml
Анкет Вы увидите, что это создает один экземпляр Kubevirt
Ресурс под названием Кубевирт
. Это развертывание может занять некоторое время, но вы снова можете запустить Kubectl Get Pods -n Kubevirt -W
контролировать прогресс. В конце концов вы должны увидеть вывод, который выглядит примерно так, как вы видите ниже:
NAME READY STATUS RESTARTS AGE virt-api-69769c7c48-dh2zj 1/1 Running 0 3m42s virt-api-69769c7c48-p84lq 1/1 Running 0 3m42s virt-controller-6f97b858b7-94fv7 1/1 Running 0 3m15s virt-controller-6f97b858b7-cfhnv 1/1 Running 0 3m15s virt-handler-bmmwn 1/1 Running 0 3m15s virt-operator-6b494c9fc8-l466w 1/1 Running 0 24m virt-operator-6b494c9fc8-zql77 1/1 Running 0 24m
Перерыв
Поздравляю! На данный момент у нас есть Кубевирт. Но прежде чем мы начнем развертывание наших виртуальных машин, мы хотим убедиться, что у нас есть где -то, с чего работают. Чтобы сделать это, мы будем развертывать контейнер внутри нашего кластера, к которому мы можем подключиться. Это достигает двух целей. Во-первых, если мы определим изображение, на котором все наши инструменты уже предварительно выперились в контейнер-это оставляет на одну меньше вещь, которую мы оставляем на ошибке пользователя.
Вторая цель, которую мы достигаем, состоит в том, что мы гарантируем, что у нас есть доступ к общей сети и можем легко общаться с нашими виртуальными машинами. Опять же, это был немного хакер, через который мы пережили в то время, и есть абсолютно лучшие способы сделать это. Но это обсуждение может быть сохранено на другое время.
Теперь вернулся к работе.
Шаг 3: Получите себе контейнер рабочего пространства
Как упоминалось выше, следующим шагом является обеспечение того, чтобы у нас было рабочее пространство для работы. Мы сделаем это, используя контейнер, чем необходимый набор инструментов, уже доступный для нас. В нашем сценарии у нас уже был один предварительно построенный, который вы можете найти Dockerfile для здесь . Это имеет ряд инструментов, уже предварительно установленных на вершине нашего базового изображения RHEL 8, но, что наиболее важно, он имеет Ansible. Вы можете сократить это так, как вы видите, или вы можете использовать его как есть — ваш выбор. Если вы удовлетворены, как это выглядит, вы можете просто полагаться на предварительно построенную версию этого изображения, которую мы размещали в набережной: Quay.io/redhat-cop/tool-box
Анкет
Поэтому, как только вы решили, как вы хотели бы использовать это изображение, мы сможем развернуть его в нашем кластере со следующим
kubectl create user-ns kubectl create deployment tool-box --image=quay.io/redhat-cop/tool-box:v1.16 -n user-ns
Это даст нам новое пространство имен, а затем создаст развертывание нашего контейнера для инструментов. Вы должны увидеть, что это работает с kubectl Get Pods -n Пользователь- ns
Анкет
NAME READY STATUS RESTARTS AGE tool-box-64f5d796-2db66 1/1 Running 0 3m49s
🚨🚨 Примечание:: Если вы построили это локально или отправили его в свой собственный отдаленный реестр, вам просто нужно заменить реестр набережной выше на соответствующий реестр изображений, имя изображения и тег. 🚨🚨
Теперь, чтобы убедиться, что у нас есть подключение к нашим рабочим пространству, мы выполняем в нашу капсулу и запускаем некоторые команды, чтобы убедиться, что мы в хорошей форме. Запустите следующее:
kubectl exec -it tool-box-64f5d796-2db66 /bin/bash whoami ansible --version
🚨🚨 Примечание: Вы должны заменить название контейнера для набора инструментов выше, который появляется на вашем экране. Это будет совершенно иначе в вашем кластере, чем то, что у меня есть в моем. 🚨🚨
После запуска вышеупомянутых команд вы увидите вывод, похожий на следующее:
bash-4.4$ whoami tool-box bash-4.4$ ansible --version ansible 2.8.6.post0 config file = None configured module search path = ['/home/tool-box/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/local/lib/python3.6/site-packages/ansible executable location = /usr/local/bin/ansible python version = 3.6.8 (default, Oct 11 2019, 15:04:54) [GCC 8.3.1 20190507 (Red Hat 8.3.1-4)]
Пока все это проверяет, у нас есть функциональное рабочее пространство. Теперь мы готовы начать работать с некоторыми виртуальными машинами!
Шаг 4: Теперь для некоторых виртуальных машин
В рамках нашего развертывания Kubevirt мы создали несколько CRD. Один из них назывался virtualmachineinstances
Анкет Как вы можете догадаться, это один из способов создания виртуальной машины. Есть дополнительные методы, но это подход, который мы придерживаемся в этом примере. Мы сосредоточимся на том, чтобы просто развернуть одну виртуальную машину для краткости. Тем не менее, вы можете настроить это в шаблон, чтобы соответствовать вашим требованиям (или даже просто изменить и запустить несколько раз), чтобы создать несколько виртуальных машин. Чтобы создать наш единственный экземпляр, вы можете запустить следующее:
kubectl create -f https://raw.githubusercontent.com/tylerauerbeck/my-dev.to/master/kubevirt/K8SVM/files/vmi.yml -n user-ns`
Через несколько минут вы должны увидеть что -то похожее на следующее:
NAME READY STATUS RESTARTS AGE tool-box-64f5d796-2db66 1/1 Running 0 54m virt-launcher-vmi-fedora-0-cj4c2 2/2 Running 0 7m18s
Что это сделает, это создание виртуальной машины под названием VMI-FEDORA-0
в вашем Пользователь-NS
Пространство имен. Затем это будет распознано Kubevirt, а затем начнет развертывание вашей виртуальной машины. Если вы осмотрите YML
Выше вы заметите несколько вещей:
volumes: - containerDisk: image: kubevirt/fedora-cloud-container-disk-demo:v0.21.0
Это изображение, на которое мы ссылаемся, представляет собой предварительно построенное изображение Fedora из команды KV. Если вы хотите узнать больше подробностей о том, как создается это изображение, вы можете прочитать больше Здесь Анкет Все, что вам нужно знать на данный момент, это то, что это просто базовое изображение Fedora, которое мы используем, чтобы раскрутить нашу виртуальную машину.
Следующая часть, которую вы можете заметить, — это следующее облачное:
cloudInitNoCloud: userData: | #cloud-config hostname: fedora-0 password: fedora chpasswd: { expire: False } ssh_pwauth: True disable_root: false ssh_authorized_keys: - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDsYL8SnJf3blzXmsqJrdyz8RF88W+k9tv/5muoL9ieUGpI67cCKbzCInfKRiuMaDd51D8f+ezZzwx6x/sSbhaDIA90cPBCJIVXY3sVLTSIYK+EzfzDdgYBdpphsRCapwK++5Yev68NT/02BJRbqXhNrYcE4bj2GEQX6Tq8n3LqOYg3j5TvmCBvxut7qztn16rNHFBFF2K/AEavzkyFrzaddFAdVzmV79zBAhCYwoRWhXffMr0NxihxdbglT7qNRtJbOlvBgbYinn2rSsXrSF+1TdCHk3Uo+H5q2sfSDtMQCN32Oh+bCG/zxwL8p2hbdC6AKIk3LzICTqFa+gRCvOWR
Есть много вещей, которые вы можете указать здесь, но здесь, которые нужно принять к сведению:
- Установка имя хоста
- Настройка пароля по умолчанию
- Не отключая пользователя root
- Предоставление открытого ключа, который будет вставлен как часть изображения (вы можете изменить и использовать свой собственный ключ)
Чтобы избежать введения слишком большого количества движущихся частей, я изначально решил жестко кодировать некоторые из этих вещей, чтобы мы могли медленно создавать комфорт и основание знаний по сравнению с открытием пожарной части для начала. Если вы хотите использовать ключ, который уже добавлен к этому yml
, вы можете получить это Здесь Анкет
🚨🚨 Примечание: Я знаю, что хранение частных ключей в общественных репозиториях плохо. Это для целей тестирования, и я никогда не рекомендую делать это для каких-либо реальных рабочих нагрузок. 🚨🚨
Шаг 5: Финиш: Давайте запустим пейзажную книгу!
Хорошо, теперь мы на дому. У нас есть рабочее пространство, чтобы выполнить свою работу, и у нас есть Теперь нам просто нужно добавить последнюю часть: Работа Анкет Итак, начнем! Первое, что мы захотим сделать, это принять к сведению часть информации, которую нам понадобится позже. Чтобы мы могли написать Ansible Playbook, нам нужно знать, с каким хостом нам нужно бежать. Опять же, в этом случае мы будем простыми и просто возьмем IP -адрес для виртуальной машины. Вы можете получить это, запустив kubectl Get vmi -n user -ns
Анкет Затем вы должны увидеть вывод, похожий на:
Получите свой IP -адрес
NAME AGE PHASE IP NODENAME vmi-fedora-0 18m Running 10.244.1.11 kv-demo-worker
Вы должны заметить столбец IP. Возьмите это значение и спрятайте его на потом.
Настройте свое рабочее пространство
Теперь, когда у нас есть IP -адрес для того, где нам нужно подключиться, давайте убедимся, что наше рабочее пространство находится в хорошей форме, чтобы начать общение с ним. Первое, что нам нужно сделать, это воссоединиться с нашим контейнером для инструментов. Мы можем сделать это снова, запустив kubectl Exec -it инструмент-box-64f5d796-2db66/bin/bash
. Как только мы вернулись в наш терминал, нам нужно сделать несколько вещей
- Получить наш личный ключ
- Настройте инвентаризацию Ansible
- Создайте простой альбом Ansible Playbook
Получить подключение к личному ключу и тестирование
Нам нужно использовать Curl
Чтобы загрузить наш закрытый ключ из репозитория, отмеченного выше (если вы решили использовать общедоступный ключ, предоставленный примером). Мы могли бы стать более любимым и установить ключ как часть нашего развертывания, но дело здесь заключалось в том, чтобы сделать вещи как можно более простыми, чтобы начать.
Чтобы получить наш ключ в правильное пространство с правильными разрешениями, запустите следующее:
mkdir -p /home/toolbox/.ssh cd /home/toolbox/.ssh curl -O https://raw.githubusercontent.com/tylerauerbeck/my-dev.to/master/kubevirt/K8SVM/files/id_rsa chmod 700 id_rsa
Затем мы можем проверить, что мы можем подключиться к нашей виртуальной машине со следующим: ssh fedora@10.244.1.11 Hostname
Анкет Это должно вернуть вам имя хоста и похоже на этот вывод:
bash-4.4$ ssh fedora@10.244.1.11 hostname vmi-fedora-0
Ansible 101
Теперь, когда наше рабочее пространство и виртуальная машина могут общаться друг с другом, мы будем переключаться на последнем уровне наших упражнений: обучение некоторым обязательным. Цель этой статьи не стала стать экспертом Ansible, поэтому мы просто сделаем очень простое создание пользователя, чтобы продемонстрировать связывание всех этих произведений вместе. Первое, что нам нужно сделать, это собрать вместе наш инвентарь. Это говорит нашу книгу, где она подключается и как. Давайте сделаем следующее в нашем контейнере для инструментов:
cd mkdir inventory touch inventory/hosts
Как только эта структура будет создана, добавьте следующее в файл ваших хостов:
--- [my-test-group] 10.244.1.11 ansible_ssh_user=fedora
Это позволит нам указать эту группу, чтобы выполнить нашу книгу. Сама пьеса является вторым ключом ко всему этому. Это указывает, какие действия мы собираемся предпринять. Чтобы создать это, давайте запустим следующее (снова внутри контейнера для инструментов):
cd touch playbook.yml
Как только этот файл будет создан, добавьте следующий контент:
-------- - name: Create Test User hosts: my-test-group tasks: - name: Add the user 'james' with a bash shell, appending the group 'admins' and 'developers' to the user's groups user: name: james shell: /bin/bash append: yes become: true
Как только это будет готово, мы можем продолжить и запустить нашу книгу, которая создает пользователя по имени Джеймс
На виртуальной машине, которую мы создали. Мы можем подтвердить это, получив доступ к хосту через SSH и проверив, что пользователь Джеймс существует.
bash-4.4$ ssh fedora@10.244.1.14 "id james" uid=1001(james) gid=1001(james) groups=1001(james)
Вывод
Этот подход предназначен для того, чтобы показать, как вы можете использовать эти технологии вместе. Я смог свернуть необходимость управления несколькими методами автоматизации для создания кластера Kubernetes и отдельных виртуальных машин для моего обучения. Кроме того, я смог разрушить это еще дальше, потому что ранее нам нужно было развернуть эти типы автоматизации в различных типах облачных сред (AWS, Azure, GCP и т. Д.), А также в различных локальных среда. Принимая этот подход, мы смогли разбить это до такой степени, что нам нужно было полагаться только на один интерфейс, API Kubernetes.
Это только мои мысли и переживания. Для получения более подробной информации о Kubevirt посетите их Веб -сайт или проверьте их GitHub Анкет Есть много дополнительных наворотов, доступных для использования, поэтому обязательно копайте глубже, чтобы продолжать получать преимущества, которые они предоставляют!
Оригинал: «https://dev.to/tylerauerbeck/you-ve-got-virtual-machines-in-my-container-platform-an-argument-for-running-vm-s-in-kubernetes-17gf»