System administration
Server Administration
DevOps
Kubernetes
Comments 15
+1

Не пробовали использовать kubespray?
По сути это набор ansible скриптов, которые разворачивают production-ready cluster под различные провайдеры (openstack, aws, gcloud) в том числе для bare metal. Поддерживает множество сетей (flannel, calico, weave и тд) и вообще там куча настроек.

+1
Не пробовал, но смотрел. Это upgrade вот этого плейбука, который указан в используемых материалах. Они перешли на использование kubeadm. У меня в проектах есть аналогичный, но менее универсальный плейбук.
У меня двойственное впечатление от этого: с одной стороны — быстро и без заморочек можно поднять рабочий кластер, с другой — пропадает часть гибкости. Пример из жизни: при перезапуске network.service дохнет сетевой оверлэй. Чтобы восстановить работу, нужно последовательно перезапустить оверлэй, затем докер. И когда оверлэй сам сидит в контейнере (в случае с kubeadm), получается не очень удобно.
0
Конкретно в случае с flannel (как другие оверлэи себя ведут, не в курсе). При рестарте сети, после остановки, flannel теряет default gateway которым является ip адрес машины, на которой запущена flannel. При этом поды продолжают работать, а вот сервисы перестают отвечать. Описание проблемы нашел на stackoverflow, ссылка, к сожалению, не сохранилась.
0
Нет, это другая проблема.
Я бы не сказал даже что это проблема (про мой случай), скорее неправильная эксплуатация. Если перезапустил сеть, перезапусти и оверлэй, который работает поверх сети.
0
почему не calico? там «более» динамический роутинг. :)
«no overlay, no tunnelling, no VRF tables» ©
+2
Правим init-скрипт
/usr/lib/systemd/system/etcd.service

Не правильно так делать.
Нужно либо свой конфиг .service создать в /etc/systemd/system/
Либо переопределить системный, в директории /etc/systemd/system/SERVICENAME.service.d/

Да и docker-ce 17.x давно вышел, почему 1.12-ый используете?

А с новой версией системы прав для dashboard-а случаем не разбирались?
0
Не правильно так делать.
Нужно либо свой конфиг .service создать в /etc/systemd/system/
Либо переопределить системный, в директории /etc/systemd/system/SERVICENAME.service.d/

Спасибо, исправил.
Да и docker-ce 17.x давно вышел, почему 1.12-ый используете?

Начиная с 1.8 появилась поддержка докера >1.12. Пока не тестировали.
А с новой версией системы прав для dashboard-а случаем не разбирались?

Используется параметр apiserver-а "--token-auth-file". В этом файле можно добавить токены для пользователей. Либо использовать токены сервисных аккаунтов из secrets (но это такое себе). Сильно в это не вникал так как dashboard практически не используем (закрыт ingress-ом с авторизацией, и доступен только паре человек), висит так «чтобы было».
0
А с новой версией системы прав для dashboard-а случаем не разбирались?

Разобрался. Вообще идея хорошая, но создать рутовый акк надо было, чтоб все как по привычке.


% kubectl create serviceaccount -n kube-system root
% kubectl create clusterrolebinding root --clusterrole=cluster-admin --serviceaccount=kube-system:root

Потом берем токен из kube-system/root-token-xxxx и куда-то надежно прячем.

+2
Вы конечно молодец, что это всё написали. Но честно сказать ручная установка для к8s это как-то не очень. Есть к примеру kubeadm или как выше советовали kubesprey.
Я когда месяцев 4-6 назад устанавливал k8s, мне kubeadm не подошел, потому что он не мог делать установку multimaster'a.
Но зато хорошо подошел kubesprey.

Вы вот такую простыню только для двух серверов написали, а если их больше, хотя бы пять? Я бы офигел столько писать. Или к примеру вы хотите ещё добавить сервера, а потом попозже ещё и обновится?
Я буквально три дня назад через kubesprey сделал обновление с 1.7.4 на 1.8.2 прошло практически без проблем и очень быстро. Кластер у меня состоит из трёх мастеров и 12 миньонов.

Такой парадокс получается, создаём систему для автоматизации, но её делаем при этом вручную. ))
+2
Полностью с Вами согласен. Цель этой статьи не призыв к ручной работе, а попытка показать из чего k8s состоит и какие сертификаты куда идут при ssl инсталяции. Возможно Вы согласитесь, сложно написать инструкцию по продукту, просто пихнув ссылку на проект в гитхабе с набором ансибл ролей и/или плейбуков.
PS. Этот туториал был составлен с уже написанных мною ролей ансибл. Выкладывать в паблик не вижу смысла, так как разрабатывалось для конкретной инфраструктуры. Ручной труд — зло.
PS2. Kubespray использует все ту же kubeadm для установки k8s.
0
172.96.0.0/12

Это разве не публичная подсеть? Почему не использовать 172.16.0.0/12 или что-нибудь в 10.0.0.0/8?

Only those users with full accounts are able to leave comments. , please.