SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
Creating an Advanced Load Balancing
Solution for Kubernetes with NGINX
Andrew Hutchings — Technical Product Manager, NGINX, Inc., @LinuxJedi
About LinuxJedi
• Kubernetes user for 4 days
• Worked at HP on OpenStack LBaaS and ATG
• Worked on several Open Source DBs
• Alopecia sufferer
Goals
• Basic and advanced load balancing
• Current load balancing options in Kubernetes
• Ingress resource
• Implementing an Ingress controller for NGINX
• Load balancing demo: exposing Kubernetes services to the Internet
Basic Load Balancing
A load balancer
distributes request
among healthy servers
LB
Server 1 Server 2 Server 3
Basic Load Balancing
HTTPHTTP
Layer 7
TCPTCP UDPUDP
Layer 4
Advanced Load Balancing
• SSL termination
• Active health checks
• Security
• Bandwidth limits
• Logging
• Real-time statistics
• Session Persistence
• Content-based routing
• and more…
Load Balancing in Kubernetes
Internal
• kube-proxy
External
• NodePort
• LoadBalancer
• External IPs
• Service loadbalancer
• Ingress
Internal: Kube-proxy
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: backend
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: backend
# env | grep -i backend
BACKEND_SERVICE_SERVICE_HOST=10.3.246.245
BACKEND_SERVICE_SERVICE_PORT=80
…
# env | grep -i backend
BACKEND_SERVICE_SERVICE_HOST=10.3.246.245
BACKEND_SERVICE_SERVICE_PORT=80
…
# nslookup backend-service
…
Name: backend-service
Address 1: 10.3.246.245
# nslookup backend-service
…
Name: backend-service
Address 1: 10.3.246.245
$ kubectl get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
backend-service 10.3.246.245 <none> 80/TCP app=backend 6m
$ kubectl get svc
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE
backend-service 10.3.246.245 <none> 80/TCP app=backend 6m
Internal: Kube-proxy
kube-proxykube-proxy
BB
kube-proxykube-proxy
BB
kube-proxykube-proxy
BB
Features
• TCP/UDP
• Health checks
• Client IP session affinity
External: NodePort
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: backend
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: backend
$ kubectl create -f backend-service-nodeport.yaml
You have exposed your service on an external port on all
nodes in your
cluster. If you want to expose this service to the
external internet, you may
need to set up firewall rules for the service port(s)
(tcp:31107) to serve traffic.
$ kubectl create -f backend-service-nodeport.yaml
You have exposed your service on an external port on all
nodes in your
cluster. If you want to expose this service to the
external internet, you may
need to set up firewall rules for the service port(s)
(tcp:31107) to serve traffic.
External: NodePort
Features
• TCP/UDP
• Health checks
kube-proxykube-proxykube-proxykube-proxy
BB
kube-proxykube-proxy
BB
NodePortNodePort NodePortNodePort NodePortNodePort
BB
External: LoadBalancer
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: backend
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
type: LoadBalancer
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: backend
$ kubectl describe svc backend-service
Name: backend-service
Namespace: default
Labels: <none>
Selector: app=backend
Type: LoadBalancer
IP: 10.3.249.155
LoadBalancer Ingress: XXX.YYY.ZZZ.III
Port: <unnamed> 80/TCP
NodePort: <unnamed> 32074/TCP
Endpoints: <none>
Session Affinity: None
$ kubectl describe svc backend-service
Name: backend-service
Namespace: default
Labels: <none>
Selector: app=backend
Type: LoadBalancer
IP: 10.3.249.155
LoadBalancer Ingress: XXX.YYY.ZZZ.III
Port: <unnamed> 80/TCP
NodePort: <unnamed> 32074/TCP
Endpoints: <none>
Session Affinity: None
External: LoadBalancer
Features
• TCP
• Health checks
• Client IP session affinity
(GCE)
kube-proxykube-proxykube-proxykube-proxy
BB
kube-proxykube-proxy
BB
NodePortNodePort NodePortNodePort NodePortNodePort
BB
Cloud
LB
Cloud
LB
External: External IPs
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
externalIPs:
- 10.240.0.2
- 10.240.0.3
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: backend
apiVersion: v1
kind: Service
metadata:
name: backend-service
spec:
externalIPs:
- 10.240.0.2
- 10.240.0.3
ports:
- port: 80
targetPort: 80
protocol: TCP
selector:
app: backend
$ kubectl get nodes -o json | grep -A 1 "InternalIP"
"type": "InternalIP",
"address": "10.240.0.2"
--
"type": "InternalIP",
"address": "10.240.0.3"
--
"type": "InternalIP",
"address": "10.240.0.4"
$ kubectl get nodes -o json | grep -A 1 "InternalIP"
"type": "InternalIP",
"address": "10.240.0.2"
--
"type": "InternalIP",
"address": "10.240.0.3"
--
"type": "InternalIP",
"address": "10.240.0.4"
External: External IPs
Features
• TCP/UDP
• Health checks
kube-proxykube-proxykube-proxykube-proxy
BB
kube-proxykube-proxy
BB BB
8080
10.240.0.2 10.240.0.3 10.240.0.4
8080
External: service LoadBalancer
https://github.com/kubernetes/contrib/tree/master/service-loadbalancer
1 or more HAProxy, each deployed
in a pod
Services -> HAProxy configuration
svcA-> /svcA
svcB -> /svcB
Features
• TCP/UDP, HTTP
• URL Mapping
• SSL Termination (via Annotations)
• Session Persistence (via Annotations)
• Multiple algorithms (via Annotations)
External: Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-ingress
spec:
rules:
- host: hello.example.com
http:
paths:
- path: /a
backend:
serviceName: backend-a
servicePort: 80
- path: /b
backend:
serviceName: backend-b
servicePort: 8080
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-ingress
spec:
rules:
- host: hello.example.com
http:
paths:
- path: /a
backend:
serviceName: backend-a
servicePort: 80
- path: /b
backend:
serviceName: backend-b
servicePort: 8080
• hello.example/a -> backend-a:80
• hello.example/b -> backend-b:8080
External: Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-ingress
spec:
tls:
- hosts:
- hello.example.com
secretName: hello-secret
rules:
- host: hello.example.com
. . .
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-ingress
spec:
tls:
- hosts:
- hello.example.com
secretName: hello-secret
rules:
- host: hello.example.com
. . .
apiVersion: v1
kind: Secret
metadata:
name: hello-secret
type: Opaque
data:
tls.crt: <base-64 encoded crt>
tls.key: <base-64 encoded key>
apiVersion: v1
kind: Secret
metadata:
name: hello-secret
type: Opaque
data:
tls.crt: <base-64 encoded crt>
tls.key: <base-64 encoded key>
New in 1.2: TLS support
External: Ingress
Features
• HTTP Load Balancing
• SSL Termination
• Content-based routing
How to use it
Ingress Controller must be deployed
External: Ingress
Ingress
Controller
Ingress
Controller
Ingress
Resources
Ingress
Resources
Load BalancerLoad Balancer
watches configures
External: Ingress
Cloud Load Balancers
• GCE HTTP Load Balancer
Software Load Balancers
• NGINX
https://github.com/kubernetes/contrib/tree/master/ingress/controllers
NGINX
• Layer 4/Layer 7 Load Balancer
• Advanced algorithms
• SSL termination
• Content-based routing
• Limits
• HTTP/2 gateway
• Logging
• Security
• Real-time statistics*
• Layer 7 Session Persistence*
• Dynamic reconfiguration*
* NGINX Plus
Also a webserver and cache
NGINX Ingress Controller
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-ingress
spec:
rules:
- host: hello.example.com
http:
paths:
- path: /a
backend:
serviceName: backend-a
servicePort: 80
- path: /b
backend:
serviceName: backend-b
servicePort: 8080
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: hello-ingress
spec:
rules:
- host: hello.example.com
http:
paths:
- path: /a
backend:
serviceName: backend-a
servicePort: 80
- path: /b
backend:
serviceName: backend-b
servicePort: 8080
upstream backend-a {
server 10.3.246.245:80;
}
upstream backend-b {
server 10.3.246.249:8080;
}
server {
listen 80;
server_name hello.example.com;
location /a {
proxy_pass http://backend-a;
}
location /b {
proxy_pass http://backend-b;
}
}
upstream backend-a {
server 10.3.246.245:80;
}
upstream backend-b {
server 10.3.246.249:8080;
}
server {
listen 80;
server_name hello.example.com;
location /a {
proxy_pass http://backend-a;
}
location /b {
proxy_pass http://backend-b;
}
}
NGINX Ingress Controller
1. Watch for Ingress resources
2. Watch for Services and Endpoints: to get IP address of a service or its
endpoints in case of a headless service
3. Watch for Secrets
NGINX Ingress Controller
IngressIngress
EndpointsEndpoints
ServiceService
SecretSecret
IngressIngress
affects
Changes in
1. Regenerate configuration for the
Ingress
2. Reload NGINX
NGINX Ingress Controller
• NGINX Plus supports re-resolving DNS names in runtime every X
seconds
• Doesn’t fail when a name can’t be resolved
• Simplifies implementation: no need to watch for Services and
Endpoints
NGINX Ingress Controller
• As an example we took the GCE HTTP Load Balancer Ingress Controller
—
https://github.com/kubernetes/contrib/tree/master/ingress/controllers/
gce
• Written in Go
• Different implementations for NGINX and NGINX Plus
• Deployed in the same container as NGINX. the Controller starts first and
then launches NGINX.
NGINX Ingress Controller
• HTTP Load Balancing
• SSL Termination
• Content-based routing
Features
• Advanced algorithms
• Limits
• Access Control
• Logging
• Limits Real-time statistics (NGINX Plus)
• Layer 7 Session Persistence (NGINX Plus)
• Dynamic reconfiguration (NGINX Plus)
• and more
Features, supported by changing
NGINX templates
Demo
kube-proxykube-proxykube-proxykube-proxy
TT
kube-proxykube-proxy
CC
80, 44380, 443
BBCC TT
Demo
• tea-rc and tea-svc
• coffee-rc and headless coffee-svc
• Ingress resource cafe-ingress with TLS
• Secret cafe-secret
• NGINX Plus Ingress Controller nginx-plus-ingress-rc
NGINX Ingress Controller
• Expose more NGINX features via
Kubernetes resources (Annotations
and Config Maps)
• Make it production-ready
• Improve it based on your feedback
Wishlist
The End
● Resources: http://tiny.cc/nginx-ingress
● NGINX: https://www.nginx.com/
● My site: http://linuxjedi.co.uk/
● Twitter: @LinuxJedi
● Freenode: LinuxJedi
● Email: linuxjedi@nginx.com

Mais conteúdo relacionado

Mais procurados

Kubernetes the Very Hard Way. Lisa Portland 2019
Kubernetes the Very Hard Way. Lisa Portland 2019Kubernetes the Very Hard Way. Lisa Portland 2019
Kubernetes the Very Hard Way. Lisa Portland 2019Laurent Bernaille
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersJavan Rasokat
 
DCUS17 : Docker networking deep dive
DCUS17 : Docker networking deep diveDCUS17 : Docker networking deep dive
DCUS17 : Docker networking deep diveMadhu Venugopal
 
青云虚拟机部署私有Docker Registry
青云虚拟机部署私有Docker Registry青云虚拟机部署私有Docker Registry
青云虚拟机部署私有Docker RegistryZhichao Liang
 
Web scale infrastructures with kubernetes and flannel
Web scale infrastructures with kubernetes and flannelWeb scale infrastructures with kubernetes and flannel
Web scale infrastructures with kubernetes and flannelpurpleocean
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes NetworkingCJ Cullen
 
Load Balancing 101
Load Balancing 101Load Balancing 101
Load Balancing 101HungWei Chiu
 
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesService Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesSreenivas Makam
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context ConstraintsAlessandro Arrichiello
 
Head First to Container&Kubernetes
Head First to Container&KubernetesHead First to Container&Kubernetes
Head First to Container&KubernetesHungWei Chiu
 
Heart of the SwarmKit: Store, Topology & Object Model
Heart of the SwarmKit: Store, Topology & Object ModelHeart of the SwarmKit: Store, Topology & Object Model
Heart of the SwarmKit: Store, Topology & Object ModelDocker, Inc.
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusKevin Jones
 
KubeCon EU 2016: Multi-Tenant Kubernetes
KubeCon EU 2016: Multi-Tenant KubernetesKubeCon EU 2016: Multi-Tenant Kubernetes
KubeCon EU 2016: Multi-Tenant KubernetesKubeAcademy
 
Packet Walk(s) In Kubernetes
Packet Walk(s) In KubernetesPacket Walk(s) In Kubernetes
Packet Walk(s) In KubernetesDon Jayakody
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMartin Etmajer
 
Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22
Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22
Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22Ajeet Singh Raina
 
From pets to cattle - powered by CoreOS, docker, Mesos & nginx
From pets to cattle - powered by CoreOS, docker, Mesos & nginxFrom pets to cattle - powered by CoreOS, docker, Mesos & nginx
From pets to cattle - powered by CoreOS, docker, Mesos & nginxQAware GmbH
 
Docker network Present in VietNam DockerDay 2015
Docker network Present in VietNam DockerDay 2015Docker network Present in VietNam DockerDay 2015
Docker network Present in VietNam DockerDay 2015Van Phuc
 
Docker Networking - Current Status and goals of Experimental Networking
Docker Networking - Current Status and goals of Experimental NetworkingDocker Networking - Current Status and goals of Experimental Networking
Docker Networking - Current Status and goals of Experimental NetworkingSreenivas Makam
 
AstriCon 2017 - Docker Swarm & Asterisk
AstriCon 2017  - Docker Swarm & AsteriskAstriCon 2017  - Docker Swarm & Asterisk
AstriCon 2017 - Docker Swarm & AsteriskEvan McGee
 

Mais procurados (20)

Kubernetes the Very Hard Way. Lisa Portland 2019
Kubernetes the Very Hard Way. Lisa Portland 2019Kubernetes the Very Hard Way. Lisa Portland 2019
Kubernetes the Very Hard Way. Lisa Portland 2019
 
OWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA TestersOWASP ZAP Workshop for QA Testers
OWASP ZAP Workshop for QA Testers
 
DCUS17 : Docker networking deep dive
DCUS17 : Docker networking deep diveDCUS17 : Docker networking deep dive
DCUS17 : Docker networking deep dive
 
青云虚拟机部署私有Docker Registry
青云虚拟机部署私有Docker Registry青云虚拟机部署私有Docker Registry
青云虚拟机部署私有Docker Registry
 
Web scale infrastructures with kubernetes and flannel
Web scale infrastructures with kubernetes and flannelWeb scale infrastructures with kubernetes and flannel
Web scale infrastructures with kubernetes and flannel
 
Kubernetes Networking
Kubernetes NetworkingKubernetes Networking
Kubernetes Networking
 
Load Balancing 101
Load Balancing 101Load Balancing 101
Load Balancing 101
 
Service Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and KubernetesService Discovery using etcd, Consul and Kubernetes
Service Discovery using etcd, Consul and Kubernetes
 
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
[Devconf.cz][2017] Understanding OpenShift Security Context Constraints
 
Head First to Container&Kubernetes
Head First to Container&KubernetesHead First to Container&Kubernetes
Head First to Container&Kubernetes
 
Heart of the SwarmKit: Store, Topology & Object Model
Heart of the SwarmKit: Store, Topology & Object ModelHeart of the SwarmKit: Store, Topology & Object Model
Heart of the SwarmKit: Store, Topology & Object Model
 
Content Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX PlusContent Caching with NGINX and NGINX Plus
Content Caching with NGINX and NGINX Plus
 
KubeCon EU 2016: Multi-Tenant Kubernetes
KubeCon EU 2016: Multi-Tenant KubernetesKubeCon EU 2016: Multi-Tenant Kubernetes
KubeCon EU 2016: Multi-Tenant Kubernetes
 
Packet Walk(s) In Kubernetes
Packet Walk(s) In KubernetesPacket Walk(s) In Kubernetes
Packet Walk(s) In Kubernetes
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on Kubernetes
 
Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22
Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22
Service Discovery & Load-Balancing under Docker 1.12.0 @ Docker Meetup #22
 
From pets to cattle - powered by CoreOS, docker, Mesos & nginx
From pets to cattle - powered by CoreOS, docker, Mesos & nginxFrom pets to cattle - powered by CoreOS, docker, Mesos & nginx
From pets to cattle - powered by CoreOS, docker, Mesos & nginx
 
Docker network Present in VietNam DockerDay 2015
Docker network Present in VietNam DockerDay 2015Docker network Present in VietNam DockerDay 2015
Docker network Present in VietNam DockerDay 2015
 
Docker Networking - Current Status and goals of Experimental Networking
Docker Networking - Current Status and goals of Experimental NetworkingDocker Networking - Current Status and goals of Experimental Networking
Docker Networking - Current Status and goals of Experimental Networking
 
AstriCon 2017 - Docker Swarm & Asterisk
AstriCon 2017  - Docker Swarm & AsteriskAstriCon 2017  - Docker Swarm & Asterisk
AstriCon 2017 - Docker Swarm & Asterisk
 

Destaque

Kubernetes Mesos Architecture
Kubernetes Mesos ArchitectureKubernetes Mesos Architecture
Kubernetes Mesos ArchitectureYongbok Kim
 
Kubernetes Architecture v1.x
Kubernetes Architecture v1.xKubernetes Architecture v1.x
Kubernetes Architecture v1.xYongbok Kim
 
Tectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with KubernetesTectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with KubernetesCoreOS
 
Kubernetes Workshop
Kubernetes WorkshopKubernetes Workshop
Kubernetes WorkshopWalter Liu
 
Tectonic Summit 2016: Networking for Kubernetes
Tectonic Summit 2016: Networking for Kubernetes Tectonic Summit 2016: Networking for Kubernetes
Tectonic Summit 2016: Networking for Kubernetes CoreOS
 
Container Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyondContainer Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyondKubeAcademy
 
Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤Keita Shimada
 
Load Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLoad Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLee Calcote
 
RancherのWindowsサポートと事始め
RancherのWindowsサポートと事始めRancherのWindowsサポートと事始め
RancherのWindowsサポートと事始めcyberblack28 Ichikawa
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...tdc-globalcode
 
Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!
Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!
Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!smalltown
 
Agriculture growth and poverty redection (1)
Agriculture growth and poverty redection (1)Agriculture growth and poverty redection (1)
Agriculture growth and poverty redection (1)Yousaf Khan
 
United Arab Emirates, A developed Country
United Arab Emirates, A developed CountryUnited Arab Emirates, A developed Country
United Arab Emirates, A developed CountryHira Sohaib
 
31Mar14 - Understanding wellbeing in old age across the world: lessons from a...
31Mar14 - Understanding wellbeing in old age across the world: lessons from a...31Mar14 - Understanding wellbeing in old age across the world: lessons from a...
31Mar14 - Understanding wellbeing in old age across the world: lessons from a...ILC- UK
 
Fisconti tax consulting Netherlands - New Transfer Pricing Documentation Req...
Fisconti tax consulting Netherlands -  New Transfer Pricing Documentation Req...Fisconti tax consulting Netherlands -  New Transfer Pricing Documentation Req...
Fisconti tax consulting Netherlands - New Transfer Pricing Documentation Req...Guido Van Asperen
 
India vision 2020
India vision 2020 India vision 2020
India vision 2020 Shivam Jain
 
5 Characteristics Of Developing Countries
5 Characteristics Of Developing Countries5 Characteristics Of Developing Countries
5 Characteristics Of Developing Countriesmrgibbs
 

Destaque (20)

Kubernetes Mesos Architecture
Kubernetes Mesos ArchitectureKubernetes Mesos Architecture
Kubernetes Mesos Architecture
 
Kubernetes Architecture v1.x
Kubernetes Architecture v1.xKubernetes Architecture v1.x
Kubernetes Architecture v1.x
 
Tectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with KubernetesTectonic Summit 2016: Multitenant Data Architectures with Kubernetes
Tectonic Summit 2016: Multitenant Data Architectures with Kubernetes
 
Kubernetes Workshop
Kubernetes WorkshopKubernetes Workshop
Kubernetes Workshop
 
Tectonic Summit 2016: Networking for Kubernetes
Tectonic Summit 2016: Networking for Kubernetes Tectonic Summit 2016: Networking for Kubernetes
Tectonic Summit 2016: Networking for Kubernetes
 
Container Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyondContainer Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyond
 
Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤
 
Load Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & KubernetesLoad Balancing in the Cloud using Nginx & Kubernetes
Load Balancing in the Cloud using Nginx & Kubernetes
 
RancherのWindowsサポートと事始め
RancherのWindowsサポートと事始めRancherのWindowsサポートと事始め
RancherのWindowsサポートと事始め
 
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
TDC2017 | São Paulo - Trilha Containers How we figured out we had a SRE team ...
 
Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!
Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!
Kubernetes Day 2017 - Build, Ship and Run Your APP, Production !!
 
ICAS 2015 - Rule out the negative side of brain drain - YU Yau Hing
ICAS 2015 - Rule out the negative side of brain drain - YU Yau HingICAS 2015 - Rule out the negative side of brain drain - YU Yau Hing
ICAS 2015 - Rule out the negative side of brain drain - YU Yau Hing
 
Agriculture growth and poverty redection (1)
Agriculture growth and poverty redection (1)Agriculture growth and poverty redection (1)
Agriculture growth and poverty redection (1)
 
United Arab Emirates, A developed Country
United Arab Emirates, A developed CountryUnited Arab Emirates, A developed Country
United Arab Emirates, A developed Country
 
31Mar14 - Understanding wellbeing in old age across the world: lessons from a...
31Mar14 - Understanding wellbeing in old age across the world: lessons from a...31Mar14 - Understanding wellbeing in old age across the world: lessons from a...
31Mar14 - Understanding wellbeing in old age across the world: lessons from a...
 
Fisconti tax consulting Netherlands - New Transfer Pricing Documentation Req...
Fisconti tax consulting Netherlands -  New Transfer Pricing Documentation Req...Fisconti tax consulting Netherlands -  New Transfer Pricing Documentation Req...
Fisconti tax consulting Netherlands - New Transfer Pricing Documentation Req...
 
Comparative Public Administration ”Discussion on Various Aspects of Develo...
Comparative Public Administration ”Discussion on Various Aspects of Develo...Comparative Public Administration ”Discussion on Various Aspects of Develo...
Comparative Public Administration ”Discussion on Various Aspects of Develo...
 
India vision 2020
India vision 2020 India vision 2020
India vision 2020
 
India vision 2020 ppt
India vision 2020 pptIndia vision 2020 ppt
India vision 2020 ppt
 
5 Characteristics Of Developing Countries
5 Characteristics Of Developing Countries5 Characteristics Of Developing Countries
5 Characteristics Of Developing Countries
 

Semelhante a KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes with NGINX

Kuberntes Ingress with Kong
Kuberntes Ingress with KongKuberntes Ingress with Kong
Kuberntes Ingress with KongNebulaworks
 
Extending kubernetes
Extending kubernetesExtending kubernetes
Extending kubernetesGigi Sayfan
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to KubernetesPaul Czarkowski
 
ОЛЕКСАНДР ЛИПКО «Graceful Shutdown Node.js + k8s» Online WDDay 2021
ОЛЕКСАНДР ЛИПКО «Graceful Shutdown Node.js + k8s» Online WDDay 2021ОЛЕКСАНДР ЛИПКО «Graceful Shutdown Node.js + k8s» Online WDDay 2021
ОЛЕКСАНДР ЛИПКО «Graceful Shutdown Node.js + k8s» Online WDDay 2021WDDay
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Daniel Bryant
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxiesLibbySchulze
 
Orchestration with Kubernetes
Orchestration with KubernetesOrchestration with Kubernetes
Orchestration with KubernetesKunal Kerkar
 
Scaling Kubernetes to Support 50000 Services.pptx
Scaling Kubernetes to Support 50000 Services.pptxScaling Kubernetes to Support 50000 Services.pptx
Scaling Kubernetes to Support 50000 Services.pptxthaond2
 
Load Balancing Applications on Kubernetes with NGINX
Load Balancing Applications on Kubernetes with NGINXLoad Balancing Applications on Kubernetes with NGINX
Load Balancing Applications on Kubernetes with NGINXAine Long
 
What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0
What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0
What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0NGINX, Inc.
 
F5 Meetup presentation automation 2017
F5 Meetup presentation automation 2017F5 Meetup presentation automation 2017
F5 Meetup presentation automation 2017Guy Brown
 
Istio Playground
Istio PlaygroundIstio Playground
Istio PlaygroundQAware GmbH
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWSGrant Ellis
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWSGrant Ellis
 
NGINX Plus R20 Webinar
NGINX Plus R20 WebinarNGINX Plus R20 Webinar
NGINX Plus R20 WebinarNGINX, Inc.
 
Evolution of kube-proxy (Brussels, Fosdem 2020)
Evolution of kube-proxy (Brussels, Fosdem 2020)Evolution of kube-proxy (Brussels, Fosdem 2020)
Evolution of kube-proxy (Brussels, Fosdem 2020)Laurent Bernaille
 
What’s New in NGINX Plus R16?
What’s New in NGINX Plus R16?What’s New in NGINX Plus R16?
What’s New in NGINX Plus R16?NGINX, Inc.
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...NGINX, Inc.
 
Harmonia open iris_basic_v0.1
Harmonia open iris_basic_v0.1Harmonia open iris_basic_v0.1
Harmonia open iris_basic_v0.1Yongyoon Shin
 

Semelhante a KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes with NGINX (20)

Kuberntes Ingress with Kong
Kuberntes Ingress with KongKuberntes Ingress with Kong
Kuberntes Ingress with Kong
 
Extending kubernetes
Extending kubernetesExtending kubernetes
Extending kubernetes
 
Introduction to Kubernetes
Introduction to KubernetesIntroduction to Kubernetes
Introduction to Kubernetes
 
ОЛЕКСАНДР ЛИПКО «Graceful Shutdown Node.js + k8s» Online WDDay 2021
ОЛЕКСАНДР ЛИПКО «Graceful Shutdown Node.js + k8s» Online WDDay 2021ОЛЕКСАНДР ЛИПКО «Graceful Shutdown Node.js + k8s» Online WDDay 2021
ОЛЕКСАНДР ЛИПКО «Graceful Shutdown Node.js + k8s» Online WDDay 2021
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
 
Ports, pods and proxies
Ports, pods and proxiesPorts, pods and proxies
Ports, pods and proxies
 
Orchestration with Kubernetes
Orchestration with KubernetesOrchestration with Kubernetes
Orchestration with Kubernetes
 
Scaling Kubernetes to Support 50000 Services.pptx
Scaling Kubernetes to Support 50000 Services.pptxScaling Kubernetes to Support 50000 Services.pptx
Scaling Kubernetes to Support 50000 Services.pptx
 
Load Balancing Applications on Kubernetes with NGINX
Load Balancing Applications on Kubernetes with NGINXLoad Balancing Applications on Kubernetes with NGINX
Load Balancing Applications on Kubernetes with NGINX
 
What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0
What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0
What’s New in NGINX Ingress Controller for Kubernetes Release 1.5.0
 
F5 Meetup presentation automation 2017
F5 Meetup presentation automation 2017F5 Meetup presentation automation 2017
F5 Meetup presentation automation 2017
 
Istio Playground
Istio PlaygroundIstio Playground
Istio Playground
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWS
 
Kubernetes on AWS
Kubernetes on AWSKubernetes on AWS
Kubernetes on AWS
 
NGINX Plus R20 Webinar
NGINX Plus R20 WebinarNGINX Plus R20 Webinar
NGINX Plus R20 Webinar
 
Scale Kubernetes to support 50000 services
Scale Kubernetes to support 50000 servicesScale Kubernetes to support 50000 services
Scale Kubernetes to support 50000 services
 
Evolution of kube-proxy (Brussels, Fosdem 2020)
Evolution of kube-proxy (Brussels, Fosdem 2020)Evolution of kube-proxy (Brussels, Fosdem 2020)
Evolution of kube-proxy (Brussels, Fosdem 2020)
 
What’s New in NGINX Plus R16?
What’s New in NGINX Plus R16?What’s New in NGINX Plus R16?
What’s New in NGINX Plus R16?
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
 
Harmonia open iris_basic_v0.1
Harmonia open iris_basic_v0.1Harmonia open iris_basic_v0.1
Harmonia open iris_basic_v0.1
 

Mais de KubeAcademy

KubeCon EU 2016: Distributed containers in the physical world
KubeCon EU 2016: Distributed containers in the physical worldKubeCon EU 2016: Distributed containers in the physical world
KubeCon EU 2016: Distributed containers in the physical worldKubeAcademy
 
KubeCon EU 2016:
KubeCon EU 2016: KubeCon EU 2016:
KubeCon EU 2016: KubeAcademy
 
KubeCon EU 2016: ChatOps and Automatic Deployment on Kubernetes
KubeCon EU 2016: ChatOps and Automatic Deployment on KubernetesKubeCon EU 2016: ChatOps and Automatic Deployment on Kubernetes
KubeCon EU 2016: ChatOps and Automatic Deployment on KubernetesKubeAcademy
 
KubeCon EU 2016: A Practical Guide to Container Scheduling
KubeCon EU 2016: A Practical Guide to Container SchedulingKubeCon EU 2016: A Practical Guide to Container Scheduling
KubeCon EU 2016: A Practical Guide to Container SchedulingKubeAcademy
 
KubeCon EU 2016: Trading in the Kube
KubeCon EU 2016: Trading in the KubeKubeCon EU 2016: Trading in the Kube
KubeCon EU 2016: Trading in the KubeKubeAcademy
 
KubeCon EU 2016: Integrated trusted computing in Kubernetes
KubeCon EU 2016: Integrated trusted computing in KubernetesKubeCon EU 2016: Integrated trusted computing in Kubernetes
KubeCon EU 2016: Integrated trusted computing in KubernetesKubeAcademy
 
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipelineKubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipelineKubeAcademy
 
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeAcademy
 
KubeCon EU 2016: Heroku to Kubernetes
KubeCon EU 2016: Heroku to KubernetesKubeCon EU 2016: Heroku to Kubernetes
KubeCon EU 2016: Heroku to KubernetesKubeAcademy
 
KubeCon EU 2016: Transforming the Government
KubeCon EU 2016: Transforming the Government KubeCon EU 2016: Transforming the Government
KubeCon EU 2016: Transforming the Government KubeAcademy
 
KubeCon EU 2016: Getting the Jobs Done With Kubernetes
KubeCon EU 2016: Getting the Jobs Done With KubernetesKubeCon EU 2016: Getting the Jobs Done With Kubernetes
KubeCon EU 2016: Getting the Jobs Done With KubernetesKubeAcademy
 
KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101KubeAcademy
 
KubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Using Traffic Control to Test Apps in KubernetesKubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Using Traffic Control to Test Apps in KubernetesKubeAcademy
 
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroomKubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroomKubeAcademy
 
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an EnterpriseKubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an EnterpriseKubeAcademy
 
KubeCon EU 2016: SmartCity IoT on Kubernetes
KubeCon EU 2016: SmartCity IoT on KubernetesKubeCon EU 2016: SmartCity IoT on Kubernetes
KubeCon EU 2016: SmartCity IoT on KubernetesKubeAcademy
 
KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...
KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...
KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...KubeAcademy
 
KubeCon EU 2016 Keynote: Pushing Kubernetes Forward
KubeCon EU 2016 Keynote: Pushing Kubernetes ForwardKubeCon EU 2016 Keynote: Pushing Kubernetes Forward
KubeCon EU 2016 Keynote: Pushing Kubernetes ForwardKubeAcademy
 
KubeCon EU 2016: Killing containers to make weather beautiful
KubeCon EU 2016: Killing containers to make weather beautifulKubeCon EU 2016: Killing containers to make weather beautiful
KubeCon EU 2016: Killing containers to make weather beautifulKubeAcademy
 
KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...
KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...
KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...KubeAcademy
 

Mais de KubeAcademy (20)

KubeCon EU 2016: Distributed containers in the physical world
KubeCon EU 2016: Distributed containers in the physical worldKubeCon EU 2016: Distributed containers in the physical world
KubeCon EU 2016: Distributed containers in the physical world
 
KubeCon EU 2016:
KubeCon EU 2016: KubeCon EU 2016:
KubeCon EU 2016:
 
KubeCon EU 2016: ChatOps and Automatic Deployment on Kubernetes
KubeCon EU 2016: ChatOps and Automatic Deployment on KubernetesKubeCon EU 2016: ChatOps and Automatic Deployment on Kubernetes
KubeCon EU 2016: ChatOps and Automatic Deployment on Kubernetes
 
KubeCon EU 2016: A Practical Guide to Container Scheduling
KubeCon EU 2016: A Practical Guide to Container SchedulingKubeCon EU 2016: A Practical Guide to Container Scheduling
KubeCon EU 2016: A Practical Guide to Container Scheduling
 
KubeCon EU 2016: Trading in the Kube
KubeCon EU 2016: Trading in the KubeKubeCon EU 2016: Trading in the Kube
KubeCon EU 2016: Trading in the Kube
 
KubeCon EU 2016: Integrated trusted computing in Kubernetes
KubeCon EU 2016: Integrated trusted computing in KubernetesKubeCon EU 2016: Integrated trusted computing in Kubernetes
KubeCon EU 2016: Integrated trusted computing in Kubernetes
 
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipelineKubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
KubeCon EU 2016: Leveraging ephemeral namespaces in a CI/CD pipeline
 
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project CalicoKubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
KubeCon EU 2016: Secure, Cloud-Native Networking with Project Calico
 
KubeCon EU 2016: Heroku to Kubernetes
KubeCon EU 2016: Heroku to KubernetesKubeCon EU 2016: Heroku to Kubernetes
KubeCon EU 2016: Heroku to Kubernetes
 
KubeCon EU 2016: Transforming the Government
KubeCon EU 2016: Transforming the Government KubeCon EU 2016: Transforming the Government
KubeCon EU 2016: Transforming the Government
 
KubeCon EU 2016: Getting the Jobs Done With Kubernetes
KubeCon EU 2016: Getting the Jobs Done With KubernetesKubeCon EU 2016: Getting the Jobs Done With Kubernetes
KubeCon EU 2016: Getting the Jobs Done With Kubernetes
 
KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101KubeCon EU 2016: Kubernetes Storage 101
KubeCon EU 2016: Kubernetes Storage 101
 
KubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Using Traffic Control to Test Apps in KubernetesKubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
KubeCon EU 2016: Using Traffic Control to Test Apps in Kubernetes
 
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroomKubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
KubeCon EU 2016: Kubernetes in Production in The New York Times newsroom
 
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an EnterpriseKubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
 
KubeCon EU 2016: SmartCity IoT on Kubernetes
KubeCon EU 2016: SmartCity IoT on KubernetesKubeCon EU 2016: SmartCity IoT on Kubernetes
KubeCon EU 2016: SmartCity IoT on Kubernetes
 
KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...
KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...
KubeCon EU 2016: Templatized Application Configuration on OpenShift and Kuber...
 
KubeCon EU 2016 Keynote: Pushing Kubernetes Forward
KubeCon EU 2016 Keynote: Pushing Kubernetes ForwardKubeCon EU 2016 Keynote: Pushing Kubernetes Forward
KubeCon EU 2016 Keynote: Pushing Kubernetes Forward
 
KubeCon EU 2016: Killing containers to make weather beautiful
KubeCon EU 2016: Killing containers to make weather beautifulKubeCon EU 2016: Killing containers to make weather beautiful
KubeCon EU 2016: Killing containers to make weather beautiful
 
KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...
KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...
KubeCon EU 2016: Bringing an open source Containerized Container Platform to ...
 

Último

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 

Último (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 

KubeCon EU 2016: Creating an Advanced Load Balancing Solution for Kubernetes with NGINX

  • 1. Creating an Advanced Load Balancing Solution for Kubernetes with NGINX Andrew Hutchings — Technical Product Manager, NGINX, Inc., @LinuxJedi
  • 2. About LinuxJedi • Kubernetes user for 4 days • Worked at HP on OpenStack LBaaS and ATG • Worked on several Open Source DBs • Alopecia sufferer
  • 3. Goals • Basic and advanced load balancing • Current load balancing options in Kubernetes • Ingress resource • Implementing an Ingress controller for NGINX • Load balancing demo: exposing Kubernetes services to the Internet
  • 4. Basic Load Balancing A load balancer distributes request among healthy servers LB Server 1 Server 2 Server 3
  • 5. Basic Load Balancing HTTPHTTP Layer 7 TCPTCP UDPUDP Layer 4
  • 6. Advanced Load Balancing • SSL termination • Active health checks • Security • Bandwidth limits • Logging • Real-time statistics • Session Persistence • Content-based routing • and more…
  • 7. Load Balancing in Kubernetes Internal • kube-proxy External • NodePort • LoadBalancer • External IPs • Service loadbalancer • Ingress
  • 8. Internal: Kube-proxy apiVersion: v1 kind: Service metadata: name: backend-service spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: backend apiVersion: v1 kind: Service metadata: name: backend-service spec: ports: - port: 80 targetPort: 80 protocol: TCP selector: app: backend # env | grep -i backend BACKEND_SERVICE_SERVICE_HOST=10.3.246.245 BACKEND_SERVICE_SERVICE_PORT=80 … # env | grep -i backend BACKEND_SERVICE_SERVICE_HOST=10.3.246.245 BACKEND_SERVICE_SERVICE_PORT=80 … # nslookup backend-service … Name: backend-service Address 1: 10.3.246.245 # nslookup backend-service … Name: backend-service Address 1: 10.3.246.245 $ kubectl get svc NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE backend-service 10.3.246.245 <none> 80/TCP app=backend 6m $ kubectl get svc NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE backend-service 10.3.246.245 <none> 80/TCP app=backend 6m
  • 10. External: NodePort apiVersion: v1 kind: Service metadata: name: backend-service spec: type: NodePort ports: - port: 80 targetPort: 80 protocol: TCP selector: app: backend apiVersion: v1 kind: Service metadata: name: backend-service spec: type: NodePort ports: - port: 80 targetPort: 80 protocol: TCP selector: app: backend $ kubectl create -f backend-service-nodeport.yaml You have exposed your service on an external port on all nodes in your cluster. If you want to expose this service to the external internet, you may need to set up firewall rules for the service port(s) (tcp:31107) to serve traffic. $ kubectl create -f backend-service-nodeport.yaml You have exposed your service on an external port on all nodes in your cluster. If you want to expose this service to the external internet, you may need to set up firewall rules for the service port(s) (tcp:31107) to serve traffic.
  • 11. External: NodePort Features • TCP/UDP • Health checks kube-proxykube-proxykube-proxykube-proxy BB kube-proxykube-proxy BB NodePortNodePort NodePortNodePort NodePortNodePort BB
  • 12. External: LoadBalancer apiVersion: v1 kind: Service metadata: name: backend-service spec: type: LoadBalancer ports: - port: 80 targetPort: 80 protocol: TCP selector: app: backend apiVersion: v1 kind: Service metadata: name: backend-service spec: type: LoadBalancer ports: - port: 80 targetPort: 80 protocol: TCP selector: app: backend $ kubectl describe svc backend-service Name: backend-service Namespace: default Labels: <none> Selector: app=backend Type: LoadBalancer IP: 10.3.249.155 LoadBalancer Ingress: XXX.YYY.ZZZ.III Port: <unnamed> 80/TCP NodePort: <unnamed> 32074/TCP Endpoints: <none> Session Affinity: None $ kubectl describe svc backend-service Name: backend-service Namespace: default Labels: <none> Selector: app=backend Type: LoadBalancer IP: 10.3.249.155 LoadBalancer Ingress: XXX.YYY.ZZZ.III Port: <unnamed> 80/TCP NodePort: <unnamed> 32074/TCP Endpoints: <none> Session Affinity: None
  • 13. External: LoadBalancer Features • TCP • Health checks • Client IP session affinity (GCE) kube-proxykube-proxykube-proxykube-proxy BB kube-proxykube-proxy BB NodePortNodePort NodePortNodePort NodePortNodePort BB Cloud LB Cloud LB
  • 14. External: External IPs apiVersion: v1 kind: Service metadata: name: backend-service spec: externalIPs: - 10.240.0.2 - 10.240.0.3 ports: - port: 80 targetPort: 80 protocol: TCP selector: app: backend apiVersion: v1 kind: Service metadata: name: backend-service spec: externalIPs: - 10.240.0.2 - 10.240.0.3 ports: - port: 80 targetPort: 80 protocol: TCP selector: app: backend $ kubectl get nodes -o json | grep -A 1 "InternalIP" "type": "InternalIP", "address": "10.240.0.2" -- "type": "InternalIP", "address": "10.240.0.3" -- "type": "InternalIP", "address": "10.240.0.4" $ kubectl get nodes -o json | grep -A 1 "InternalIP" "type": "InternalIP", "address": "10.240.0.2" -- "type": "InternalIP", "address": "10.240.0.3" -- "type": "InternalIP", "address": "10.240.0.4"
  • 15. External: External IPs Features • TCP/UDP • Health checks kube-proxykube-proxykube-proxykube-proxy BB kube-proxykube-proxy BB BB 8080 10.240.0.2 10.240.0.3 10.240.0.4 8080
  • 16. External: service LoadBalancer https://github.com/kubernetes/contrib/tree/master/service-loadbalancer 1 or more HAProxy, each deployed in a pod Services -> HAProxy configuration svcA-> /svcA svcB -> /svcB Features • TCP/UDP, HTTP • URL Mapping • SSL Termination (via Annotations) • Session Persistence (via Annotations) • Multiple algorithms (via Annotations)
  • 17. External: Ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-ingress spec: rules: - host: hello.example.com http: paths: - path: /a backend: serviceName: backend-a servicePort: 80 - path: /b backend: serviceName: backend-b servicePort: 8080 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-ingress spec: rules: - host: hello.example.com http: paths: - path: /a backend: serviceName: backend-a servicePort: 80 - path: /b backend: serviceName: backend-b servicePort: 8080 • hello.example/a -> backend-a:80 • hello.example/b -> backend-b:8080
  • 18. External: Ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-ingress spec: tls: - hosts: - hello.example.com secretName: hello-secret rules: - host: hello.example.com . . . apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-ingress spec: tls: - hosts: - hello.example.com secretName: hello-secret rules: - host: hello.example.com . . . apiVersion: v1 kind: Secret metadata: name: hello-secret type: Opaque data: tls.crt: <base-64 encoded crt> tls.key: <base-64 encoded key> apiVersion: v1 kind: Secret metadata: name: hello-secret type: Opaque data: tls.crt: <base-64 encoded crt> tls.key: <base-64 encoded key> New in 1.2: TLS support
  • 19. External: Ingress Features • HTTP Load Balancing • SSL Termination • Content-based routing How to use it Ingress Controller must be deployed
  • 21. External: Ingress Cloud Load Balancers • GCE HTTP Load Balancer Software Load Balancers • NGINX https://github.com/kubernetes/contrib/tree/master/ingress/controllers
  • 22. NGINX • Layer 4/Layer 7 Load Balancer • Advanced algorithms • SSL termination • Content-based routing • Limits • HTTP/2 gateway • Logging • Security • Real-time statistics* • Layer 7 Session Persistence* • Dynamic reconfiguration* * NGINX Plus Also a webserver and cache
  • 23. NGINX Ingress Controller apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-ingress spec: rules: - host: hello.example.com http: paths: - path: /a backend: serviceName: backend-a servicePort: 80 - path: /b backend: serviceName: backend-b servicePort: 8080 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: hello-ingress spec: rules: - host: hello.example.com http: paths: - path: /a backend: serviceName: backend-a servicePort: 80 - path: /b backend: serviceName: backend-b servicePort: 8080 upstream backend-a { server 10.3.246.245:80; } upstream backend-b { server 10.3.246.249:8080; } server { listen 80; server_name hello.example.com; location /a { proxy_pass http://backend-a; } location /b { proxy_pass http://backend-b; } } upstream backend-a { server 10.3.246.245:80; } upstream backend-b { server 10.3.246.249:8080; } server { listen 80; server_name hello.example.com; location /a { proxy_pass http://backend-a; } location /b { proxy_pass http://backend-b; } }
  • 24. NGINX Ingress Controller 1. Watch for Ingress resources 2. Watch for Services and Endpoints: to get IP address of a service or its endpoints in case of a headless service 3. Watch for Secrets
  • 26. NGINX Ingress Controller • NGINX Plus supports re-resolving DNS names in runtime every X seconds • Doesn’t fail when a name can’t be resolved • Simplifies implementation: no need to watch for Services and Endpoints
  • 27. NGINX Ingress Controller • As an example we took the GCE HTTP Load Balancer Ingress Controller — https://github.com/kubernetes/contrib/tree/master/ingress/controllers/ gce • Written in Go • Different implementations for NGINX and NGINX Plus • Deployed in the same container as NGINX. the Controller starts first and then launches NGINX.
  • 28. NGINX Ingress Controller • HTTP Load Balancing • SSL Termination • Content-based routing Features • Advanced algorithms • Limits • Access Control • Logging • Limits Real-time statistics (NGINX Plus) • Layer 7 Session Persistence (NGINX Plus) • Dynamic reconfiguration (NGINX Plus) • and more Features, supported by changing NGINX templates
  • 30. Demo • tea-rc and tea-svc • coffee-rc and headless coffee-svc • Ingress resource cafe-ingress with TLS • Secret cafe-secret • NGINX Plus Ingress Controller nginx-plus-ingress-rc
  • 31. NGINX Ingress Controller • Expose more NGINX features via Kubernetes resources (Annotations and Config Maps) • Make it production-ready • Improve it based on your feedback Wishlist
  • 32. The End ● Resources: http://tiny.cc/nginx-ingress ● NGINX: https://www.nginx.com/ ● My site: http://linuxjedi.co.uk/ ● Twitter: @LinuxJedi ● Freenode: LinuxJedi ● Email: linuxjedi@nginx.com