Рубрики
Uncategorized

Как вы на самом деле используете Kubernetes, в главной роли файлы YAML

Хотите использовать Kubernetes более профессионально? Тогда вам нужно узнать о файлах YAML, особенно в контексте Kubernetes. Помечено с Куберанетами, DevOps, Docker, учебником.

Следуй за мной на Twitter , рад принять ваши предложения по темам или улучшениям/Крису

Я описал такие понятия, как Minkube, Pods, Nuisk, Services и более популярны в течение четырех статей. Хотя образовательные образовательные, которые вы, вероятно, используете Kubernetes по-другому, чем то, как я так далеко полагаю вас, вы, вероятно, будете использовать файлы yaml

Файлы YAML — это файлы, которые позволяют нам определить конфигурацию того, что она может быть.

Ямл как в y a m l, aka y m c a?:)

Нет, не так, больше ямл, как в верблюде

О, хорошо, скажи мне больше

Ямл на самом деле стоит « y AML А не М Arkup Язык «Даже если он с самого начала стоял за Y et Другой Марка Л Anguage. Причина изменения его значения заключалась в том, чтобы прояснить свою цель в качестве ориентированного на данных, а не на разметке документов.

Да, вы получили это, это рекурсивное определение. Это также называется Язычный язык для читаемости человека Отказ

Спасибо за урок истории, как насчет его роли в Кубернетах?

Как мы сказали, прежде чем мы показываем вам использование Kubernetes, используя командную строку, и это не так, как они используют ее.

Позвольте мне угадать я использую файлы yaml

Правильно, каждая вещь, которую вы можете описать, и развернуть в Kubernetes, можно описать как файл yaml. Это на самом деле просто проще. Но прежде чем мы поговорим о конкретных использовании Kubernetes, нам нужно знать некоторые основы о файлах YAML, поэтому чтобы понять файл, когда мы смотрим на него

Мне нужен кофе для этого права?

Ресурсы

Эта статья не совсем частью серии, но я написал на нем другие части. Если вы абсолютно новое, я рекомендую читать часть я в первую очередь ниже

  • Часть I — с самого начала, Часть I, Основы, Развертывание и Миникуба В этой части мы охватываем почему Kubernetes, некоторые истории и некоторые основные концепции, такие как развертывание, узлы, стручки.
  • Часть II — Представляющие услуги и маркировка В этой части мы углубляем наши знания на стручках и узлах. Мы также вводим услуги и маркировка с помощью меток для запроса наших артефактов.
  • Часть III — масштабирование В этой части мы смотрим на масштабирование, используя Желаемый государство. Мы указываем, сколько POD мы хотим, и пусть Kubernetes делает тяжелый подъем с точки зрения обеспечения того, чтобы ваши стручки масштабировались до желаемого числа, но и поддерживая его, используя что-то называемое самовосстановлением.

  • Часть IV — Auto Scaling Вот как вы, вероятно, будете проводить масштабирование в Кубернанах, глядя на использование ЦП

Ниже приведен еще несколько ресурсов, которые я рекомендую вам посмотреть, когда Kubernetes начинает нажать:

Формат ямла

Что нам нужно знать о формате, чтобы иметь возможность работать с ним? Ну, Ямл — суперс JSON, который делает файл JSON действительный файл YAML. Это интересная информация, но действительно хочет знать, это структуры, используемые внутри:

  • Карта
  • Списки

Хорошо. Покажи мне

Карта

Давайте начнем с создания файла, давайте назовем это config.yaml. :

--- 
version: 1
name: some value

Это выше прямо здесь содержит некоторые полезные представления о формате YAML. --- называется сепаратором и не является необязательным, если в файле не будет более одной структуры. Что мы видим после этого версия и название . Ключ разделен его значением с : Отказ

Это должно быть суперсетом JSON, не пропустим двойные цитаты?

Ах, острые глаза, двойные цитаты "" на самом деле необязательно. Зачем писать больше, чем вы должны правильно? Так что вышеизложенное соответствует следующему в JSON:

{
  "version": "1",
  "name": "some value"
}

Выше находится карта, но один из клавиш на вашей карте может указывать на карту, в свою очередь, как пример ниже:

--- 
version: 1
name: some value,
address: 
  street: One Microsoft Way
  city: Redmond
  country: USA

Списки

Хорошо, давайте посмотрим на наш следующий формат списков. Рассмотрим следующий пример:

version: 1
todos:
 - shop
 - clean
 - do math
 - write essay

Тодос В этом случае тип списка, и это соответствует следующему в JSON:

"version": "1",
"todos": ["shop", "clean", "do match", "write essay"]

Как насчет списка предметов, которые являются картами?

Это просто:

created: 2019-01-01
items:
 - quantity: 2
   price: 10
   discounts:
     - id: 1
       displayName: 10% off  
     - id: 111
       displayName: Holiday Sale

Вышеприведенное будет соответствовать следующему JSON:

{
  "created": "2019-01-01",
  "items": [{
    "quantity": 2,
    "price" : 111,
    "discounts": [{
      "id": 1,
      "displayName": "10% off"
    }, {
      "id": 111,
      "displayName": "Holiday Sale"
    }]
  }]
}

Я понимаю, я думаю. А как насчет Куберанес?

О, еще одна вещь, прежде чем мы превратить все Кубернаны. здорово. Пространства — это то, что вы используете, но быть последовательным Если вы начнете использовать 2 пробела, используйте это на протяжении всего.

Ямл в Куберане

Большинство вещей, которые вы можете развернуть в кластере в Kubernetes, можно описать как файл yaml. Есть некоторые очевидные преимущества для этого:

  • Сохранение ваших пальцев : Больше не печатать длинные конструкции на командной строке
  • Контроль источника : Файлы yaml могут быть сохранены в контроле источника и тем самым мы можем отслеживать изменения
  • Гибкость : Вы сможете создать гораздо более сложные структуры, используя YAML, чем вы можете на командной строке

Так что мы собираемся описать в Ямле тогда? Мы не только опишем, но разверним следующее:

  • Стручок POD — самый маленький возможный развертываемый блок. Я знаю, знаете, вы обычно не развертываете только стручок, ради практики давайте сделаем это когда-то один раз
  • Развертывание , это больше на уровне того, что мы хотели бы развернуть. Это дает нам возможность определять реплики среди прочего

Опишите и разверните стручок

Давайте постепенно создавать файл YAML для POD и завершать, развертывая в кластере. Хорошо, здесь мы идем:

—--
apiVersion: v1
kind: Pod

Мы начинаем с указания авивение Отказ Тогда мы продолжаем с указанием Вид: стручок Отказ Теперь этот важен. Это может быть много разных типов, таких как развертывание или услуга, например, POD.

Метаданные Следующая часть нашего файла — это часть метаданных. Здесь мы даем ему имя, а также лейбл:

metadata:
 name: My Pod
 labels:
   app: web

Спецификация

Теперь мы приходим к тому, где мы описываем части, которые составляют POD.

spec:
  containers:
    - name: first-app
      image: gcr.io/google-samples/kubernetes-bootcamp:v1
      ports:
        - containerPort: 8080

Все собрали наши Pod.yaml Файл должен теперь выглядеть так:

apiVersion: v1
kind: Pod
metadata:
 name: my-pod
 labels:
   app: web
spec:
  containers:
    - name: first-app
      image: gcr.io/google-samples/kubernetes-bootcamp:v1
      ports:
        - containerPort: 8080

Развертывание нашего POD YAML

На данный момент мы хотим развернуть его к кластеру. Поэтому мы снова поговорим со нашим старым другом, Миникуба и kubectl Отказ

Иногда мой Миникуба немного медленно Поэтому я перезагружаю его с помощью команды Minikube Start. . После того, как эта команда закончила запуску, давайте проверим ситуацию под стручкой с:

kubectl get pods

Он должен перечислить все стручки, которые в настоящее время работают и работает:

Как вы можете видеть выше, мы проделали справедливую эксперименту в прошлом и создали всевозможные стручки, это, очевидно, будет выглядеть другим для вас.

После этого давайте возьмем нашу Pod.yaml Файл и создайте от него POD. Для этого мы запустим команду:

kubectl create -f pod.yaml

Который просто означает создать POD из файла -f с именем файла Pod.yaml Отказ Результатом этой команды:

Результат команды подразумевает, что мы получили созданные POD, давайте повторМотать нашу команду листинга Pods:

kubectl get pods

На этот раз вокруг нашего нового POD работает и работает. Но, конечно, развертывание просто стручка, как будто это не хорошо. Причина в том, что стручки являются смертными, если это снизится, его ушло. Сервис не принесет его снова.

Так почему даже показать это?

Это может быть образовательным, чтобы показать, как вы можете создать артефакт из файла, но с точки зрения Kubernetes, он не использует все замечательные услуги, которые могут сохранить его в живых, если что-то произойдет. В конце концов, вот почему у нас есть Кубебение, для устойчивости.

Поэтому давайте посмотрим на развертывание рядом.

Прежде чем мы продолжим, давайте убрать после себя:

kubectl delete pods my-pod

Этот триггер что-то называется изящный Прекращение, что является рекомендуемым способом делать вещи. Если вы нетерпеливы, хотя вы можете Сила удалить Это со следующей командой:

kubectl delete pods my-pod --grace-period=0 --force

Мы, конечно, удалите изящный путь так через некоторое время мы получаем это:

Вы были запустить Kubectl Получить стручки Наш стручок сейчас ушел. Все наши данные приложения, ушли, Вамоз.

Я получаю это, возьми его легко, я не буду создавать стручки напрямую, мы можем продолжить?

Развертывание

Хорошо, затем, развертывание, правильный способ делать вещи.

Мы будем использовать что-то названное РепликацияController Отказ Теперь это технически старая концепция, которая постепенно заменяется Развертывание S Какой концепт высокого уровня управления развертыванием Реплизетки Отказ Есть вопросы по поддержке приборной панели и другие вещи еще, что делает все эти подобные концепции, чтобы путать нас немного больше;) Итог в порядке, чтобы использовать эти более старые концепции для еще некоторого времени.

На этот раз мы определим новый тип объекта, так называемый РепликацияController Отказ Теперь это развертывание, которое не только указывает на какое изображение для развертывания для стручка, но и сколько стручков мы хотим какой-либо данной точки, так называемой Желаемое состояние Отказ Давайте посмотрим на файл, начиная с вершины:

apiVersion: v1
kind: ReplicationController
metadata: 
  name: my-rc

Мы определяем добрый Насколько типом РепликацияController вместо Стручок и мы продолжаем назвать его в метаданных как My-RC Отказ Теперь давайте договоримся к части спецификации:

spec:
  replicas: 5
  selector: 
    app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: my-first-app
        image: gcr.io/google-samples/kubernetes-bootcamp:v1
        ports:
        - containerPort: 8080

Действительно интересная часть здесь — реплики Количество стручков и остальных в основном мы указываем на одно и то же изображение снова.

Спецификация выглядит немного отличается на верхнем уровне, так как он является репликациейController, но внутренняя Спец Это то, к чему мы привыкли, указывая на изображение, порт и другие вещи. Давайте посмотрим полный файл, который мы называем rc.ЯМЛ :

apiVersion: v1
kind: ReplicationController
metadata: 
  name: my-rc
spec:
  replicas: 5
  selector: 
    app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: my-first-app
        image: gcr.io/google-samples/kubernetes-bootcamp:v1
        ports:
        - containerPort: 8080

Мы создаем вышеупомянутое развертывание на основе файла, набрав:

kubectl create -f rc.yaml

Выше мы видим, что наш контроллер репликации создан.

Давайте перечислите все наши стручки прямо сейчас и убедитесь, что мы получаем столько стручков, как и ожидалось:

kubectl get pods

Глядя на вышеупомянутое листинг, мы видим, что у нас есть 5 реплик, 5 экземпляров нашего POD. Мы могли бы попытаться удалить один и посмотреть, что произойдет:

kubectl delete pods my-rc-wx6h7

Это говорит нам, что вышеупомянутое устройство удаляется, поэтому мы ждем изящный Удаление, чтобы закончить, а затем снова перечислите наши стручки, и это то, что мы получаем:

Как вы можете видеть выше, наш специфический POD удален, но его заменяется на другой, количество реплик неизменяется, Kubernetes делает свою работу

Так как мы приносите это вниз, чеснок, доля?

Давайте начнем с листинга всех контроллеров репликации:

kubernetes get replicationcontroller

Теперь есть два пути, мы можем принести его, чеснок или удаление;)

Да, да очень смешно, удаление, скажи мне больше скучающий

Это так же просто, как набрать

kubectl delete replicationcontroller [name of replication controller]

Что произойдет, если вы сделаете вышеизложенное, состоит в том, что он не только удаляет контроллер репликации, но все стручки с ним, так называемым каскадным удалением. Если вы просто хотите, чтобы контроллер репликации ушел, вы можете указать --cascade = false Отказ Мы хотим, чтобы все прошло, чтобы мы просто вводим:

kubectl delete my-rc

Это должно удалить все это. Если мы запустим Kubectl Получить репликациюController Это должно быть ушло. Давайте запустим Kubectl Получить стручки И убедитесь, что стручки тоже ушли.

Давайте также заберем другой контроллер репликации, это висит вокруг моей системы слишком долго:

kubectl delete replicationcontroller my-rc

Быстро ударил:

kubectl get pods

И вы сможете увидеть, как увольнение стручков:

Резюме

В этой статье мы говорили о формате файлов yaml, что это такое, как это работает. Мы также обсудили, как мы должны использовать файлы YAML, чтобы настроить наши опыт Kubernetes. Кроме того, мы показали, как развернуть стручки, но и РепликацияControllers Отказ Надеюсь, это была образовательная и дала вам вкус на том, как выглядит настоящий руководство Кубернетика.

Оригинал: «https://dev.to/azure/how-you-actually-use-kubernetes-starring-yaml-files-3c0k»