Роман
Спрей тоже через ансибль работает. Генерит для него плейбуки.
Anonymous
да
Anonymous
если ввожу ansible в консоль, то получаю список команд и ERROR! Missing target hosts
Anonymous
то есть мне надо туда сначала хосты указать?
Роман
Это нормально.
Maksim
а что куберспрей это надстройка над ансиблем?
Maksim
А зачем? -)
Роман
то есть мне надо туда сначала хосты указать?
Нет. Покажи ~/.kubespray/inventory/inventory.cfg
Anonymous
No such file or directory
Роман
А зачем? -)
Кем-то сделано и поддерживается. Удобно. Поправил конфиги под себя и развернул кластер.
Maksim
Ну я то же самое сделал с Чистым ансиблем)
Maksim
переписал плейбуки с версии 1.4 на 1.7 изменил сервисы на докеризованные в hyperkube и живу)
Роман
No such file or directory
Надо найти файл этот. Посмотреть, где prepare его создаёт. Папка .kubespray есть?
Anonymous
>ls ~/.kubespray/inventory group_vars inventory.example local-tests.cfg
Роман
>ls ~/.kubespray/inventory group_vars inventory.example local-tests.cfg
Значит файл с хостами не создался.
Anonymous
а как его создать?🤔 $kubespray prepare —nodes 192.1.1.1 192.1.1.1 192.1.1.1 —nodes 2 —masters 1 вот так правильно же я использую для деплоя на baremetal?
Anonymous
.kubespray.yml я если что ручками через wget дефолтный скачал
Роман
пара дней
Согласен. Самому написать - удобнее. Там в этих шаблонах чёрт ногу сломит. Но, когда я деплоил куб, стояла задача "Чтобы через полчаса кластер уже работал!")). В целом мне понравилось. В будущем свой напишу.
Maksim
Они просто написаны под Все известные системы
Maksim
ubuntu 14< и 14> CoreOs AtomicHost CentOS и даже комплиции из гита)
Maksim
то есть 70% мусора)
Роман
а как его создать?🤔 $kubespray prepare —nodes 192.1.1.1 192.1.1.1 192.1.1.1 —nodes 2 —masters 1 вот так правильно же я использую для деплоя на baremetal?
kubespray prepare —nodes node1[ansible_ssh_host=10.99.21.1] node2[ansible_ssh_host=10.99.21.2] node3[ansible_ssh_host=10.99.21.3] [--etcds N+] [--masters N+]
Роман
Это одна строка.
Роман
@Leorent а у тебя какая ос на серверах?
Maksim
Атомик
Maksim
Rhel Atomic Host
Maksim
Эта красная банда всё пытается мне Опеншифт всучить)
Anonymous
ну блин, опять запустил, написал типа clonning и давай дальше пустыми строками вайпать консоль, это нормально вообще?
Роман
inventory.cfg покажи
Роман
И, кстати, я kubespray ставил: pip2 install kubespray
Anonymous
inventory.cfg покажи
а я его должен сам до запуска составить?
Anonymous
блин я думал там one-liner, в котором всё что нужно
Anonymous
Generate inventory for a baremetal cluster
Anonymous
вот тут же надо генерить его, а не составлять, то есть я не могу inventory.cfg показать, потому что у меня он не генерится
bebebe
пушо там расставляются группы и подгруппы
bebebe
на которые ориентируется ansible
Anonymous
kubespray prepare —nodes node1[ansible_ssh_host=${MASTER}] node2[ansible_ssh_host=${NODE1}] node3[ansible_ssh_host=${NODE2}] —nodes 2 —masters 1 вот так я правильно же всё делаю?
bebebe
хм
bebebe
секунду
Anonymous
в переменных айпишники указаны
bebebe
тебе нужно запустить contrib/inventory_builder/inventory.py следующим образом:
Роман
kubespray prepare —nodes node1[ansible_ssh_host=${MASTER}] node2[ansible_ssh_host=${NODE1}] node3[ansible_ssh_host=${NODE2}] —nodes 2 —masters 1 вот так я правильно же всё делаю?
Нет. В —masters надо тоже указать в таком же формате, как и для —nodes. И —etcds аналогично.
Роман
—nodes 2 —masters 1 - не правильно и не нужно для baremetal
bebebe
export CONFIG_FILE=/tmp/kubespray_inventory.cfg python contrib/inventory_builder/inventory.py IP1 IP2 IP3 IP4после чего в /tmp/kubespray_inventory.cfg сгенерируется inventory против которого надо запускать плейбуку
bebebe
руками инветори не очень желательно делать
bebebe
этот inventory.py типа LCM'а типа можно потом добавить еще одну ноду, и он сам разберется что и как по бест-практис туда нужно совать
Роман
kubespray prepare —nodes node1[ansible_ssh_host=${MASTER}] node2[ansible_ssh_host=${NODE1}] node3[ansible_ssh_host=${NODE2}] —nodes 2 —masters 1 вот так я правильно же всё делаю?
kubespray prepare —nodes node1[ansible_ssh_host=${MASTER}] node2[ansible_ssh_host=${NODE1}] node3[ansible_ssh_host=${NODE2}] —masters node1[ansible_ssh_host=${MASTER}] —etcds node1[ansible_ssh_host=${MASTER}] node2[ansible_ssh_host=${NODE1}] node3[ansible_ssh_host=${NODE2}]
Anonymous
а можно мне etcd и master на одну ноду указать? 🤔🙏
Роман
а можно мне etcd и master на одну ноду указать? 🤔🙏
Можно. Он ругнётся на то, что для кластера etcd хочет 3 ноды.
Роман
Но всё равно поставит.
Anonymous
хех, спасибо большое! c:
Роман
Вот, хочу свой ингресс-контроллер сделать. В частности хочу свой шаблон запилить с новыми переменными. Не пойму никак, как их обрабатывать. Хотел по аналогии сделать, но аналогии нет). Не могу в коде найти. Например, хотел найти, как это: ingress.kubernetes.io/configuration-snippet превращается в это: {{ $location.ConfigurationSnippet }} Может есть литература какая-то?
Роман
Anonymous
у меня есть pdfка всей книги, можешь посмотреть, если найдешь то что нужно, то заплатишь за нее автору, если нет, то удали потом, а то так нечестно x)
G72K
а кто-нибудь может объяснить зачем сервисам типа nodePort вообще нужен параметр clusterIP?
потому что оно реализовано как надстройка над ClusterIP. Трафик приходящий в NodePort перенаправляется в ClusterIP, который уже сам раскидывает под подам.
Maksim
А сам ClusterIP адрес где-то физически висит или это тупо правила в iptables?
Если не вешать то не висит. В доке написано, что CIDR для ClusterIP обязан быть не маршрутизируемым
Maksim
Но ни кто не запрещает тебе повесить его на интерфейс какого либо сервера)))
Maksim
и сделать маршрутизируемым) Тогда можно избваться от NodePort и Ing
𝚔𝚟𝚊𝚙𝚜
так-так-так, обо всем по порядку, пожалуйста, с чем может быть связанно то что я не могу попинговать сервис по ClusterIP
𝚔𝚟𝚊𝚙𝚜
ни с ноды ни из пода
Maksim
либо задать реальну сеть L2 в качестве ClusterIP и маршрутизацию к ней)
Maksim
ну потому что изначально ClusterIP это l3 DNAT по TCP/UDP
Maksim
там нету icmp как класса)
𝚔𝚟𝚊𝚙𝚜
то есть так и должно быть
Maksim
да
Maksim
ты можешь телнетнуться на порт сервиса
Maksim
и что-то получить
Maksim
или сделать wget/curl если это http
𝚔𝚟𝚊𝚙𝚜
а почему тогда я поды с ноды могу попинговать?