@kubernetes_ru

Страница 285 из 958
Jan
02.10.2017
12:06:54
у апи сервера есть ключик —authirization=rbac удали его
можно ли указать его при kubeadm init?

Maksim
02.10.2017
12:07:09
а вот не знаю) я этой тулзой не пользуюсь

Jan
02.10.2017
12:07:31
спасибо, попробую без RBAC)

Роман
02.10.2017
14:16:04
Есть такая опция hostNetwork: true. Как-то можно указать сетевой интерфейс, через который будет ходить трафик?

Google
Anton
02.10.2017
14:17:36
он же сделает по сути тоже самое что и docker run -net host. тоесть процесс будет на хостовой сетевой порты открывать

Anton
02.10.2017
14:19:17
я думаю на этом уровне докеру пофиг уже

в приложении может это можно сделать или в entrypoint, но хз как вы будете обрабатывать ситуацию когда под переедет на другой хост, где нужных сетевух не будет.

Роман
02.10.2017
14:27:15
в приложении может это можно сделать или в entrypoint, но хз как вы будете обрабатывать ситуацию когда под переедет на другой хост, где нужных сетевух не будет.
По условию задачи на сервере в любом случае присутствует вторая сетевая карта. На самом деле это только мизерная часть проблемы. По сути, я пытаюсь решить другую. В последнем релизе kubespray, они, вместо запуска calico, как докер-контейнера вне кластера, сделали Daemonset. Раньше я назначал каждому контейнеру IP и они через него ходили. А теперь в демонсете нет возможности указать разные айпи. Он пытается переменную окружения применить ко всем подам. Ну и они все (кроме одного - первого) падают с ошибкой, что такой ip уже назначен. Ума не приложу, что делать.

Anton
02.10.2017
15:10:39
я только на днях первый кластер с kubespray задеплоил и не знаю как раньше было. и вижу что вообще нифига не знаю как calico устроен и как ноды взаимодействуют между собой. поэтому я вообще не понимаю о котором ip речь идет

Let Eat
02.10.2017
15:26:25
Есть такая опция hostNetwork: true. Как-то можно указать сетевой интерфейс, через который будет ходить трафик?
внутрь: зависи от того,на какой IP забиндите. наружу: гуглить iproute2 policy routing

Роман
02.10.2017
15:27:06
Роман
02.10.2017
15:30:11
Я хочу сеть пустить по внутренней сети через свитч. Оно сейчас у меня в проде так и работает.

Arslanbekov
02.10.2017
17:59:17
Подскажите пожалуйста, кто хорошо разбирается с limits/requests (Resource Quotas) на пальцах, чем limits от requests отличается?

Google
Роман
02.10.2017
18:05:46
Ты хочешь сеть подов вывалить в vlan без оверлея?
Нет. Я хочу оверлей по vlan пустить.

Там даже не vlan, а физическая сеть между серверами.

Maksim
02.10.2017
18:19:14
Подскажите пожалуйста, кто хорошо разбирается с limits/requests (Resource Quotas) на пальцах, чем limits от requests отличается?
Реквест - минимальные рескрсы, которые шелдулер ищет на ноде для запуска пода. Лимит это максимальные ресурсы доступные поду.

Arslanbekov
02.10.2017
18:20:55
те если не будет места (по реквестам) на сервере, он выкинет ошибку? или он все таки по лимитам выкинет ошибку? не совсем ясен этот момент, несколько раз упирались в ошибку (insufficient cpu), но из доки не совсем ясно, это из-за лимитов или все таки реквестов ?

Артём
02.10.2017
18:22:30
если ресурсов будет недостаточно на всех нодах, то под будет висеть в ожидании ресурсов

это может быть видно по kubectl describe

Ihor
02.10.2017
18:27:27
FYI https://groups.google.com/forum/#!topic/kubernetes-dev/QWIzhD3JhhE

Konstantin
02.10.2017
19:32:14
В продолжение темы про requests и limits получается, что requests это чисто логическая вещь и не на что не влияет?

Алексей
02.10.2017
19:48:51
В продолжение темы про requests и limits получается, что requests это чисто логическая вещь и не на что не влияет?
Простой пример. Есть одна нода с одним процессором. Все поды запущены на ней. соответственно, вы не сможете запустить больше чем у вас есть CPU. Конечно можно выделять по 1% и запустить 100 подов, но нужно учесть, что есть ещё запущеные поды системные. У меня в google cloud выходило на базовой конфигурации с 1 процессором ~60% CPU занято под системные поды. посмотреть текущее распределение на ноде можно kubectl describe node-1 В конце есть очень наглядное представление о том сколько какой под запросил и какой лимит. И общее состояние по ноде.

Konstantin
02.10.2017
20:01:28
Спасибо за комментарий. Где посмотреть и как установить это все понятно. Переформулирую вопрос, зачем указывать requests?

Paul
02.10.2017
20:07:30
Спасибо за комментарий. Где посмотреть и как установить это все понятно. Переформулирую вопрос, зачем указывать requests?
на тот случай, если вы хотите гарантировать минимум ресурсов для своего контейнера (контейнер критичный). Если минимум не гарантировать - kubelet будет контейнеры в ноду трамбовать, пока обратно не полезет

Paul
02.10.2017
20:20:42
лимитами - нет. а вот ресурсами - не влезет

лимиты на 10 ЦПУ означают, что более 10 ЦПУ контейнеры гарантированно не получат

Konstantin
02.10.2017
20:21:47
Т.е. получается лимит ограничивает только под, а реквест ограничает под внутри ноды?

Paul
02.10.2017
20:27:00
нет

лимит ограничивает под сверху

а реквест гарантирует ресурсы снизу

Konstantin
02.10.2017
20:32:54
Да, но при этом при лимит может быть оверселинг, а при реквесте нет. И когда добавляется под на ноду, реквест ресурсов по каким параметрам проиходит, по реквестам? лимитам?

Google
Артём
02.10.2017
20:58:44
а еще это необходимо, чтобы настроить горизонтальное масшабирование)

Andrey
03.10.2017
05:32:19
Да, но при этом при лимит может быть оверселинг, а при реквесте нет. И когда добавляется под на ноду, реквест ресурсов по каким параметрам проиходит, по реквестам? лимитам?
реквесты учитываются только при шедулинге: то есть в момент выбора на какую ноду запихать под - больше они никак не влияют на поды лимиты, наоборот, никак не влияют на то на какую ноду положить под, но учитываются в том случае когда на ноде заканчивается память и кубер выбирает кого казнить чтоб освободить место (ну плюс основная своя задача - лимитирование внутри контейнера)

по памяти лучше всего делать request=limit чтобы не возникало ситуаций "кубер думает что места полно и шедулит под на эту ноду, а по факту там oom-killer лютует уже вовсю" по процессору в принципе некритично, максимум что будет это сервисы будут тормозить что можно обнаружить кучей инструментов если сделать requests=limits (для cpu и mem) то под получает более приоритетный статус и в случае переполнения памяти его казнят последним по сравнению с другими плебеями, но в 1.8 это делать необязательно так как там добавили отдельную рукоятку для выставления приоритетов

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

а, еще из того что в доке нет: все контейнеры написаны на разных языках и разными людьми, и очень мало из них умеют ограничивать себя выделеной памятью (из-за докеровской архитектуры стандартными средствами в контейнере видна общая память а не та которая выделена докеру) так что, кроме выставления лимитов, надо обязательно искать пимпочку для сервиса которая ограничивает жор памяти например, для монгодб есдинственный вариант - подкрутить кеш wiredtiger в конфиге, для приложений написаных на java обязательно задание мемори хипа через флаги и тп а раббитэмкью например корректно сам определеяет и ему норм в общем, если этого не сделать то рано или поздно приложуха превысит mem limits и сам же докер ее пристрелит

kvaps
03.10.2017
07:51:27
https://habrahabr.ru/company/flant/blog/339120/

Maksim
03.10.2017
08:03:05
А он разве не на кубере? Пойму он с самого начала на кубере.

kvaps
03.10.2017
08:16:24
А он разве не на кубере? Пойму он с самого начала на кубере.
Не, он поддерживает деплой кубера как отдельное окружение, но все общение с ним только напрямую через кубер, минуя ранчер.

Maksim
03.10.2017
08:16:49
Ну это всё равно что сказать что ОпенШифт теперь на кубере.....

kvaps
03.10.2017
08:17:26
как и swarm, он может его задеплоить, но управлялка перенаправляет на portainer

а в 2.0 будет кошерно, все контейнеры будут запускаться прямо в кубере

другими словами, вы получите отличный гуй для управления кластером и запущенными контейнерами, с лдапом и деплоем приложений из репо прямо в кубер всего за пару кликов

это должно быть будет бомба

А кто-нибудь уже попробовал IPVS из 1.8? https://github.com/kubernetes/kubernetes/tree/master/pkg/proxy/ipvs

оно требует внешний балансировщик?

не совсем понимаю как он в кубере работает

Ivan
03.10.2017
09:34:54
Всем привет! Помогите пожалуйста понять))) я не могу достучаться до сервиса, (работающего на одной ноде) с другой ноды. как в теории это должно происходить? на физических нодах есть интерфейсы докера (172.17.0.1) и фланэла (10.4.х.х) а сетки 10.3.х.х (которая используется для сервисов) на физической ноде не светится и весь траффик идёт на шлюз по умолчанию (и естественно уходит вникуда)

Google
Ivan
03.10.2017
09:35:41
у сервиса, соответственно, айпишник из подсетики 10.3.х.х

Vitaliy
03.10.2017
09:35:58
https://www.google.ru/search?newwindow=1&source=hp&q=kubernetes+network+plugin&oq=kubernetes+netw&gs_l=psy-ab.3.1.0i203k1l2j0l8.1000.5600.0.7700.11.10.0.0.0.0.200.1200.0j6j3.9.0....0...1.1.64.psy-ab..2.9.1100.0..46j35i39k1j0i46k1.0.ZLRtAFgumkA

Maksim
03.10.2017
09:36:03
какой ip у контейнера?

дай kubectl get po

Ivan
03.10.2017
09:37:17
дай kubectl get po
pxe webdev$ kubectl -n intranet get po NAME READY STATUS RESTARTS AGE intranet-2163743981-3bm8p 1/1 Running 0 2h pxe webdev$ kubectl -n intranet get svc NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE intranet-svc 10.3.133.127 <nodes> 80:7180/TCP,443:7143/TCP 2h

Maksim
03.10.2017
09:37:34
мм

kubectl get po -o wide

Ivan
03.10.2017
09:38:13
kubectl get po -o wide
pxe webdev$ kubectl -n intranet get po -o wide NAME READY STATUS RESTARTS AGE IP NODE intranet-2163743981-3bm8p 1/1 Running 0 2h 10.4.31.7 10.1.29.11

Vitaliy
03.10.2017
09:38:17
ПОдрабатываешь релкомй в гугле? Бросай это он не фига не платит....
мне в удовольствие, спасибо. но обязательно посоветуюсь в след.раз

Maksim
03.10.2017
09:38:24
на физических нодах есть интерфейсы докера (172.17.0.1) и фланэла (10.4.х.х) Исходя из этого у тебя не правильно настроен overlay сеть

Maksim
03.10.2017
09:39:48
при првельно настройке docker0 должен иметь адресс 10.4.х.1

поробуй остановить докер

удалить docker0 интерфейс

(удали все контейнеры)

и только потом запустить его, что бы ядро пересоздало интерфейс

мне в удовольствие, спасибо. но обязательно посоветуюсь в след.раз
Твой ответ не в тему, там cni плагин правильно настроен, а по твоему запросу нет ни слова о хитростях работы ядра с виртуальным интрфейсами и стеями внутри докера

не понял)) можно подробнее))
По холрошем нужно остановить kubelet, удалить контейнеры и сети докера, остановить докер, удалить eth, после запустить докер и кублет

интерфейс удаляется ip link delete <>

Google
Vitaliy
03.10.2017
09:43:18
изначально было не очевидно что у человека cni настроен. я вообще не спец совсем чтобы давать советы

Ivan
03.10.2017
09:44:11
я больше скажу))) я сам не знаю, настроен ли у меня cni ))))

Maksim
03.10.2017
09:44:24
а вот сейчас и узнаем.

переконфигурируй docker0

Ivan
03.10.2017
09:49:39
у меня при заливке нод на них (по крайней мере на мастере) заливаются файлы /etc/kubernetes/cni/docker_opts_cni.env /etc/kubernetes/cni/net.d/10-flannel.conf далее в клауд-конфиге короса есть секция - name: 40-flannel.conf content: | [Unit] Requires=flanneld.service After=flanneld.service [Service] EnvironmentFile=/etc/kubernetes/cni/docker_opts_cni.env далее в секции кублета есть ключ —network-plugin=cni

ну это ладно... по 10.4 сетку я поковыряю...

а как вообще должно быть? сетка 10.3 должна присутствовать на ноде? (на физ интерфейсе)

т.е. сетка с сервисами (может у кого она с другими адресами)

Роман
03.10.2017
09:55:39
при првельно настройке docker0 должен иметь адресс 10.4.х.1
У меня docker0 имеет адрес 172.17, а интерфейс оверлейной 10.233

Maksim
03.10.2017
09:55:54
хм...

видимо ч совсем иначе делал сеть(

тогда надо смотреть firewall

Ivan
03.10.2017
09:56:28
У меня docker0 имеет адрес 172.17, а интерфейс оверлейной 10.233
а что значит оверленая сеть? это какая?

Роман
03.10.2017
09:57:17
Это слой сети, в которой поды меж собой взаимодействуют. Она объединяет докеровские сети на нодах.

Грубо говоря.

Ivan
03.10.2017
09:59:38
а, понял... это, собственно, pod_network)) в настройках задаётся две подсетки при поднятии кластера: service_network и pod_network вот у меня первая сетка это 10.3.х.х а вторая 10.4.х.х

У меня docker0 имеет адрес 172.17, а интерфейс оверлейной 10.233
а из сетки сервисов у тебя есть интерфейс на физической ноде?

Страница 285 из 958