Рубрики
Uncategorized

Kubernetes — Обзор

Kubernetes — это структура оркестровки с открытым исходным кодом, которая зависит от времени выполнения контейнера … Теги с кубиком, контейнером, DevOps, учебным пособием.

Kubernetes — это структура оркестровки с открытым исходным кодом, которая зависит от времени выполнения контейнера, такой как Docker или Containerd.

Пространство имен

Каждый созданный ресурс существует в Пространство имен Анкет По умолчанию это пространство имен с именем по умолчанию Анкет Также возможно создавать новые пространства имен. Если вы использовали Docker Swarm Раньше вы можете думать о пространстве имен как о куча .

apiVersion: v1
kind: Namespace
metadata:
    name: development
    labels:
        name: development

Капсул

A POD набор одного или нескольких контейнеров, обмена такими же Пространство имен и тома Анкет

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

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

template:
  spec:
    containers:
    - name: hello
      image: hello-world
    restartPolicy: OnFailure

Нагрузка

Обычно шаблоны стручков используются SO Контроллер рабочей нагрузки Анкет Они несут ответственность за управление жизненным циклом Рабочая нагрузка такой как работа и развертывание Анкет Ниже приведено определение рабочей нагрузки. Соответствующий контроллер позаботится о том, чтобы состояние системы соответствовало определению.

apiVersion: batch/v1
kind: Job
metadata:
  name: hello-world
spec:
  template:
    spec:
      containers:
      - name: hello
        image: hello-world
      restartPolicy: OnFailure

В зависимости от типа приложения и конфигурации POD, разного рабочие нагрузки может быть использован. Ниже приведены рабочие нагрузки по умолчанию. Также возможно использовать пользовательские рабочие нагрузки со специализированным поведением.

  • Развертывание и Replicaset (замена устаревшего ресурса ReplicationController). Развертывание хорошо подходит для управления рабочей нагрузкой приложения без сохранения в вашем кластере, где любой стручок в развертывании взаимозаменяемый и может быть заменен при необходимости.
  • Statefulset Позволяет запустить один или несколько связанных стручков, которые каким -то образом отслеживают состояние. Например, если ваша рабочая нагрузка постоянно записывает данные, вы можете запустить Statefulset, который соответствует каждому POD с PersistentVolume. Ваш код, работающий в стручках для этого состояния, может воспроизводить данные другим стручкам в том же состоянии, чтобы повысить общую устойчивость.
  • Daemonset Определяет стручки, которые предоставляют узлы-локальные средства. Они могут быть фундаментальными для работы вашего кластера, такой как инструмент сетевого помощника, или быть частью дополнения. Каждый раз, когда вы добавляете узел в свой кластер, который соответствует спецификации в Daemonset, плоскость управления планирует стручок для этого Daemonset на новый узел.
  • Работа и Cronjob Определите задачи, которые бегают до завершения, а затем остановитесь. Работы представляют одноразовые задачи, в то время как Cronjobs повторяются в соответствии с графиком.

обслуживание

Услуги являются абстракцией поверх различных бэкэндов, таких как стручки. Они позволяют изменить бэкэнд при сохранении услуг. Услуги могут быть использованы для обоих, разоблачение Определенные рабочие нагрузки в публичную сеть ( Nodeport ) а также для связь между разными Podsets ( clucreip ), предоставляя стабильное имя IP/DNS. Обычно сервисы соответствуют набору стручков, используя этикетки и селекторы. Часто контроллер Ingress используется для выявления услуг.

apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  selector:
    app: MyApp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 9376

Балансировки нагрузки

Балансировка нагрузки по умолчанию для сервисов и стручков выполняется Kube-Proxy и случается на слое 4.

Выбранный Прокси -режим для Kube-Proxy Определяет алгоритм балансировки нагрузки.

  • Пользовательский режим Выбирает бэкэнд с помощью алгоритма круглого робина.
  • Iptables Mode Выбирает бэкэнд случайным образом.
  • IPVS MODE предоставляет больше вариантов балансировки трафика для бэкэнд -стручков; это:

    • rr : по-круговой
    • LC : наименьшее соединение (наименьшее количество открытых соединений)
    • DH : Хешинг назначения
    • sh : Источник хешинг
    • sed : кратчайшая ожидаемая задержка
    • NQ : никогда не стоят в очереди

Обнаружение обслуживания

Kubernetes предоставляет DNS Анкет В зависимости от того, где находится запрос, запрос DNS дает разные результаты. Например, ресурсы в одном пространстве имен могут найти друг друга без их полностью квалифицированного доменного имени ( fqdn ).

Контейнер в одной и той же стручке может найти друг друга через интерфейс Loopback.

Запись DNS PODS имеет следующую форму.

pod-ip-address.my-namespace.pod.cluster-domain.example.

Стручки, созданные развертыванием или Daemonset, открытым службой, имеют следующее разрешение DNS.

pod-ip-address.deployment-name.my-namespace.svc.cluster-domain.example

Рабочие нагрузки, такие как развертывания, делают не Имейте DNS -имя сами. Вот почему большую часть времени они в сочетании с услугами, если им нужно быть доступным для других услуг или внешних запросов.

Услуги решаются как следующее.

..svc.cluster.local

Стручки используют свое собственное пространство имен по умолчанию, это означает, что, например, при запросе Это будет решаться в службу, связанную с тем же пространством имен, что и стручок, делающий запрос DNS.

Это возможно из -за записи в каждом контейнерах /etc/resolv.conf это имеет следующую форму.

search .svc.cluster.local svc.cluster.local cluster.local

Примечание: не все инструменты, связанные с DNS, будут Поиск по умолчанию. Например, чтобы получить Сервис IP без Fqdn , из контейнера, используя Dig, +Поиск Флаг должен быть использован.

dig +search 

Отладка DNS

Проверки здоровья

По умолчанию Kubernetes использует идентификатор процесса контейнера, чтобы определить стручок Живо и готовы Чтобы принять запросы. Пока весь указанный контейнер имеет соответствующий идентификатор процесса (PID), POD считается здоровым.

Обычай HealthProbes , может быть указан. Например, inivesprobe через http.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: healthcheck-me
spec:
  template:
    metadata:
      labels:
        app: healthcheck-me
    spec:
      containers:
      - name: healthcheck-me
        image: localhost/checkme
        ivenessProbe:
          httpGet:
            path: /healthz
            port: 80
          initialDelaySeconds: 0
          periodSeconds: 10
          timeoutSeconds: 1
          failureThreshold: 3

Тома

Тома являются механизмом отделки хранения из контейнера. В Kubernetes поддерживаются различные типы объемов, и стручки могут одновременно использовать любое количество типов. Основное различие между этими типами заключается в том, что они эфемерный или настойчивый .

Когда стручка перестает существовать, Kubernetes разрушает эфемерные объемы; Тем не менее, Kubernetes не разрушает постоянные объемы. Для любого вида объема в заданном стручке данные сохраняются через перезапуск контейнеров.

apiVersion: v1
kind: Pod
metadata:
  name: configmap-pod
spec:
  containers:
    - name: test
      image: busybox
      volumeMounts:
        - name: config-vol
          mountPath: /etc/config
  volumes:
    - name: config-vol
      configMap:
        name: log-config
        items:
          - key: log_level
            path: log_level

Типы объемов

Ниже приведены некоторые из наиболее распространенных типов объемов. Есть больше типов доступно, например, большой облачный провайдер AWS , GCP и Azure Имейте свой собственный тип тома, который обеспечивает хранение в облачной платформе уважения.

ConfigMap предоставляет способ ввести данные конфигурации в стручки. configmap (эфемерный)
Том UlmentDir сначала создается, когда стручка назначается на узел, и существует до тех пор, пока этот стручок работает на этом узле. EmptyDir (эфемерный)
Том HostPath объединяет файл или каталог из файловой системы узла хоста в ваш капсул. Hostpath
Локальный том представляет собой монтированное локальное устройство хранения, такое как диск, раздел или каталог. местный
Том NFS позволяет установить существующую NFS (сетевую файловую систему) общую общую сумму в POD. nfs
Том PersistentVolumeclaim используется для установки PersistentVolume в стручок. PersistentVolumeclaim
Секретный том используется для передачи конфиденциальной информации, такой как пароли, стручкам. Секрет (Epehemral)

Оригинал: «https://dev.to/codingsafari/kubernetes-overview-png»