Maxim 
    
    
        
        
        
        поэтому фронты пока отдельно
    
 
    
    Maxim 
    
    
        
        
        
        когда весь сервис упакуем в кластер, можно будет и фронты туда же
    
 
    
    Maxim 
    
    
        
        
        
        а пока приходится извращаться немношк
    
 
    
    M 
    
    
        
        
        
        А как тогда доступен куб-днс снаружи?
    
 
    
    Maxim 
    
    
        
        
        
        всмысле?
    
 
    
    Maxim 
    
    
        
        
        
        откуда "снаружи?"
    
 
    
    M 
    
    
        
        
        
        Видимо я не так прочитал первое сообщение, нгинкс не видит днс кубернетиса?
    
 
    
    Maxim 
    
    
        
        
        
        видит
    
 
    
    Maxim 
    
    
        
        
        
        я не понимаю, где проблема? ;)
    
 
    
    Maxim 
    
    
        
        
        
        kube-proxy на хосте надежно решает эту проблему посредством iptables
    
 
    
    Maxim 
    
    
        
        
        
        и так на каждом хосте
    
 
    
    Maxim 
    
    
        
        
        
        не руками, естественно
    
 
    
    Maxim 
    
    
        
        
        
        все эти правила динамически формирует kube-proxy
    
 
    
    Maxim 
    
    
        
        
        
        который запущен на всех хостах
    
 
    
    Maxim 
    
    
        
        
        
        таким образом я могу прямо на bare-metal машине использовать кластерный днс (ну и любые другие endpoint'ы)
    
 
    
    M 
    
    
        
        
        
        Я через nodeport обычно прокидывал сервисы
    
 
    
    Maxim 
    
    
        
        
        
        а зачем?
    
 
    
    Maxim 
    
    
        
        
        
        приходится прокси перенастраивать
    
 
    
    Maxim 
    
    
        
        
        
        чтобы он другой рейнж портов мог юзать
    
 
    
    M 
    
    
        
        
        
        Ну это меня и смущало
    
 
    
    M 
    
    
        
        
        
        А как у тебя описание сервиса выглядит?
    
 
    
    Maxim 
    
    
        
        
        
        https://gist.github.com/Bregor/5d27a6d0cb722d743bb7f17da132edfd
    
 
    
    Maxim 
    
    
        
        
        
        это тыптыщеконфиг
    
 
    
    Maxim 
    
    
        
        
        
        а сервисы как обычно
    
 
    
    Maxim 
    
    
        
        
        
        ща
    
 
    
    M 
    
    
        
        
        
        Я что то не понял про то как указать cluster ip на bare
    
 
    
    Maxim 
    
    
        
        
        
        а зачем?
    
 
    
    Maxim 
    
    
        
        
        
        ты же имя в сервисе пишешь
    
 
    
    Maxim 
    
    
        
        
        
        и по имени к нему и обращаешься
    
 
    
    Maxim 
    
    
        
        
        
        разрешение имени в адрес делает kube-dns
    
 
    
    M 
    
    
        
        
        
        А доступен он также на всех нодах?
    
 
    
    M 
    
    
        
        
        
        Как нодпорт?
    
 
    
    Maxim 
    
    
        
        
        
        ну на всех, где kube-proxy есть
    
 
    
    Maxim 
    
    
        
        
        
        или руками iptables настроен ;)
    
 
    
    Maxim 
    
    
        
        
        
        добавил сервис в гист: https://gist.github.com/Bregor/5d27a6d0cb722d743bb7f17da132edfd
    
 
    
    M 
    
    
        
        
        
        Ясно, видимо меня смутила фраза в доке, что cluster ip предоставляется сервис провайдером
    
 
    
    M 
    
    
        
        
        
        Спасибо за экскурс)
    
 
    
    Maxim 
    
    
        
        
        
        это когда у тебя type: LoadBalancer
    
 
    
    Maxim 
    
    
        
        
        
        и над тобой GCE или LBE
    
 
    
    Maxim 
    
    
        
        
        
        тогда айпи тебе выдает провайдер
    
 
    
    Maxim 
    
    
        
        
        
        а на bare metal тебе сам черт не брат :D
    
 
    
    M 
    
    
        
        
        
        :)
    
 
    
    Maxim 
    
    
        
        
        
        собственно адреса для сервисов выдаются аписервером
    
 
    
    Maxim 
    
    
        
        
        
        ориентируется он при этом на --service-cluster-ip-range=10.222.0.0/16
    
 
    
    Maxim 
    
    
        
        
        
        ну в смысле это у меня там 10.222.0.0/16
    
 
    
    Maxim 
    
    
        
        
        
        не помню, что там по-умолчанию
    
 
    
    M 
    
    
        
        
        
        Хм, так это дополнительный адрес? Или что это за range?
    
 
    
    Maxim 
    
    
        
        
        
        хехе
    
 
    
    Maxim 
    
    
        
        
        
        об это я бился головой дня три
    
 
    
    Maxim 
    
    
        
        
        
        (ну я там выше говорил уже, что я не очень умный)
    
 
    
    Maxim 
    
    
        
        
        
        короче
    
 
    
    Maxim 
    
    
        
        
        
        адреса для сервисов и адреса для подов - это два никак не пересекающихся множества
    
 
    
    Maxim 
    
    
        
        
        
        адреса для сервисов абсолютно не имеют никакого "физического" представления
    
 
    
    Maxim 
    
    
        
        
        
        они нигде не терминируются
    
 
    
    Maxim 
    
    
        
        
        
        и нужны только для роутинга до нижележащих ресурсов (подов)
    
 
    
    Maxim 
    
    
        
        
        
        а вот адреса подов имеют под собой некоторое "физическое" отображение
    
 
    
    Maxim 
    
    
        
        
        
        и должны кем-то выдаваться
    
 
    
    Maxim 
    
    
        
        
        
        это может быть CNI, docker-networking, etc
    
 
    
    M 
    
    
        
        
        
        А мы про адреса сервисов
    
 
    
    M 
    
    
        
        
        
        Да , про них я знаю)
    
 
    
    M 
    
    
        
        
        
        Я думал мы продолжаем тему внешних
    
 
    
    Maxim 
    
    
        
        
        
        нене
    
 
    
    M 
    
    
        
        
        
        Думаю какой там еще ренж вроде все только прояснилось)
    
 
    
    Maxim 
    
    
        
        
        
        мы про то, что внутри кластера, да
    
 
    
    M 
    
    
        
        
        
        Когда я открыл для себя флажок iptables у куб прокси все стало гораздо понятнее с кластерными и прочими айпишниками)
    
 
    
    Maxim 
    
    
        
        
        
        ммм?
    
 
    
    Maxim 
    
    
        
        
        
        оно ж по-дефолту iptables
    
 
    
    Maxim 
    
    
        
        
        
        или ты о чем?
    
 
    
    Denis 
    
    
        
        
        
        Да вроде нет как раз :)
    
 
    
    Maxim 
    
    
        
        
        
              --proxy-mode=: Which proxy mode to use: 'userspace' (older) or 'iptables' (faster). If blank, look at the Node object on the Kubernetes API and respect the 'net.experimental.kubernetes.io/proxy-mode' annotation if provided.  Otherwise use the best-available proxy (currently iptables).  If the iptables proxy is selected, regardless of how, but the system's kernel or iptables versions are insufficient, this always falls back to the userspace proxy.
    
 
    
    Maxim 
    
    
        
        
        
        а, хотя у меня явно указано, да
    
 
    
    Maxim 
    
    
        
        
        
        может по-дефолту и не оно
    
 
    
    Maxim 
    
    
        
        
        
            command:
            - /hyperkube
            - proxy
            - --proxy-mode=iptables
            - --kubeconfig=/etc/kubernetes/kubeconfig.yaml
    
 
    
    Maxim 
    
    
        
        
        
        вот так запускаю
    
 
    
    Denis 
    
    
        
        
        
        Вот вот :)
    
 
    
    Maxim 
    
    
        
        
        
        ок-ок, был неправ
    
 
    
    M 
    
    
        
        
        
        Сейчас уже по дефолту иптаблес, я когда ставил был по дефолту юзерспейс
    
 
    
    Denis 
    
    
        
        
        
        Приём) Есть кто бодрствующий?
    
 
    
    Denis 
    
    
        
        
        
        Есть вопрос) Допустим, имеем такой расклад:
        
        kubectl get svc --namespace kube-system
        NAME                    CLUSTER-IP     EXTERNAL-IP   PORT(S)             AGE
        elasticsearch-logging   10.100.0.80    <none>        9200/TCP            1d
        heapster                10.100.0.10    <none>        80/TCP              4d
        kibana-logging          10.100.0.146   <none>        5601/TCP            1d
        kube-dns                10.100.0.100   <none>        53/UDP,53/TCP       13d
        kubernetes-dashboard    10.100.0.107   <none>        80/TCP              6d
        monitoring-grafana      10.100.0.77    <none>        80/TCP              4d
        monitoring-influxdb     10.100.0.188   <none>        8083/TCP,8086/TCP   4d
        
        Интересует такой момент - если у нас во время нагрузки одной ноды какой-то из этих подов будет перенесён на другую ноду - IP адрес сохранится или тоже поменяется?