культура, автоматизация, измерение и обмен знаниями (culture, automation, measurement, sharing, вместе CAMS). Брайан Доусон предлагает другое определение, которое он называет троицей DevOps: люди и культура, процесс и практика, инструменты и технологии.
Принадлежность может быть жесткой и мягкой. Инженеры, как правило, не блещут талантами в выборе изящных названий, поэтому в Kubernetes используются следующие термины:
• На уровне ядра Linux контейнер представляет собой изолированный набор процессов с обособленными ресурсами. С точки зрения контейнера все выглядит так, как будто ему выделен целый компьютер с Linux.
• Контейнеры не являются виртуальными машинами. Каждый из них должен выполнять лишь один основной процесс.
• Pod-оболочка обычно содержит один контейнер с основным приложением и опциональный вспомогательный контейнер для поддержки.
• Полное название образа контейнера может включать в себя сетевое имя реестра, пространство имен репозитория, репозиторий образа и тег: например, docker.io/cloudnatived/demo:hello. Обязательным является только имя образа.
• Чтобы ваши развертывания можно было воспроизвести, всегда указывайте тег для образа контейнера. В противном случае вы получите последнюю текущую версию.
• Программы в контейнерах не должны выполняться от имени администратора. Вместо этого для них следует назначить обычного пользователя.
• Вы можете указать поле runAsNonRoot:true, чтобы блокировать любые контейнеры, которые хотят работать от имени root.
• Среди прочих полезных параметров безопасности контейнеров можно выделить readOnlyRootFilesystem:true и allowPrivilegeEscalation:false.
• Мандаты Linux предоставляют гибкий механизм управления привилегиями, но контейнеры по умолчанию имеют слишком щедрый их набор. Для начала уберите все мандаты, а затем выдавайте контейнеру необходимые.
• Контейнеры в одной pod-оболочке могут обмениваться данными путем чтения и записи в подключенном томе. Самый простой тип томов, emptyDir, изначально является пустым и хранит свое содержимое только во время работы pod-оболочки.
• Том PersistentVolume, в свою очередь, хранит свое содержимое столько, сколько нужно. Pod-оболочки могут динамически выделять новые постоянные тома с помощью запросов PersistentVolumeClaim.
Исходя из нашего опыта и опыта многих людей, с которыми мы беседовали в процессе написания этой книги, использование управляемого сервиса, вне всяких сомнений, является лучшим способом работы с Kubernetes.
для мелких и средних компаний или даже стартапов с парой инженеров накладные расходы на администрирование собственных кластеров Kubernetes могут оказаться непосильными.