k8s resources capacity
result:
#kubernetes
kubectl get node -o json | jq -j '.items[]|.metadata.name + ":" + "\n\tpod capacity: " + .status.capacity.pods + "\n\tcpu capacity: " + .status.capacity.cpu + "\n\tmemory capacity: " + .status.capacity.memory + "\n"'
result:
...
kubernetes-node-0:
pod capacity: 110
cpu capacity: 6
memory capacity: 12273236Ki
...
#kubernetes
как сбросить пароль на postgresql в запущенном docker контейнере без перезапуска
Рубрика "костылим с буквой"
ОСТОРОЖНО прочитанное далее может вызвать кровотечение из глаз и непреодолимое желание расшибить себе лоб рукой.
вы были предупреждены.
Раскатывал я тут хелм сентри... Дано: не работающий Job, который использует пароль из секрета, и криво написанный авторами чарт, в котором слетает пароль пользователя в postgres. Задача - установить в контенере на лету нужный пароль пользователя.
#рукиизжопы #костыли #postgresql #docker #sentry #kubernetes
Рубрика "костылим с буквой"
ОСТОРОЖНО прочитанное далее может вызвать кровотечение из глаз и непреодолимое желание расшибить себе лоб рукой.
вы были предупреждены.
Раскатывал я тут хелм сентри... Дано: не работающий Job, который использует пароль из секрета, и криво написанный авторами чарт, в котором слетает пароль пользователя в postgres. Задача - установить в контенере на лету нужный пароль пользователя.
# получаем пароль который должен быть выставлен на постгре
kubectl -n sentry get secret sentry-sentry-postgresql -o yaml | awk '$1=/postgresql-password:/ {print $2}' | base64 -d; echo
# получаем ноду на которой крутится постгре и ssh-шимся на нее
kubectl -n sentry get po -o wide | awk '$1~/.*postgr.*/ {print $7}'
# получаем id контейнера и логинимся туда под рутом
docker ps | grep postgr | grep entry | awk '{print $1}'
docker exec -ti -u0 <container_id> bash
# узнаем пользователя под которым запущен постгре
grep Uid /proc/1/task/1/status
# разрешаем логиниться из-под локалхоста
sed -ibak 's/^\([^#]*\)md5/\1trust/g' /opt/bitnami/postgresql/conf/
# добавляем пользователя в систему и переходим в него
useradd postgres -u 1001
su postgres
# выставляем переменные окружения и релоадим сервис
export PGDATA=/bitnami/postgresql/data
/opt/bitnami/postgresql/bin/pg_ctl reload
# логинимся в postgres и выставляем пароль
psql -U postgres
ALTER USER postgres WITH PASSWORD 'XXX';
возвращаем назад изменения или перестартуем контейнер.
#рукиизжопы #костыли #postgresql #docker #sentry #kubernetes
полезная статья-шпаргалка по перегенерации сертификатов в k8s кластере
https://habr.com/ru/company/southbridge/blog/465733/
#kubernetes
https://habr.com/ru/company/southbridge/blog/465733/
#kubernetes
Хабр
Что делать, если протухли сертификаты и кластер превратился в тыкву?
Если в ответ на команду kubectl get pod вы получаете: Unable to connect to the server: x509: certificate has expired or is not yet valid то, скорее всего, прошел год, у сертификатов вашего...
kubeadm и интернетики
Во время своей работы эта утилита в самом начале лезет в интернеты чтобы скачать файл с версиями stable-1.txt. Если у вас на сервере нет прямого выхода в интернеты это приводит к 2-м вещам: долго выполняется и срет мусором в выхлоп команды. в качестве решения можно применить либо явное указание версии
а ClusterConfiguration объявляется вот так:
соответственно если мы установим KubernetesVersion в нужное значение, то избежим похода за ним на сайт. поместим нужное значение в конфиг, например
#kubernetes
Во время своей работы эта утилита в самом начале лезет в интернеты чтобы скачать файл с версиями stable-1.txt. Если у вас на сервере нет прямого выхода в интернеты это приводит к 2-м вещам: долго выполняется и срет мусором в выхлоп команды. в качестве решения можно применить либо явное указание версии
--kubernetes-version
но это сработает не для всех команд kubeadm. по краней мере для kubeadm token create
- нет. Исходники гласят следущее:func RunCreateToken(....) error {
// ClusterConfiguration is needed just for the call to LoadOrDefaultInitConfiguration
clusterCfg := &kubeadmapiv1beta2.ClusterConfiguration{
// KubernetesVersion is not used, but we set this explicitly to avoid
// the lookup of the version from the internet when executing LoadOrDefaultInitConfiguration
KubernetesVersion: kubeadmconstants.CurrentKubernetesVersion.String(),
}
а ClusterConfiguration объявляется вот так:
func SetDefaults_ClusterConfiguration(obj *ClusterConfiguration) {
if obj.KubernetesVersion == "" {
obj.KubernetesVersion = DefaultKubernetesVersion
}
соответственно если мы установим KubernetesVersion в нужное значение, то избежим похода за ним на сайт. поместим нужное значение в конфиг, например
kubernetesVersion: v1.16.6
и запустим: kubeadm token create --config /etc/kubernetes/kubeadm-config.yml
. Вуаля, проблема решена.#kubernetes
Jeff Geerling, автор большого количества ролей на Ansible Galaxy, в связи с коронавирусом выложил книги Ansible for DevOps и Ansible for Kubernetes бесплатно. Можно будет скачивать и все последующие обновления.
https://www.jeffgeerling.com/blog/2020/you-can-get-my-devops-books-free-rest-month
#ansible #kubernetes
https://www.jeffgeerling.com/blog/2020/you-can-get-my-devops-books-free-rest-month
#ansible #kubernetes
тут один коллега притащил. почитать чтоли на досуге..
att&ck матрица для кубера, занятно https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/
#kubernetes #security
att&ck матрица для кубера, занятно https://www.microsoft.com/security/blog/2020/04/02/attack-matrix-kubernetes/
#kubernetes #security
Microsoft News
Threat matrix for Kubernetes
While Kubernetes has many advantages, it also brings new security challenges.
Немного полезных команд, которые я узнал за сегодня
для 3 хелма бекенд в котором по-умолчани хранятся данные о релизе - это секрет. этой командой их можно все найти:
Print the supported API resources on the server:
#helm3 #kubernetes
для 3 хелма бекенд в котором по-умолчани хранятся данные о релизе - это секрет. этой командой их можно все найти:
kubectl get secret --all-namespaces -l "owner=helm"
Print the supported API resources on the server:
kubectl api-resources
#helm3 #kubernetes
AWS Cloud Week: опыт Mail.ru, JetBrains, Bitrix24, SoftServe, Kupibilet и Ciklum
https://go.aws/2AMw46F
#kubernetes #aws
https://go.aws/2AMw46F
#kubernetes #aws
Forwarded from Вадим Исаканов
Запись Kubernetes Meetup здесь: https://www.youtube.com/watch?v=Zelu2rFplwU&feature=emb_title
Все доклады: https://uwdc.timepad.ru/event/1322441/
#uwdc #sysadminka #kubernetes #youtube #live
Все доклады: https://uwdc.timepad.ru/event/1322441/
#uwdc #sysadminka #kubernetes #youtube #live
YouTube
Kubernetes Meetup от команды UWDC & #Sysadminka
https://uwdc.timepad.ru/event/1322441/
UWDC совместно с #Sysadminka проводит Kubernetes Meetup
3 июня (среда) в 19.00 - 21.30 по Екатеринбургу (17.00 - 19.30 по Москве). Трансляция пройдет на Youtube, общение и вопросы спикерам в телеграм-чате https://t.me/sysadminka…
UWDC совместно с #Sysadminka проводит Kubernetes Meetup
3 июня (среда) в 19.00 - 21.30 по Екатеринбургу (17.00 - 19.30 по Москве). Трансляция пройдет на Youtube, общение и вопросы спикерам в телеграм-чате https://t.me/sysadminka…
Мониторим kubernetes
Часть1: The Node Metrics
Часть2: The USE Method and node_exporter Metrics
Часть3: Container Resource Metrics
Часть4: The Kubernetes API Server
Часть5: etcd metrics
Часть6: kube-state-metrics
#prometheus #kubernetes
Часть1: The Node Metrics
Часть2: The USE Method and node_exporter Metrics
Часть3: Container Resource Metrics
Часть4: The Kubernetes API Server
Часть5: etcd metrics
Часть6: kube-state-metrics
#prometheus #kubernetes
Собрал стенд для обучения работы с hashicorp vault
Разворачивается через вагрант на локальных вм. Поднимается куб кластер в котором поднимается HA версия vault с бекендом на HA etcd.
НА - это не на, а аббревиатура. написано большими буквами потому что я не помню как пишется high availabilпыр-пыр-пыр. etcd используется вместо консула потому что почему бы и нет. разница в бэкенде не существенна при обучении работы с vault. (ну на самом деле, потому что консул в кубе можно развернуть только один кластер, а это значит что мы отдаем его только под секреты - ведь не шарить же его еще с кем-то если мы там храним секреты, а в данном случае кажется избыточным поднимать консул, ведь если у вас будет 20 нод, вы получите 20 реплик консула (так написан чарт), а у etcd по-прежнему останется 3. )
В данном репозитории ТОЛЬКО сам стенд. материалы для обучения продаются, как говорится, отдельно =)
https://github.com/bykvaadm/vault-on-kubernetes-stand
#virtualbox
#vagrant
#ansible
#kubernetes
#helm
#docker
#etcd
#ingress
#hashicorp
#vault
#обучение
З.Ы. поделились аналогичным стендом, на компоузах и с консулом. https://github.com/temalovepizza/vaultstuff
Разворачивается через вагрант на локальных вм. Поднимается куб кластер в котором поднимается HA версия vault с бекендом на HA etcd.
НА - это не на, а аббревиатура. написано большими буквами потому что я не помню как пишется high availabilпыр-пыр-пыр. etcd используется вместо консула потому что почему бы и нет. разница в бэкенде не существенна при обучении работы с vault. (ну на самом деле, потому что консул в кубе можно развернуть только один кластер, а это значит что мы отдаем его только под секреты - ведь не шарить же его еще с кем-то если мы там храним секреты, а в данном случае кажется избыточным поднимать консул, ведь если у вас будет 20 нод, вы получите 20 реплик консула (так написан чарт), а у etcd по-прежнему останется 3. )
В данном репозитории ТОЛЬКО сам стенд. материалы для обучения продаются, как говорится, отдельно =)
https://github.com/bykvaadm/vault-on-kubernetes-stand
#virtualbox
#vagrant
#ansible
#kubernetes
#helm
#docker
#etcd
#ingress
#hashicorp
#vault
#обучение
З.Ы. поделились аналогичным стендом, на компоузах и с консулом. https://github.com/temalovepizza/vaultstuff
GitHub
GitHub - bykvaadm/vault-on-kubernetes-stand
Contribute to bykvaadm/vault-on-kubernetes-stand development by creating an account on GitHub.
Подключаемся к jmx порту в контейнер в kubernetes
Для того чтобы это сделать нужно следующее:
1) прописать параметры:
открываем visualvm, ставим tools->plugins плагин visualvm-mbeans, перезапускаем, создаем remote connection к 127.0.0.1:5000, далее можем смотреть текущее состояние жавапроцесса и смотреть какие метрики далее получаются из вкладки mbeans.
ИЛИ
#monitoring
#java
#kubernetes
Для того чтобы это сделать нужно следующее:
1) прописать параметры:
-Dcom.sun.management.jmxremote2) пробросить порт:
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.port=5000
-Dcom.sun.management.jmxremote.rmi.port=5000
-Djava.rmi.server.hostname=127.0.0.1
kubectl port-forward pod/XXX 5000
3) подключиться консолью https://visualvm.github.io (требует jdk)открываем visualvm, ставим tools->plugins плагин visualvm-mbeans, перезапускаем, создаем remote connection к 127.0.0.1:5000, далее можем смотреть текущее состояние жавапроцесса и смотреть какие метрики далее получаются из вкладки mbeans.
ИЛИ
jconsole 127.0.0.1:5000
- у меня соединялось, выводило информацию и мгновенно дисконнект. пользоваться нормально не удалось.#monitoring
#java
#kubernetes
Админим с Буквой
Собираем helm-чарт в gitlab-ci и пушим в docker registry Используем экспериментальную фичу с oci-registry в которую научился хелм. Это значит что мы можем чарты теперь просто пушить рядом с контейнерами докера с таким же именованием и тегированием. deploy_helm:…
В догонку к CI о сборке чарта, CI для деплоя это чарта
в этом деплое помимо докер конфига требуется еще сделать кубконфиг, в который поместить токен админа неймспейса (1 ci = 1 app = 1 admin = 1 ns). Здесь часть сниппета, остальное что пропущено абсолютно симметрично предыдущему посту.
```
#helm
#gitlab
#kubernetes
в этом деплое помимо докер конфига требуется еще сделать кубконфиг, в который поместить токен админа неймспейса (1 ci = 1 app = 1 admin = 1 ns). Здесь часть сниппета, остальное что пропущено абсолютно симметрично предыдущему посту.
```
script:```
- chmod 400 $DOCKERCONFIG
- chmod 400 $KUBECONFIG
- mkdir registry
- alias helm='docker run -v ${KUBECONFIG}:/root/.kube/config -v $(pwd)/regisry:/root/.cache/helm/registry -v $(pwd):/apps -v ${DOCKERCONFIG}:/root/.docker/config.json -e DOCKER_CONFIG="/root/.docker" -e HELM_REGISTRY_CONFIG="/root/.docker/config.json" -e HELM_EXPERIMENTAL_OCI=1 alpine/helm'
- helm chart pull company.com/helm/charts/debezium:$chart_version
- helm chart export rcompany.com/helm/charts/debezium:$chart_version
- helm upgrade --install -f .......
#helm
#gitlab
#kubernetes
Debezium helm chart
Мы с командой Ситимобил написали helm chart для разворачивания debezium в k8s. К сожалению корпоративного репозитория у нас нет, поэтому выкладываю так (по согласованию с руководством, естественно).
Чарт умеет разворачивать дебезиум, на запуске создавать или обновлять коннектор, дополняет апстримовый контейнер прометеус-метриками, а также создаст все нужные очереди в kafka.
Обратите внимание, в чарте используется подход 1 чарт = 1 коннектор, т.к. для высоконагруженных баз объединение конфигов играет злую шутку и может привести к долгому даунтайму. Приятного использования!
https://github.com/bykvaadm/debezium-helm-chart
З.ы. Дашборд для метрик выложим попозже
#debezium
#helm
#kafka
#mysql
#kubernetes
Мы с командой Ситимобил написали helm chart для разворачивания debezium в k8s. К сожалению корпоративного репозитория у нас нет, поэтому выкладываю так (по согласованию с руководством, естественно).
Чарт умеет разворачивать дебезиум, на запуске создавать или обновлять коннектор, дополняет апстримовый контейнер прометеус-метриками, а также создаст все нужные очереди в kafka.
Обратите внимание, в чарте используется подход 1 чарт = 1 коннектор, т.к. для высоконагруженных баз объединение конфигов играет злую шутку и может привести к долгому даунтайму. Приятного использования!
https://github.com/bykvaadm/debezium-helm-chart
З.ы. Дашборд для метрик выложим попозже
#debezium
#helm
#kafka
#mysql
#kubernetes
GitHub
GitHub - bykvaadm/debezium-helm-chart
Contribute to bykvaadm/debezium-helm-chart development by creating an account on GitHub.