-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathindex.html
312 lines (199 loc) · 13.3 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<meta name="author" content="Cloudnative Labs"/>
<meta name="twitter:card" content="summary" />
<meta name="twitter:site" content="@cloudnativelabs" />
<meta name="twitter:creator" content="@cloudnativelabs" />
<meta property="og:url" content="https://cloudnativelabs.github.io/" />
<meta property="og:type" content="website" />
<meta property="og:site_name" content="" />
<meta name="generator" content="Hugo 0.21" />
<link rel="canonical" href="https://cloudnativelabs.github.io/" />
<link rel="alternate" href="https://cloudnativelabs.github.io/index.xml" type="application/rss+xml" title="">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css" integrity="sha384-wITovz90syo1dJWVh32uuETPVEtGigN07tkttEqPv+uR2SE/mbQcG7ATL28aI9H0" crossorigin="anonymous">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<link rel="stylesheet" href="https://cloudnativelabs.github.io/css/main.css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Lora:400,700,400italic,700italic" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800" />
<link rel="stylesheet" href="https://cloudnativelabs.github.io/css/pygment_highlights.css" />
<link rel="stylesheet" href="https://cloudnativelabs.github.io/css/highlight.min.css" />
<script>
window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
ga('create', 'UA-97817717-1', 'auto');
ga('send', 'pageview');
</script>
<script async src='//www.google-analytics.com/analytics.js'></script>
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top navbar-custom">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#main-navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="https://cloudnativelabs.github.io"></a>
</div>
<div class="collapse navbar-collapse" id="main-navbar">
<ul class="nav navbar-nav navbar-right">
<li>
<a title="Blog" href="/">Blog</a>
</li>
</ul>
</div>
<div class="avatar-container">
<div class="avatar-img-border">
</div>
</div>
</div>
</nav>
<div class="intro-header"></div>
<div role="main" class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="posts-list">
<article class="post-preview">
<a href="https://cloudnativelabs.github.io/post/2017-11-01-kube-high-available-ingress/">
<h2 class="post-title">Kube-router: Highly-available and scalable ingress for baremetal Kubernetes clusters</h2>
</a>
<span class="post-meta">
Posted on November 1, 2017
</span>
<div class="post-entry">
Over the years many webscale companies have designed massivley scalable and highly available services using loadbalancer solutions based on commodity Linux servers. Traditional middleboxes are completely replaced with software loadbalancers. In this blog we will see common building blocks across Microsoft’s Ananta, Google’s Maglev, Facebook’s Shiv, Github GLB and Yahoo L3 DSR. We will see how Kube-router has implemented some of these building blocks for Kuberentes, and how you can leverage them to build a highly-available and scalable ingress in bare-metal deployments.
<a href="https://cloudnativelabs.github.io/post/2017-11-01-kube-high-available-ingress/" class="post-read-more">[Read More]</a>
</div>
</article>
<article class="post-preview">
<a href="https://cloudnativelabs.github.io/post/2017-05-22-kube-pod-networking/">
<h2 class="post-title">Kube-router: Kubernetes pod networking and beyond with BGP</h2>
</a>
<span class="post-meta">
Posted on May 22, 2017
</span>
<div class="post-entry">
In earlier blog on Kubernetes networking we have seen how Kubernetes is non-prescriptive of how the network should be designed for running pods. There can be multiple way to design the network that meets Kubernetes networking requirements with varying degree of complexity, flexibility. In this blog we will see how Kube-router implements a pure L3 solution for cross node pod-to-pod networking using BGP and see how use of BGP gives unique advantage which enables pod IP and Kubernetes service cluster IP to be routable from out side of the cluster.
<a href="https://cloudnativelabs.github.io/post/2017-05-22-kube-pod-networking/" class="post-read-more">[Read More]</a>
</div>
</article>
<article class="post-preview">
<a href="https://cloudnativelabs.github.io/post/2017-05-10-kube-network-service-proxy/">
<h2 class="post-title">Kube-router: Kubernetes network services proxy with IPVS/LVS</h2>
</a>
<span class="post-meta">
Posted on May 12, 2017
</span>
<div class="post-entry">
A Kubernetes Service is an abstraction which groups a logical set of Pods that provide the same functionality. A service in Kubernetes can be of different types, of which ‘ClusterIP’ and ‘NodePort’ types forms basis for service discovery and load balancing. Both of the service types requires a service proxy running on each of the cluster node. Kubernetes has an implementation of service proxy ‘Kube-proxy’ based on iptables. While Kube-proxy provides out-of-box solution its not necessarily an optimal solution for all users.
<a href="https://cloudnativelabs.github.io/post/2017-05-10-kube-network-service-proxy/" class="post-read-more">[Read More]</a>
</div>
</article>
<article class="post-preview">
<a href="https://cloudnativelabs.github.io/post/2017-05-1-kube-network-policies/">
<h2 class="post-title">Kube-router: Enforcing Kubernetes network policies with iptables and ipset</h2>
</a>
<span class="post-meta">
Posted on May 3, 2017
</span>
<div class="post-entry">
Network policies in Kubernetes provides primary means to secure a pod by exerting control over who can connect to pod. Intent of this blog post is not to describe what network policies are but to show how iptables on the the cluster nodes can be used to build a distributed firewall solution that enforces network policies in Kubernetes clusters. This write up draws up from the insights of implementing a network policy controller in Kube-router.
<a href="https://cloudnativelabs.github.io/post/2017-05-1-kube-network-policies/" class="post-read-more">[Read More]</a>
</div>
</article>
<article class="post-preview">
<a href="https://cloudnativelabs.github.io/post/2017-04-19-kube-router/">
<h2 class="post-title">Kube-router</h2>
</a>
<span class="post-meta">
Posted on April 19, 2017
</span>
<div class="post-entry">
In previous blog we went over the Kubernetes service discovery, load balancing and network policies. In this blog we will use Kube-router a distributed load balancer, firewall and router for Kubernetes and demonstrate the Kubernetes networking constructs in action.
We will setup a Kubernetes cluster from scratch and use kube-router instead of kube-proxy and demonstrate how kube-router provides a solution for cross-node pod-to-pod networking, provides a service proxy on each node and load balances the traffic.
<a href="https://cloudnativelabs.github.io/post/2017-04-19-kube-router/" class="post-read-more">[Read More]</a>
</div>
</article>
<article class="post-preview">
<a href="https://cloudnativelabs.github.io/post/2017-04-18-kubernetes-networking/">
<h2 class="post-title">Kubernetes Networking</h2>
</a>
<span class="post-meta">
Posted on April 18, 2017
</span>
<div class="post-entry">
This article gives brief overview of fundamnetal networking concepts in Kubernetes.
First thing one notices with Kubernetes in comparision to other container orchestration platforms is container itself is not a first class construct in Kubernetes. Containers always exists in the context of pod. So first lets understand the basic Kubernetes building block Pod that consumes network. A pod is a group of one or more containers that are always co-located and co-scheduled, and run in a shared context.
<a href="https://cloudnativelabs.github.io/post/2017-04-18-kubernetes-networking/" class="post-read-more">[Read More]</a>
</div>
</article>
</div>
</div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<ul class="list-inline text-center footer-links">
<li>
<a href="mailto:info@cloudnativelabs.net" title="Email me">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-envelope fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a href="https://github.com/cloudnativelabs" title="GitHub">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-github fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a href="https://twitter.com/cloudnativelabs" title="Twitter">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-twitter fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
<li>
<a href="https://cloudnativelabs.github.io/index.xml" title="RSS">
<span class="fa-stack fa-lg">
<i class="fa fa-circle fa-stack-2x"></i>
<i class="fa fa-rss fa-stack-1x fa-inverse"></i>
</span>
</a>
</li>
</ul>
<p class="credits copyright text-muted">
Cloudnative Labs
•
2017
</p>
<p class="credits theme-by text-muted">
<a href="http://gohugo.io">Hugo v0.21</a> powered • Theme by <a href="http://deanattali.com/beautiful-jekyll/">Beautiful Jekyll</a> adapted to <a href="https://github.com/halogenica/beautifulhugo">Beautiful Hugo</a>
</p>
</div>
</div>
</div>
</footer>
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.js" integrity="sha384-/y1Nn9+QQAipbNQWU65krzJralCnuOasHncUFXGkdwntGeSvQicrYkiUBwsgUqc1" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/contrib/auto-render.min.js" integrity="sha384-dq1/gEHSxPZQ7DdrM82ID4YVol9BYyU7GbWlIwnwyPzotpoc57wDw/guX8EaYGPx" crossorigin="anonymous"></script>
<script src="https://code.jquery.com/jquery-1.12.4.min.js" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script src="https://cloudnativelabs.github.io/js/main.js"></script>
<script src="https://cloudnativelabs.github.io/js/highlight.min.js"></script>
<script> hljs.initHighlightingOnLoad(); </script>
<script> renderMathInElement(document.body); </script>
</body>
</html>