☸️ Kubernetes: советы и хитрости, как максимально использовать Kubernetes

by itisgood
Kubernetes – одно из величайших открытий в области контейнерных технологий последних лет.
Для любой компании, желающей создать крупномасштабные и широко доступные контейнеры, Kubernetes – это отличный многофункциональный и простой в использовании вариант.
Даже для тех, кто был уже привлечен к приложениям Kubernetes, все еще есть некоторые незнакомые или недостаточно используемые функции, которые расширят опыт и помогут вам максимально использовать эту бесценную технологию.
Вот некоторые советы и хитрости Kubernetes.

Пусть Bash сделает всю работу за вас

Возможно, самая простая, но самая эффективная команда в вашем арсенале – это использовать bash для автозаполнения ваших команд kubectl.
При открытии оболочки для ввода любых длинных записей (например, «-all-namespaces») .bashrc начнет их заполнять их за вас.
Введите следующую командную строку, чтобы добавить автозаполнение:
$ echo “source <(kubectl completion bash)” >> ~/.bashrc

Очистка контейнеров

Другой полезный совет по автоматизации – использовать команду для очистки образов Docker.

Вы, вероятно, заметили, что эта функция уже установлена по умолчанию: при достижении 90% емкости в Docker или в var или lib содержимое автоматически очищается.

Однако вы можете обнаружить (особенно если вы используете версию Kubernetes до 1.7), что пороговое значение для inode не имеет значения по умолчанию, что означает, что вы могли бы потратить все свои inode, заполнив только половину дискового пространства.

Чтобы избежать этого сценария, если вы используете Kubernetes 1.4 до 1.6, введите следующую команду:

–eviction-hard

=memory.available<100Mi,nodefs.available<10%,nodefs.inodesFree<5%

Ограничение мощностей по лимитам

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

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

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

apiVersion: v1  

 kind: LimitRange  

 metadata:  

   name: mem-limit-range  

 spec:  

   limits:  

   – default:  

       memory: 512Mi  

     defaultRequest:  

       memory: 256Mi  

     type: Container

Локализация ваших кластеров

Функция Minikube настолько проста, что едва ли нуждается в полной точке.

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

Это так же просто, как запустить команду:

$ minikube start

Однако, если вы хотите, чтобы ваши образы передавались сборкой Docker в локальный кластер, выполните следующую команду:

$ eval $(minikube docker-env)

Ограничение доступа

Это не команда, а общий совет по использованию Kubernetes.

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

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

Маркируйте все

Labels (метки) являются одним из основных элементов Kubernetes, но их ценность не всегда применяется.

Существуют метки для соединения одного объекта или элемента с другим, менее требовательным способом, помогая в организации команды, управлении проектом и запросах.

Вы даже можете использовать метки для разделения одного кластера на несколько мини-сред.

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

Метки особенно эффективны в Kubernetes Go, небольшом полезном клиенте с широкими возможностями настройки.

Как следует из названия, этот клиент берет свое начало в GO, то это подходит для всего: от механизмов развертывания до приложений очистки.

Pod Disruption Budgets (PDB)

Эта функция неоценима в части вопросов, чтобы ваше приложение избежало простоев.

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

Вот пример PDB:

apiVersion: policy/v1beta1  

 kind: PodDisruptionBudget  

 metadata:  

   name: app-a-pdb  

 spec:  

   minAvailable: 2  

   selector:  

       matchLabels:  

         app: app-a

Следите за minAvailable и matchLabels: эти элементы позволяют управлять одновременно запущенными экземплярами.

Добавьте значений  вашему minAvailable, чтобы использовать больше узлов и к вашим matchLabels для нескольких развертываний.

Это были некоторые советы и хитрости Kubernetes, пожалуйста, поделитесь своими советами и хитростями, используя поле для комментариев ниже.

 

You may also like

Leave a Comment