понедельник, 4 ноября 2024 г.

Динамическое предоставление томов в Kubernetes

Динамическое предоставление томов дает возможность создания томов по требованию. Без динамического представления админисраторы кластера должны вручную обращаться к своим облачным хранилищам или службам хранения данных для создания новых томов, а затем создавать объекты персистентных томов PersistentVolume для представления этих хранилищ в Kubernetes. Функция динамического представления убирает необходимость предварительной подготовки хранилища администраторами кластера. Вместо этого, она автоматически представляет хранилище, когда пользователь создает объекты PersistentVolumeClaim. 


Общая информация

Реализация динамического предоставления томов основана на объекте класса хранилища (StorageClass) в API, который находится в API группе storage.k8s.io. Администратор кластера может определить необходимое количество обьектов классов хранилища, в каждом их которых указывается плагин для тома (aka представитель), который предоставляет том и набор параметров для передачи представителю при предоставлении. Администратор кластера может определить и представить множество разновидностей хранилищ (от одной или разных систем хранения данных) в кластере, каждый с собственным набором параметров. Этот подход также избавляет конечного пользователя от сложностей и нюансов процесса выделения хранилища, но все еще дает возможность выбора из множества возможных хранилищ.    


Дополнительную информацию о классах хранилищ можно найти по адресу: https://kubernetes.io/docs/concepts/storage/storage-classes/


Включение динамического предоставления

Чтобы включить динамическое предоставление, админисратору кластера нужно предварительно создать один или более объектов StorageClass для пользователей. Объекты StorageClass определяют какой надо использовать плагин преддоставления и какие параметры следует ему передавать когда будет вызвано динамическое предоставление. Имя объекта StorageClass должно быть валидным DNS именем субдомена.

Следующий манифест создает класс хранилища "slow" который предоставляет персистентные диски, похожие на стандартные.


apiVersion: storage.k8s.io/v1

kind: StorageClass

metadata:

  name: slow

provisioner: kubernetes.io/gce-pd

parameters:

  type: pd-standard

 

Следующий манифест создает класс хранилища "fast" который предоставляет персистентные диски, похожие на SSD.


apiVersion: storage.k8s.io/v1

kind: StorageClass

metadata:

  name: fast

provisioner: kubernetes.io/gce-pd

parameters:

  type: pd-ssd

 

Использование динамического предоставления

Пользователи запрашивают динамически-предоставляемые хранилища включая класс хранилища в свои манифесты PersistentVolumeClaim. До версии Kubernetes v1.6 это делалось через аннотацию volume.beta.kubernetes.io/storage-class. Однако, эта аннотация стала устаревшей с версии 1.9. Пользователи теперь могут и должны вместо этого использовать поле storageClassName объекта PersistentVolumeClaim. Значение этого поля должно совпадать с именем класса хранилища StorageClass, сконфигурированного администратором (смотри далее).

Чтобы выбрать класс хранилища "fast", пользователь должен был бы создать следующий PersistentVolumeClaim: 


apiVersion: v1

kind: PersistentVolumeClaim

metadata:

  name: claim1

spec:

  accessModes:

    - ReadWriteOnce

  storageClassName: fast

  resources:

    requests:

      storage: 30Gi

Это требование повлечет автоматическое предоставление персистентного диска типа SSD. При удалении требования, том также будет удален.


Поведение по умолчанию

Может быть выставлено такое динамическое предоставление в кластере, что если не указан класс хранилища, то они все считаются динамическими. Администратор кластера может включить это поведение так:

  • Пометить один объект класса хранилищ по умолчанию;
  • Убедиться, что контроллер допуска DefaultStorageClass включен в API сервере.

Администратор может пометить конкретный StorageClass по умолчанию, добавив ему аннотацию storageclass.kubernetes.io/is-default-class. Когда в кластере существует класс хранилища по умолчанию и пользователь создает PersistentVolumeClaim, в котором не указан storageClassName, то контроллер допуска DefaultStorageClass автоматически добавляет поле storageClassName, которое указывает на класс по умолчанию.

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

В мульти-зональных кластерах Поды могут быть распределены по зонам в регионе. Однозональные сервисы хранения данных должны в этом случае присутствовать на всех зонах, где будут эти Поды. Это можно настроить установкой режима монтирования томов Volume Binding Mode.


Источник перевода: https://kubernetes.io/docs/concepts/storage/dynamic-provisioning/

вторник, 15 февраля 2022 г.

Как сделать простое расширение для Chrome. Простой пример из документации. Перевод (вольный).

Расширения - набор файлов, содержащих отдельные, но работающие совместно компоненты.

Эти компоненты могут быть фоновыми скриптами, контентными скриптами, страницами настроек, элементами пользовательского интерфейса и различными файлами с логикой. Для создания этих компонентов используются технологии интернет-разработки: HTML, CSS и JavaScript. Компоненты расширения могут выполнять различные функции и ни один компонент не является обязательным.

понедельник, 23 марта 2015 г.

Кратко о Google Apps Script

Google App Script - это язык скриптов, основанный на JavaScript, с помощью которого вы можете разработать или добавить новый функционал для таких приложений Google, как Google Docs, Sheets и Forms.
Не надо ничего устанавливать на компьютер, чтобы начать работать с этим языком. Вы используете браузер для работы в редакторе, а код запускается прямо на серверах Google. 

четверг, 3 апреля 2014 г.

Google App Engine - система авторизации и аутентификации пользователей. Регулируем и экономим.

Еще раз возвращаюсь к Google App Engine и обдумыванию реализации авторизации и аутентификации пользователей на сайте.
Конечно, можно предположить, что все наши посетители - пользователи Google и на этом сильно сэкономить :), однако предположим, что большинство из них не обладает учеткой Google, либо не хочет светить ее и акцептировать наш сайт.

вторник, 17 декабря 2013 г.

DocPad. Документация по-русски

Что такое DOCPAD?

Мода на генераторы статических сайтов не пройдет никогда, и вот одним из таких инструментов для управления и создания сайтов является DocPad. Он создан на основе Node.js и Express.js.
Описывать установку, пожалуй не буду, перейду сразу к докам для начинающих.

понедельник, 29 июля 2013 г.

Рассылка писем с помощью SendGrid из Google App Engine

Этот пост от Адама ДюВандера, директора по коммуникациям в SendGrid. SendGrid это облачный почтовый сервис, доставляющий электронную почту от имени компаний для улучшения связей и общения с клиентами. Интеграция новых или существующих систем почты осуществляется через SMTP или через REST API. В этом посте Адам рассказал как интегрировать SendGrid в приложение на Google App Engine.
Если вы разрабатываете приложения для Интернет или мобильной среды, вам необходим эффективный способ общения с клиентами. Создание и поддержание собственной инфраструктуры SMTP может занять много ресурсов и станет дорогим удовольствием. SendGrid исключает затраты и сложности по работе с электронной почтой, так что вы можете сосредоточиться на разработке своего следующего экстраординарного приложения.
Разработчики, использующие Google App Engine могут легко интегрировать SendGrid в собственные приложения. В примере ниже я покажу вам, как использовать нашу библиотеку Python. Java и PHP разработчики также имеют такую возможность. Любой разработчик Google App Engine может зарегистрироваться на SendGrid и рассылать бесплатно 25000 писем ежемесячно, так что ждем Вас!
Сначала, скопируйте библиотеку Python SendGrid в ваш проект в соответствующую папку. Когда вы импортируете эту библиотеку в ваше приложение, вы сможете создавать экземпляры SendGrids и рассылать почту с помощью простых команд.
Итак, вначале:
from sendgrid import Sendgrid
from sendgrid import Message

Теперь, в приложении можно отсылать почту с помощью нескольких строк:
# make a secure connection to SendGrid
s = sendgrid.Sendgrid('', '', secure=True)
# make a message object
message = sendgrid.Message("from@mydomain.com", "message subject", "plaintext message body",
"HTML message body")
# add a recipient
message.add_to("someone@example.com", "John Doe")
# use the Web API to send your message
s.web.send(message)

Также SendGrid предоставляет информацию о ваших письмах, например с помощью EventAPI вы можете узнать когда была доставлена, прочитана почта и множество других событий. 

четверг, 8 ноября 2012 г.

Новости блога Google AppEngine

6 ноября в блоге появилась статья общего характера, в которой говориться следующее:
С момента появления новой среды Python версии 2.7 в феврале на нее успели перейти более половины всех активных приложений AppEngine.
Что же такого замечательного пришло вместе с Python 2.7? Это не просто обновление версии языка, это множество улучшений и изменений, способных значительно повлиять на эффективность выполнения приложений в среде Google AppEngine.
Увеличение эффективности параллельных запросов. Теперь всего лишь один фронтенд-экземпляр может обрабатывать сразу несколько запросов одновременно в разных потоках. А это значит, что теперь AppEngine требуется значительно меньше экземпляров для обработки того же объема трафика, а это значит значительное уменьшение стоимости работы сервиса.
Небольшая, но энергично-растущая компания мобильных игровых приложений Pocket Gems смогла снизить расходы на запуск фронтенд-экземпляров на 78%, когда они перешли на работу со средой Python 2.7. "Мы сразу же увидели значительную разницу." - заявил технический директор Дэвид Ундерхил. Нам теперь было достаточно лишь одной трети ресурсов, работающих на Python 2.7, чтобы справляться с тем же объемом трафика и задач под Python 2.5.
Более быстрые и более "нативные" С модули. В среду Google AppEngine были добавлены более быстрые "нативные" С-модули. Базовые библиотеки, такие как например cPickle выполняются значительно быстрее, чем их эквиваленты в среде исполнения Python 2.5.
Воспользуйтесь популярными сторонними библиотеками вроде PIL или NumPy. Мы значительно расширили количество библиотек сторонних разработчиков, которые теперь можно использовать в Google AppEngine Python 2.7.