Как в Kubernetes устроена работа с хранилищами?
Kubernetes имеет различные типы хранилищ, включая встроенный emtyDir. Некоторые из них являются stateless, что означает, что они существуют только во время работы пода. Данные, которые хранятся там, также имеют такой же срок жизни.
Для statefull-приложений используются постоянные хранилища, называемые Persistent Volumes (PV). PV — это запас хранилища, выделенный администратором кластера Kubernetes. Это могут быть локальные диски, СХД или внешние диски. Они не зависят от жизненного цикла подов.
Persistent Volume Claim (PVC) — это запрос на выделение PV с определенными характеристиками, такими как тип хранилища, объем и тип доступа. Для описания доступных PV используются Storage Classes.
В процессе работы под отправляет запрос PVC, который затем обращается к PV и передает его поду.
Kubernetes имеет различные типы хранилищ, включая встроенный emtyDir. Некоторые из них являются stateless, что означает, что они существуют только во время работы пода. Данные, которые хранятся там, также имеют такой же срок жизни.
Для statefull-приложений используются постоянные хранилища, называемые Persistent Volumes (PV). PV — это запас хранилища, выделенный администратором кластера Kubernetes. Это могут быть локальные диски, СХД или внешние диски. Они не зависят от жизненного цикла подов.
Persistent Volume Claim (PVC) — это запрос на выделение PV с определенными характеристиками, такими как тип хранилища, объем и тип доступа. Для описания доступных PV используются Storage Classes.
В процессе работы под отправляет запрос PVC, который затем обращается к PV и передает его поду.
Расскажите, как вы будете запускать приложение в Kubernetes, если из инструментов у вас только kubectl?
Общий процесс запуска приложения в Kubernetes выглядит следующим образом:
1. Сначала необходимо упаковать приложение в контейнер.
2. Далее запускаем контейнер в виде реплик с использованием Deployment.
3. Для доступности приложения в интернете и возможности подключения к нему настраиваем сервис LoadBalancer, который присваивает публичный IP-адрес и позволяет подключаться к кластеру извне.
4. Для маршрутизации трафика через балансировщик создаем Ingress в кластере, описывающий правила маршрутизации, и запускаем Ingress-контроллер.
Все эти шаги можно выполнить с помощью kubectl, используя командную строку. Это императивный способ управления Kubernetes, когда мы явно указываем, что нужно сделать.
В промышленной эксплуатации часто используется декларативный подход, при котором мы описываем желаемое состояние в манифестах, и Kubernetes самостоятельно принимает решения о необходимых действиях. Затем мы применяем эти манифесты с помощью команды kubectl apply.
Общий процесс запуска приложения в Kubernetes выглядит следующим образом:
1. Сначала необходимо упаковать приложение в контейнер.
2. Далее запускаем контейнер в виде реплик с использованием Deployment.
3. Для доступности приложения в интернете и возможности подключения к нему настраиваем сервис LoadBalancer, который присваивает публичный IP-адрес и позволяет подключаться к кластеру извне.
4. Для маршрутизации трафика через балансировщик создаем Ingress в кластере, описывающий правила маршрутизации, и запускаем Ingress-контроллер.
Все эти шаги можно выполнить с помощью kubectl, используя командную строку. Это императивный способ управления Kubernetes, когда мы явно указываем, что нужно сделать.
В промышленной эксплуатации часто используется декларативный подход, при котором мы описываем желаемое состояние в манифестах, и Kubernetes самостоятельно принимает решения о необходимых действиях. Затем мы применяем эти манифесты с помощью команды kubectl apply.
Что такое Deployment?
Deployment, по сравнению с ReplicaSet, является более абстрактной концепцией. В то время как ReplicaSet отвечает за запуск и обеспечение доступности подов, Deployment позволяет осуществлять декларативные обновления подов с использованием ReplicaSet.
Когда необходимо обновить версии или откатиться к предыдущим для группы контейнеров, мы обращаемся к Deployment.
Deployment, по сравнению с ReplicaSet, является более абстрактной концепцией. В то время как ReplicaSet отвечает за запуск и обеспечение доступности подов, Deployment позволяет осуществлять декларативные обновления подов с использованием ReplicaSet.
Когда необходимо обновить версии или откатиться к предыдущим для группы контейнеров, мы обращаемся к Deployment.
Terraform Backend. Какой лучше?
AWS S3 — Standard (с блокировкой через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB.
terraform enterprise — Standard (без блокировки).
etcd — Standard (без блокировки). Сохраняет состояние в etcd 2.x по заданному пути.
etcdv3 — Standard (с блокировкой). Сохраняет состояние в хранилище etcd в виде K/V с заданным префиксом.
gcs — Standard (с блокировкой). Сохраняет состояние как объект в настраиваемом префиксе в заданном сегменте в Google Cloud Storage (GCS). Этот бэкэнд также поддерживает блокировку состояния.
Gitlab Terraform state (с блокировкой). Хранит состояние в Gitlab Terraform state хранилище, используя HTTP протокол и права Gitlab для доступа.
Существуют также и другие Backend для Terraform.
AWS S3 — Standard (с блокировкой через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB.
terraform enterprise — Standard (без блокировки).
etcd — Standard (без блокировки). Сохраняет состояние в etcd 2.x по заданному пути.
etcdv3 — Standard (с блокировкой). Сохраняет состояние в хранилище etcd в виде K/V с заданным префиксом.
gcs — Standard (с блокировкой). Сохраняет состояние как объект в настраиваемом префиксе в заданном сегменте в Google Cloud Storage (GCS). Этот бэкэнд также поддерживает блокировку состояния.
Gitlab Terraform state (с блокировкой). Хранит состояние в Gitlab Terraform state хранилище, используя HTTP протокол и права Gitlab для доступа.
Существуют также и другие Backend для Terraform.
Что такое гипервизор?
Гипервизор, также известный как монитор виртуальных машин, — это программное обеспечение для создания и запуска виртуальных машин. С его помощью можно запустить несколько гостевых операционных систем на одном компьютере. Это достигается путем разделения ресурсов, таких как оперативная память, процессорное время и другие, что позволяет сократить потребление памяти, дискового пространства и обслуживания. Существует два типа гипервизоров:
— первого типа, который представляет собой легковесную операционную систему, запускаемую на оборудовании;
— второго типа, который представляет собой программное обеспечение, запускаемое из операционной системы.
Гипервизор, также известный как монитор виртуальных машин, — это программное обеспечение для создания и запуска виртуальных машин. С его помощью можно запустить несколько гостевых операционных систем на одном компьютере. Это достигается путем разделения ресурсов, таких как оперативная память, процессорное время и другие, что позволяет сократить потребление памяти, дискового пространства и обслуживания. Существует два типа гипервизоров:
— первого типа, который представляет собой легковесную операционную систему, запускаемую на оборудовании;
— второго типа, который представляет собой программное обеспечение, запускаемое из операционной системы.
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
👩💻∞ Почему женщины в IT стараются быть подальше от DevOps
DevOps — одно из самых модных и высокооплачиваемых направлений в IT. Однако женщины почему-то обходят его стороной. Рассмотрим распространенные мифы и заблуждения, отпугивающие девушек от DevOps.
Читать статью
#почитать
DevOps — одно из самых модных и высокооплачиваемых направлений в IT. Однако женщины почему-то обходят его стороной. Рассмотрим распространенные мифы и заблуждения, отпугивающие девушек от DevOps.
Читать статью
#почитать
Расскажите о наиболее распространенных командах Docker.
docker push: закачать репозиторий или образ в Registry;
docker run: запустить команду в новом контейнере;
docker pull: скачать репозиторий или образ из Registry;
docker start: запустить один или несколько контейнеров;
docker stop: остановить один или несколько контейнеров;
docker search: поиск образа на DockerHub;
docker commit: сохранить изменения в новый образ.
docker push: закачать репозиторий или образ в Registry;
docker run: запустить команду в новом контейнере;
docker pull: скачать репозиторий или образ из Registry;
docker start: запустить один или несколько контейнеров;
docker stop: остановить один или несколько контейнеров;
docker search: поиск образа на DockerHub;
docker commit: сохранить изменения в новый образ.
Опишите все возможные состояния контейнера Docker
Created — контейнер создан, но не активен.
Restarting — контейнер в процессе перезапуска.
Running — контейнер работает.
Paused — контейнер приостановлен.
Exited — контейнер закончил свою работу.
Dead — контейнер, который сервис попытался остановить, но не смог.
Created — контейнер создан, но не активен.
Restarting — контейнер в процессе перезапуска.
Running — контейнер работает.
Paused — контейнер приостановлен.
Exited — контейнер закончил свою работу.
Dead — контейнер, который сервис попытался остановить, но не смог.
На каких платформах запускается Docker?
Docker работает на Windows (x86_64), Linux (x86_64, ARM, s390x, ppc64le).
Docker работает на Windows (x86_64), Linux (x86_64, ARM, s390x, ppc64le).
Расскажите о процедуре входа в Docker Repository
Чтобы войти в Docker Repository, используется следующая команда:
docker login [OPTIONS] [SERVER]
Например, для входа в registry, размещенную на своих мощностях (локально), команда будет такой:
$ docker login localhost:8080
Чтобы войти в Docker Repository, используется следующая команда:
docker login [OPTIONS] [SERVER]
Например, для входа в registry, размещенную на своих мощностях (локально), команда будет такой:
$ docker login localhost:8080
Как проверить версии Docker client и Docker server?
Версию Docker можно проверить с помощью docker version [параметры]. Если не указывать параметры, команда выдаст всю информацию, связанную с версией клиента и сервера. Чтобы получить только версию сервера, можно запустить такую команду:
Версию Docker можно проверить с помощью docker version [параметры]. Если не указывать параметры, команда выдаст всю информацию, связанную с версией клиента и сервера. Чтобы получить только версию сервера, можно запустить такую команду:
docker version --format '{{.Server.Version}}'
Опишите параметр memory-swap
С помощью параметра memory-swap можно разрешить контейнеру записывать на диск данные, превышающие размер оперативной памяти, выделенной контейнеру. Он работает, только если используется одновременно с параметром memory. Например, если memory = "400m" и memory-swap = "1g", то контейнер может использовать 400мб оперативной памяти и 600мб подкачки (1гб-400мб).
С помощью параметра memory-swap можно разрешить контейнеру записывать на диск данные, превышающие размер оперативной памяти, выделенной контейнеру. Он работает, только если используется одновременно с параметром memory. Например, если memory = "400m" и memory-swap = "1g", то контейнер может использовать 400мб оперативной памяти и 600мб подкачки (1гб-400мб).
В чем разница между Registry и Repository?
Registry — это сервис хранения и распространения образов, также DockerHub — это Registry по умолчанию. Repository — это набор связанных образов. У них одно и то же имя, но разные метки.
Registry — это сервис хранения и распространения образов, также DockerHub — это Registry по умолчанию. Repository — это набор связанных образов. У них одно и то же имя, но разные метки.
Как выполняется мониторинг Docker в производственных окружениях?
Для мониторинга есть инструменты Docker stats и Docker events. С их помощью можно получить отчеты по важной статистике. Если запустить stats с некоторым идентификатором контейнера, он вернет использование оперативной памяти и процессорного времени в контейнере. Это схоже с использованием команды top. С другой стороны есть events, показывающая список активностей в процессе работы сервиса Docker. Вот некоторые из них: подключение к консоли контейнера, commit, переименование, удаление и т.п., а также есть возможность фильтрации нужных событий.
Для мониторинга есть инструменты Docker stats и Docker events. С их помощью можно получить отчеты по важной статистике. Если запустить stats с некоторым идентификатором контейнера, он вернет использование оперативной памяти и процессорного времени в контейнере. Это схоже с использованием команды top. С другой стороны есть events, показывающая список активностей в процессе работы сервиса Docker. Вот некоторые из них: подключение к консоли контейнера, commit, переименование, удаление и т.п., а также есть возможность фильтрации нужных событий.
Что такое пространства имен в Docker?
Пространства имен Docker — это технология обеспечения изолированных рабочих пространств, известная как контейнер. Как только контейнер запускается, создается набор пространств имен для этого контейнера. Они обеспечивают уровень изоляции для контейнеров, поскольку каждый контейнер работает в отдельном пространстве имен, с ограничением доступа к другим пространствам.
Пространства имен Docker — это технология обеспечения изолированных рабочих пространств, известная как контейнер. Как только контейнер запускается, создается набор пространств имен для этого контейнера. Они обеспечивают уровень изоляции для контейнеров, поскольку каждый контейнер работает в отдельном пространстве имен, с ограничением доступа к другим пространствам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Объясните метки объектов в Docker
Метки объектов Docker — это пары ключ-значение, сохраняемые в виде строк. Мы можем применить метаданные с их помощью. Метки могут быть применены к любому объекту, например, образу, контейнеру, тому, сети, локальным сервисам, узлам swarm и непосредственно сервисам. Каждая пара должна быть уникальной для объекта, сами метки не меняются динамически на протяжении существования объекта.
Метки объектов Docker — это пары ключ-значение, сохраняемые в виде строк. Мы можем применить метаданные с их помощью. Метки могут быть применены к любому объекту, например, образу, контейнеру, тому, сети, локальным сервисам, узлам swarm и непосредственно сервисам. Каждая пара должна быть уникальной для объекта, сами метки не меняются динамически на протяжении существования объекта.
Чем отличается контейнеризация в виде Docker от других технологий?
Docker может быть легко развернут в любой облачной платформе. Также разработчики могут создать готовые к запуску контейнеризированные приложения быстрее, могут легко развертывать приложения и управлять ими. Кроме того, контейнеры могут быть общими для приложений. Эти функции не работают в других технологиях контейнеризации.
Docker может быть легко развернут в любой облачной платформе. Также разработчики могут создать готовые к запуску контейнеризированные приложения быстрее, могут легко развертывать приложения и управлять ими. Кроме того, контейнеры могут быть общими для приложений. Эти функции не работают в других технологиях контейнеризации.
Расскажите об образах Docker, DockerHub, Dockerfile
Образы: файлы, содержащие несколько слоев, используемые для выполнения кода внутри контейнера. Они собираются по инструкциям для получения исполняемой версии приложения. Образы могут ускорить сборку в Docker с помощью кэширования каждого этапа.
DockerHub: сервис для поиска и совместного использования образов контейнеров. Вы можете выгружать туда свои образы, скачивать их оттуда, работать с частными репозиториями образов контейнеров, собирать автоматически образы с помощью GitHub (Bitbucket), а затем закачивать их в DockerHub. Этот сервис предоставляет компания Docker.
Dockerfile: текстовый файл, используемый для сборки образа. Он содержит инструкции и команды по сборке образа. Docker читает их и автоматически собирает образ.
Образы: файлы, содержащие несколько слоев, используемые для выполнения кода внутри контейнера. Они собираются по инструкциям для получения исполняемой версии приложения. Образы могут ускорить сборку в Docker с помощью кэширования каждого этапа.
DockerHub: сервис для поиска и совместного использования образов контейнеров. Вы можете выгружать туда свои образы, скачивать их оттуда, работать с частными репозиториями образов контейнеров, собирать автоматически образы с помощью GitHub (Bitbucket), а затем закачивать их в DockerHub. Этот сервис предоставляет компания Docker.
Dockerfile: текстовый файл, используемый для сборки образа. Он содержит инструкции и команды по сборке образа. Docker читает их и автоматически собирает образ.