Git Product home page Git Product logo

yc-kubelet-config-editor's Introduction

DaemonSet для обновления конфигурации kubelet

По мотивам yc-kubelet-flag-editor.

Поскольку, практически для всех параметров kubelet, в официальной документации указано, что This parameter should be set via the config file specified by the kubelet's --config flag, для модификации config-файла было решено использовать слияние YAML-манифестов вместо аргументов командной строки kubelet, при помощи инструмента yq.

Описание

Поды, запущенные при помощи DaemonSet, запускаются на всех воркерах. Скрипт внутри конейнера будет выполнять следующее:

  1. Периодически выполняет слияние kubelet config с кастомными конфигами, заданными в ConfigMap kubelet-custom.
  2. Если конфиг, который находится на воркере, отличается от YAML, полученного в результате слияния, конфиг обновляется.
  3. Удаляются файлы, содержащие состояния менеджеров CPU и Memory, перезагружается kubelet.

Кастомные конфигурации kubelet находятся в конфигмапе, заданном в манифесте cm-custom-kubelet.yaml.

Каждый из элементов этого конфигмапа должнен иметь имя файла с расширением .yaml и быть описан в соответствии со структурой KubeletConfiguration.

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

kubelet-config.yaml <-- 01-custom.yaml <-- 02-custom.yaml

Пример:

kubelet-config.yaml

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
kubeReserved:
  cpu: 80m
  ephemeral-storage: 39Gi
  memory: 1943Mi
maxPods: 110

01-custom.yaml

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
kubeReserved:
  cpu: 500m
maxPods: 150

02-custom.yaml

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
maxPods: 110

В результирующем YAML-конфиге получим:

apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
kubeReserved:
  cpu: 500m
  ephemeral-storage: 39Gi
  memory: 1943Mi
maxPods: 110

Установка

kubectl apply -f namespace.yaml
kubectl apply -f cm-script.yaml
kubectl apply -f cm-custom-kubelet.yaml
kubectl apply -f daemonset.yaml

yc-kubelet-config-editor's People

Contributors

maxkochubey avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.