Sorry to answer to this thread so late :p

due to the fact that this will be changed when the pod is recreated!
>

Alexis, as i mentionned earlier the idea is to detect these changes by
polling in a regular basis the API and change the backend configuration
automatically.
Using the DNS (addon) is not what i would like to achieve because it still
uses kubernetes internal loadbalancing system.
Furthermore it seems to me easier to use the NodePort,
<http://kubernetes.io/docs/user-guide/services/#type-nodeport>This is what
i use today.

Nginx Plus has now such feature :

> With APIs – This method uses the NGINX Plus on-the-fly reconfiguration API
> <https://www.nginx.com/resources/admin-guide/load-balancer/#upstream_conf>
> to add and remove entries for Kubernetes pods in the NGINX Plus
> configuration, and the Kubernetes API to retrieve the IP addresses of the
> pods. This method requires us to write some code, and we won’t discuss it
> in depth here. For details, watch Kelsey Hightower’s webinar, Bringing
> Kubernetes to the Edge with NGINX Plus
> <https://www.nginx.com/resources/webinars/bringing-kubernetes-to-the-edge-with-nginx-plus/>,
> in which he explores the APIs and creates an application that utilizes them.
>

Please let me know if you are considering this feature in the future.
Alternatively perhaps you can guide me to propose a plugin. Actually python
is the language i used to play with but maybe that's not possible.

Regards,
Smana

2016-02-25 18:29 GMT+01:00 Aleksandar Lazic <[email protected]>:

> Hi.
>
> Am 25-02-2016 16:15, schrieb Smain Kahlouch:
>
>> Hi !
>>
>> Sorry to bother you again with this question, but still i think it would
>> be a great feature to loadbalance directly to pods from haproxy :)
>> Is there any news on the roadmap about that ?
>>
>
> How about DNS as mentioned below?
>
>
> https://github.com/kubernetes/kubernetes/blob/v1.0.6/cluster/addons/dns/README.md
> http://cbonte.github.io/haproxy-dconv/configuration-1.6.html#5.3
>
> ### oc rsh -c ng-socklog nginx-test-2-6em5w
> cat /etc/resolv.conf
> nameserver 172.30.0.1
> nameserver 172.31.31.227
> search nginx-test.svc.cluster.local svc.cluster.local cluster.local
> options ndots:5
>
> ping docker-registry.default.svc.cluster.local
> ####
>
> ####
> oc describe svc docker-registry -n default
> Name:                   docker-registry
> Namespace:              default
> Labels:                 docker-registry=default
> Selector:               docker-registry=default
> Type:                   ClusterIP
> IP:                     172.30.38.182
> Port:                   5000-tcp        5000/TCP
> Endpoints:              10.1.5.52:5000
> Session Affinity:       None
> No events.
> ####
>
> Another option is that you startup script adds the A record into skydns
>
> https://github.com/skynetservices/skydns
>
> But I don't see benefit to conncect directly to the endpoint, due to the
> fact that this will be changed when the pod is recreated!
>
> BR Aleks
>
> Regards,
>> Smana
>>
>> 2015-09-22 20:21 GMT+02:00 Joseph Lynch <[email protected]>:
>>
>> Disclaimer: I help maintain SmartStack and this is a shameless plug
>>>
>>> You can also achieve a fast and reliable dynamic backend system by
>>> using something off the shelf like airbnb/Yelp SmartStack
>>> (http://nerds.airbnb.com/smartstack-service-discovery-cloud/).
>>>
>>> Basically there is nerve that runs on every machine healthchecking
>>> services, and once they pass healthchecks they get registered in a
>>> centralized registration system which is pluggable (zookeeper is the
>>> default but DNS is another option, and we're working on DNS SRV
>>> support). Then there is synapse which runs on every client machine and
>>> handles re-configuring HAProxy for you automatically, handling details
>>> like doing socket updates vs reloading HAProxy correctly. To make this
>>> truly reliable on some systems you have to do some tricks to
>>> gracefully reload HAProxy for picking up new backends; search for zero
>>> downtime haproxy reloads to see how we solved it, but there are lots
>>> of solutions.
>>>
>>> We use this stack at Yelp to achieve the same kind of dynamic load
>>> balancing you're talking about except instead of kubernetes we use
>>> mesos and marathon. The one real trick here is to use a link local IP
>>> address and run the HAProxy/Synapse instances on the machines
>>> themselves but have containers talk over the link local IP address. I
>>> haven't tried it with kubernetes but given my understanding you'd end
>>> up with the same problem.
>>>
>>> We plan to automatically support whichever DNS or stats socket based
>>> solution the HAProxy devs go with for dynamic backend changes.
>>>
>>> -Joey
>>>
>>> On Fri, Sep 18, 2015 at 8:34 AM, Eduard Martinescu
>>> <[email protected]> wrote:
>>>
>>>> I have implemented something similar to allow use to dynamically
>>>> load-balance between multiple backends that are all joined to each
>>>>
>>> other as
>>>
>>>> part of a Hazelcast cluster.  All of which is running in an AWS VPC,
>>>>
>>> with
>>>
>>>> autoscaling groups to control spin up and down of new members of the
>>>>
>>> cluster
>>>
>>>> based on load, etc.
>>>>
>>>> What we ended up doing is righting custom code that attached to the
>>>> hazelcast cluster as a client, and periodically queried the cluster
>>>>
>>> for the
>>>
>>>> current list of servers, and their IP addresses.  The coded would
>>>>
>>> then
>>>
>>>> rewrite the HAProxy configuration, filling in the correct backend
>>>>
>>> list.
>>>
>>>> Then via a shell call (sadly, Java can't do Unix domain sockets to
>>>>
>>> write
>>>
>>>> directly to the server), it would tell HAProxy to restart
>>>>
>>> gracefully.
>>>
>>>>
>>>> In our use case, this works great, as we don't have long-running TCP
>>>> connections (these servers typically serve REST API calls or static
>>>>
>>> HTML
>>>
>>>> content with no keep-alive.)
>>>>
>>>> I'm also open to suggestions on how this could be improved too,
>>>>
>>> especially
>>>
>>>> with 1.6 possibly.
>>>>
>>>> Ed
>>>>
>>>> ________________________________
>>>> ✉ Eduard Martinescu | ✆ (585) 708-9685 [1] |  - ignite action.
>>>>
>>> fuel change.
>>>
>>>
>>>> On Fri, Sep 18, 2015 at 9:21 AM, Baptiste <[email protected]> wrote:
>>>>
>>>>>
>>>>> On Fri, Sep 18, 2015 at 3:18 PM, Smain Kahlouch
>>>>>
>>>> <[email protected]>
>>>
>>>> wrote:
>>>>>
>>>>>> If I may chime in here: Kubernetes supports service discovery
>>>>>>>
>>>>>> through
>>>
>>>> DNS
>>>>>>> SRV records for most use-cases, so the dynamic DNS support that
>>>>>>> Baptiste
>>>>>>> is
>>>>>>> currently working on would be a perfect fit. No special API
>>>>>>>
>>>>>> support
>>>
>>>> required.
>>>>>>>
>>>>>>
>>>>>>
>>>>>> Well dns would be great but, as far as i know, kubernetes uses
>>>>>>
>>>>> dns only
>>>
>>>> for
>>>>>> services name, not for pods.
>>>>>> A pod can be seen as a server in a backend, the number of servers
>>>>>>
>>>>> and
>>>
>>>> their
>>>>>> ip addresses can change frequently.
>>>>>> I'll dig further...
>>>>>>
>>>>>> Thanks,
>>>>>> Smana
>>>>>>
>>>>>
>>>>>
>>>>> That's usually the purpose of DNS SRV records ;)
>>>>>
>>>>> Baptiste
>>>>>
>>>>>
>>>>
>>
>>
>> Links:
>> ------
>> [1] tel:%28585%29%20708-9685
>>
>

Reply via email to