Поднятие 3-х master-нод и 2-х worker-нод с автоматическим provisioning: — всех необходимых настроек для подготовки нод к установке k8s-кластера — установка Haproxy на master0{1..2}-нодах в качестве балансировщика нагрузки на транспортном уровне (Level 4) а) балансировка входящих kube-api-запросов, поступающих от kubelet и других клиентов на все kube-api поды запущенные на master-нодах б) балансировка входящих клиентских/пользовательских […]
Записи с меткой ‘kubernetes’
Vagrant автоматическая установка и настройка виртуальных машин для ручной установки kubernetes кластера средствами kubeadm
Helm — полезные команды
Установка клиентской (helm-клиента) и серверной (helm-tiller) частей было рассмотрено в статье(актуально для версии Helm 2) https://kamaok.org.ua/?p=3109 Обновленная статья в связи с выходом Helm версии 3 Установка HELM версии 3 https://helm.sh/docs/intro/install/ На Centos7
1 |
# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 |
1 |
# chmod 700 get_helm.sh |
1 |
# ./get_helm.sh |
На Ubuntu/Debian
1 |
# curl https://baltocdn.com/helm/signing.asc | apt-key add - |
1 |
# apt-get install apt-transport-https --yes |
1 |
# echo "deb https://baltocdn.com/helm/stable/debian/ all main" | tee /etc/apt/sources.list.d/helm-stable-debian.list |
1 |
# apt-get update && apt-get install helm |
1 |
# helm version |
Настройка автодополнения helm в bash
1 |
# echo "source <(helm completion bash)" >> ~/.bashrc && source ~/.bashrc |
Проверка
1 |
# helm [TAB] |
Проверка локальных helm-переменных
1 |
# helm env |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
HELM_BIN="helm" HELM_CACHE_HOME="/root/.cache/helm" HELM_CONFIG_HOME="/root/.config/helm" HELM_DATA_HOME="/root/.local/share/helm" HELM_DEBUG="false" HELM_KUBEAPISERVER="" HELM_KUBEASGROUPS="" HELM_KUBEASUSER="" HELM_KUBECONTEXT="" HELM_KUBETOKEN="" HELM_MAX_HISTORY="10" HELM_NAMESPACE="default" HELM_PLUGINS="/root/.local/share/helm/plugins" HELM_REGISTRY_CONFIG="/root/.config/helm/registry.json" HELM_REPOSITORY_CACHE="/root/.cache/helm/repository" HELM_REPOSITORY_CONFIG="/root/.config/helm/repositories.yaml" |
[…]
Базовая работа с Kubernetes — часть 2
Рассмотрим несколько основных ресурсов/объектов в Kubernetes Ресурс/Объект Pod Pod — минимальная базовая единица Kubernetes, представляет собой группу из одного или нескольких контейнеров (например, контейнеров Docker) с общим хранилищем / сетью и спецификацией для запуска контейнеров Сам по себе не может перезапускаться автоматически при ручном или аварийном завершении своей работы. Поэтому выше над Pod-ом существуют другие […]
Базовая работа с Kubernetes — часть 1
Ресурсы/объекты в Kubernetes (Deployment, Service, ReplicaSet, Pod и т .д.) можно создавать двумя методами/способами Императивный – определяем что должно произойти/какие команды нужно выполнить и в какой последовательности, каким образом нужно получить желаемое состояние ресурсов Декларативный – определяем состояние ресурсов, которое мы хотим получить, без указания каким именно образом должно быть достигнуто такое состояние. Такое определение […]
Установка Kubernetes-кластера с помощью kubeadm на виртуальных машинах c Ubuntu18.04
Настройка Kubernetes-кластера из 1-го мастера и 2-х нод на виртуальных машин c Ubuntu 18.04 Для практической работы были взяты виртуалки в Digital Ocean(2Gb, 2СPU) с бесплатным бонусом в размере 100$ в течение 60 дней при регистрации на Digital Ocean. Алгоритм действий состоит из следующих шагов 1.Подготовка к запуску кластера(отключение swap, настройка /etc/hosts-файла серверов, установка имени […]
Настройка Cloud Nat для приватного Kubernetes кластера в Google Cloud
Cloud NAT позволяет виртуальным машинам и подам выходить в Интернет, используя общий публичный IP-адрес. Приватный Google Kubernetes-кластер, ноды которого не имеют публичных IP-адресов используются в случае: — с точки зрения безопасности,чтобы невозможно было подключиться к ним снаружи — необходимо,чтобы все ноды/поды выходили в Интернет с одного(или нескольких) IP-адреса/ов(например, для добавления этих одного/нескольких IP-адресов в white-листы […]
Настройка pipeline авто-деплоя в Kubernetes-кластер с помощью Gitlab и Helm
Имеются два окружения staging и production(так же будут называться и namespace-ы в Kubernetes-кластере) Настраиваем автоматический deploy в Kubernetes кластер при коммите в одну из веток При коммите в ветку develop – деплой приложений в namespace staging При коммите в ветку staging – деплой приложений в namespace production С помощью GitlabCI выполняется деплой,в котором используется Helm-чарт […]
Мониторинг Kubernetes кластера с помощью Prometheus
За основу был взят стек мониторинга Prometehus с помощью Prometheus operator отсюда https://github.com/helm/charts/tree/master/stable/prometheus-operator https://coreos.com/operators/prometheus/docs/latest/user-guides/getting-started.html Все параметры, которые необходимо было переопределить указаны в файле custom-values.yaml Мониторинг стек запускается с помощью Helm-чарта
1 |
# helm install --name monitoring-stack stable/prometheus-operator --set grafana.adminPassword="mygrafanapassword" -f custom-values.yaml |
Обновление стека выполняется командой
1 |
# helm upgrade monitoring-stack stable/prometheus-operator --set grafana.adminPassword="mygrafanapassword" -f custom-values.yaml |
Установка Helm клиента https://docs.helm.sh/using_helm/#installing-helm https://docs.helm.sh/using_helm/
1 |
# wget https://storage.googleapis.com/kubernetes-helm/helm-v2.12.3-linux-amd64.tar.gz |
Последняя версия доступная здесь https://github.com/helm/helm/releases
1 |
# tar -zxvf helm-v2.12.3-linux-amd64.tar.gz |
1 |
# sudo mv linux-amd64/helm /usr/local/bin/helm |
Проверка текущего контекста,куда будет установлен […]
Запуск локального Kubernetes кластера с помощью Minikube c KVM2-драйвером
Minikube позволяет запускать одно-нодовый Kubernetes кластер внутри виртуальной машины на локальном компьютере Проверка поддержки процессором виртуализации
1 |
# egrep --color 'vmx|svm' /proc/cpuinfo |
Установка minikube https://kubernetes.io/docs/tasks/tools/install-minikube/ Загрузка бинарника minikube,установка бита исполнения на него и копирование в /usr/local/bin для того,чтобы minikube был доступен в переменной PATH
1 |
# curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 && chmod +x minikube |
1 |
# cp minikube /usr/local/bin && rm minikube |
Для использования minikube предварительно необходимо установить kubectl и kvm2-драйвер Установка и настройка […]