You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by rm...@apache.org on 2021/02/10 08:47:20 UTC

[flink-web] 03/03: update website

This is an automated email from the ASF dual-hosted git repository.

rmetzger pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/flink-web.git

commit bf9a62fbfaf4e48a721e3c73bd5d105b72ad71f3
Author: Robert Metzger <rm...@apache.org>
AuthorDate: Wed Feb 10 09:46:42 2021 +0100

    update website
---
 content/2021/02/10/native-k8s-with-ha.html         | 399 +++++++++++++++++++++
 content/blog/index.html                            |  38 +-
 content/blog/page10/index.html                     |  40 ++-
 content/blog/page11/index.html                     |  40 ++-
 content/blog/page12/index.html                     |  38 +-
 content/blog/page13/index.html                     |  36 +-
 content/blog/page14/index.html                     |  38 +-
 content/blog/page15/index.html                     |  25 ++
 content/blog/page2/index.html                      |  38 +-
 content/blog/page3/index.html                      |  40 ++-
 content/blog/page4/index.html                      |  43 ++-
 content/blog/page5/index.html                      |  39 +-
 content/blog/page6/index.html                      |  38 +-
 content/blog/page7/index.html                      |  38 +-
 content/blog/page8/index.html                      |  38 +-
 content/blog/page9/index.html                      |  40 ++-
 .../native-k8s-architecture.png                    | Bin 0 -> 855847 bytes
 .../native-k8s-ha-architecture.png                 | Bin 0 -> 927605 bytes
 content/index.html                                 |   6 +-
 content/zh/index.html                              |   6 +-
 20 files changed, 771 insertions(+), 209 deletions(-)

diff --git a/content/2021/02/10/native-k8s-with-ha.html b/content/2021/02/10/native-k8s-with-ha.html
new file mode 100644
index 0000000..2b15332
--- /dev/null
+++ b/content/2021/02/10/native-k8s-with-ha.html
@@ -0,0 +1,399 @@
+<!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">
+    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
+    <title>Apache Flink: How to natively deploy Flink on Kubernetes with High-Availability (HA)</title>
+    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
+    <link rel="icon" href="/favicon.ico" type="image/x-icon">
+
+    <!-- Bootstrap -->
+    <link rel="stylesheet" href="/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/css/flink.css">
+    <link rel="stylesheet" href="/css/syntax.css">
+
+    <!-- Blog RSS feed -->
+    <link href="/blog/feed.xml" rel="alternate" type="application/rss+xml" title="Apache Flink Blog: RSS feed" />
+
+    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
+    <!-- We need to load Jquery in the header for custom google analytics event tracking-->
+    <script src="/js/jquery.min.js"></script>
+
+    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
+    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
+    <!--[if lt IE 9]>
+      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
+      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
+    <![endif]-->
+  </head>
+  <body>  
+    
+
+    <!-- Main content. -->
+    <div class="container">
+    <div class="row">
+
+      
+     <div id="sidebar" class="col-sm-3">
+        
+
+<!-- Top navbar. -->
+    <nav class="navbar navbar-default">
+        <!-- The logo. -->
+        <div class="navbar-header">
+          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+            <span class="icon-bar"></span>
+          </button>
+          <div class="navbar-logo">
+            <a href="/">
+              <img alt="Apache Flink" src="/img/flink-header-logo.svg" width="147px" height="73px">
+            </a>
+          </div>
+        </div><!-- /.navbar-header -->
+
+        <!-- The navigation links. -->
+        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
+          <ul class="nav navbar-nav navbar-main">
+
+            <!-- First menu section explains visitors what Flink is -->
+
+            <!-- What is Stream Processing? -->
+            <!--
+            <li><a href="/streamprocessing1.html">What is Stream Processing?</a></li>
+            -->
+
+            <!-- What is Flink? -->
+            <li><a href="/flink-architecture.html">What is Apache Flink?</a></li>
+
+            
+
+            <!-- What is Stateful Functions? -->
+
+            <li><a href="/stateful-functions.html">What is Stateful Functions?</a></li>
+
+            <!-- Use cases -->
+            <li><a href="/usecases.html">Use Cases</a></li>
+
+            <!-- Powered by -->
+            <li><a href="/poweredby.html">Powered By</a></li>
+
+
+            &nbsp;
+            <!-- Second menu section aims to support Flink users -->
+
+            <!-- Downloads -->
+            <li><a href="/downloads.html">Downloads</a></li>
+
+            <!-- Getting Started -->
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Getting Started<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.12/try-flink/index.html" target="_blank">With Flink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.2/getting-started/project-setup.html" target="_blank">With Flink Stateful Functions <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="/training.html">Training Course</a></li>
+              </ul>
+            </li>
+
+            <!-- Documentation -->
+            <li class="dropdown">
+              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
+              <ul class="dropdown-menu">
+                <li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.12" target="_blank">Flink 1.12 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="https://ci.apache.org/projects/flink/flink-docs-master" target="_blank">Flink Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.2" target="_blank">Flink Stateful Functions 2.2 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+                <li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-master" target="_blank">Flink Stateful Functions Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+              </ul>
+            </li>
+
+            <!-- getting help -->
+            <li><a href="/gettinghelp.html">Getting Help</a></li>
+
+            <!-- Blog -->
+            <li><a href="/blog/"><b>Flink Blog</b></a></li>
+
+
+            <!-- Flink-packages -->
+            <li>
+              <a href="https://flink-packages.org" target="_blank">flink-packages.org <small><span class="glyphicon glyphicon-new-window"></span></small></a>
+            </li>
+            &nbsp;
+
+            <!-- Third menu section aim to support community and contributors -->
+
+            <!-- Community -->
+            <li><a href="/community.html">Community &amp; Project Info</a></li>
+
+            <!-- Roadmap -->
+            <li><a href="/roadmap.html">Roadmap</a></li>
+
+            <!-- Contribute -->
+            <li><a href="/contributing/how-to-contribute.html">How to Contribute</a></li>
+            
+
+            <!-- GitHub -->
+            <li>
+              <a href="https://github.com/apache/flink" target="_blank">Flink on GitHub <small><span class="glyphicon glyphicon-new-window"></span></small></a>
+            </li>
+
+            &nbsp;
+
+            <!-- Language Switcher -->
+            <li>
+              
+                
+                  <a href="/zh/2021/02/10/native-k8s-with-ha.html">中文版</a>
+                
+              
+            </li>
+
+          </ul>
+
+          <style>
+            .smalllinks:link {
+              display: inline-block !important; background: none; padding-top: 0px; padding-bottom: 0px; padding-right: 0px; min-width: 75px;
+            }
+          </style>
+
+          <ul class="nav navbar-nav navbar-bottom">
+          <hr />
+
+            <!-- Twitter -->
+            <li><a href="https://twitter.com/apacheflink" target="_blank">@ApacheFlink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+
+            <!-- Visualizer -->
+            <li class=" hidden-md hidden-sm"><a href="/visualizer/" target="_blank">Plan Visualizer <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+
+            <li >
+                  <a href="/security.html">Flink Security</a>
+            </li>
+
+          <hr />
+
+            <li><a href="https://apache.org" target="_blank">Apache Software Foundation <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
+
+            <li>
+
+              <a class="smalllinks" href="https://www.apache.org/licenses/" target="_blank">License</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
+
+              <a class="smalllinks" href="https://www.apache.org/security/" target="_blank">Security</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
+
+              <a class="smalllinks" href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
+
+              <a class="smalllinks" href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
+            </li>
+
+          </ul>
+        </div><!-- /.navbar-collapse -->
+    </nav>
+
+      </div>
+      <div class="col-sm-9">
+      <div class="row-fluid">
+  <div class="col-sm-12">
+    <div class="row">
+      <h1>How to natively deploy Flink on Kubernetes with High-Availability (HA)</h1>
+      <p><i></i></p>
+
+      <article>
+        <p>10 Feb 2021 Yang Wang </p>
+
+<p>Flink has supported resource management systems like YARN and Mesos since the early days; however, these were not designed for the fast-moving cloud-native architectures that are increasingly gaining popularity these days, or the growing need to support complex, mixed workloads (e.g. batch, streaming, deep learning, web services).
+For these reasons, more and more users are using Kubernetes to automate the deployment, scaling and management of their Flink applications.</p>
+
+<p>From release to release, the Flink community has made significant progress in <strong>integrating natively with Kubernetes</strong>, from active resource management to “Zookeeperless” High Availability (HA).
+In this blogpost, we’ll recap the technical details of deploying Flink applications natively on Kubernetes, diving deeper into Flink’s Kubernetes HA architecture. We’ll then walk you through a <a href="#example-application-cluster-with-ha"><strong>hands-on example</strong></a> of running a Flink <a href="https://ci.apache.org/projects/flink/flink-docs-stable/deployment/#application-mode">application cluster</a> on Kubernetes with HA enabled.
+We’ll end with a conclusion covering the advantages of running Flink natively on Kubernetes, and an outlook into future work.</p>
+
+<h1 id="native-flink-on-kubernetes-integration">Native Flink on Kubernetes Integration</h1>
+
+<p>Before we dive into the technical details of how the Kubernetes-based HA service works, let us briefly explain what <em>native</em> means in the context of Flink deployments on Kubernetes:</p>
+
+<ol>
+  <li>
+    <p>Flink is <strong>self-contained</strong>. There will be an embedded Kubernetes client in the Flink client, and so you will not need other external tools (<em>e.g.</em> kubectl, Kubernetes dashboard) to create a Flink cluster on Kubernetes.</p>
+  </li>
+  <li>
+    <p>The Flink client will contact the Kubernetes API server <strong>directly</strong> to create the JobManager deployment. The configuration located on the client side will be shipped to the JobManager pod, as well as the log4j and Hadoop configurations.</p>
+  </li>
+  <li>
+    <p>Flink’s ResourceManager will talk to the Kubernetes API server to <strong>allocate and release</strong> the TaskManager pods dynamically <strong>on-demand</strong>.</p>
+  </li>
+</ol>
+
+<p>All in all, this is similar to how Flink integrates with other resource management systems (<em>e.g.</em> YARN, Mesos), so it should be somewhat straightforward to integrate with Kubernetes if you’ve managed such deployments before — and especially if you already had some internal deployer for the lifecycle management of multiple Flink jobs.</p>
+
+<center>
+    <img vspace="8" style="width:75%" src="/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-architecture.png" />
+    <p>
+    <em><b>Fig. 1:</b> Architecture of Flink's native Kubernetes integration.</em>
+    </p>
+</center>
+
+<hr />
+
+<h1 id="kubernetes-high-availability-service">Kubernetes High Availability Service</h1>
+
+<p>High Availability (HA) is a common requirement when bringing Flink to production: it helps prevent a single point of failure for Flink clusters.
+Previous to the <a href="https://flink.apache.org/news/2020/12/10/release-1.12.0.html">1.12 release</a>, Flink has provided a Zookeeper HA service that has been widely used in production setups and that can be integrated in standalone cluster, YARN, or Kubernetes deployments.
+However, managing a Zookeeper cluster on Kubernetes for HA would require an additional operational cost that could be avoided because, in the end, Kubernetes also provides some public APIs for leader election and configuration storage (<em>i.e.</em> ConfigMap).
+From Flink 1.12, we leverage these features to make running a HA-configured Flink cluster on Kubernetes more convenient to users.</p>
+
+<center>
+    <img vspace="8" style="width:72%" src="/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-ha-architecture.png" />
+    <p>
+    <em><b>Fig. 2:</b> Architecture of Flink's Kubernetes High Availability (HA) service.</em>
+    </p>
+</center>
+
+<p><br />
+The above diagram shows the architecture of Flink’s Kubernetes HA service, which works as follows:</p>
+
+<ol>
+  <li>
+    <p>For the <strong>leader election</strong>, a set of eligible JobManagers is identified. They all race to declare themselves as the leader, with one eventually becoming the active leader. The active JobManager then continually “heartbeats” to renew its position as the leader. In the meantime, all other standby JobManagers periodically make new attempts to become the leader — this ensures that the JobManager could <strong>failover quickly</strong>. Different components (<em>e.g.</em> [...]
+  </li>
+  <li>
+    <p>The active leader publishes its address to the ConfigMap. It’s important to note that Flink will use the same ConfigMap for contending lock and storing the leader address. This ensures that there is <strong>no unexpected change</strong> snuck in during a periodic update.</p>
+  </li>
+  <li>
+    <p>The leader retrieval service is used to find the active leader’s address and allow the components to then <strong>register</strong> themselves. For example, TaskManagers retrieve the address of ResourceManager and JobManager for registration and to offer slots. Flink uses a <strong>Kubernetes watch</strong> in the leader retrieval service — once the content of ConfigMap changes, it usually means that the leader has changed, and so the listener can <strong>get the latest leader add [...]
+  </li>
+  <li>
+    <p>All other meta information (<em>e.g.</em> running jobs, job graphs, completed checkpoints and checkpointer counter) will be directly stored in the corresponding ConfigMaps. Only the leader can update the ConfigMap. The HA data will only be <strong>cleaned up</strong> once the Flink cluster reaches the global <strong>terminal state</strong>. Please note that only the pointers are stored in the ConfigMap; the concrete data will be stored in the DistributedStorage. This level of indi [...]
+  </li>
+</ol>
+
+<h1 id="example-application-cluster-with-ha">Example: Application Cluster with HA</h1>
+
+<p>You’ll need a running Kubernetes cluster and to get <code>kubeconfig</code> properly set to follow along.
+You can use <code>kubectl get nodes</code> to verify that you’re all set!
+In this blog post, we’re using <a href="https://minikube.sigs.k8s.io/docs/start/">minikube</a> for local testing.</p>
+
+<p><strong>1. Build a Docker image with the Flink job</strong> (<code>my-flink-job.jar</code>) <strong>baked in</strong></p>
+
+<div class="highlight"><pre><code class="language-dockerfile"><span class="k">FROM</span> flink:1.12.1
+<span class="k">RUN</span> mkdir -p <span class="nv">$FLINK_HOME</span>/usrlib
+COPY /path/of/my-flink-job.jar <span class="nv">$FLINK_HOME</span>/usrlib/my-flink-job.jar</code></pre></div>
+
+<p>Use the above Dockerfile to build a user image (<code>&lt;user-image&gt;</code>) and then push it to your remote image repository:</p>
+
+<div class="highlight"><pre><code class="language-bash"><span class="nv">$ </span>docker build -t &lt;user-image&gt; .
+
+<span class="nv">$ </span>docker push &lt;user-image&gt;</code></pre></div>
+
+<p><br />
+<strong>2. Start a Flink Application Cluster</strong></p>
+
+<div class="highlight"><pre><code class="language-bash"><span class="nv">$ </span>./bin/flink run-application <span class="se">\</span>
+    --detached <span class="se">\</span>
+    --parallelism <span class="m">4</span> <span class="se">\</span>
+    --target kubernetes-application <span class="se">\</span>
+    -Dkubernetes.cluster-id<span class="o">=</span>k8s-ha-app-1 <span class="se">\</span>
+    -Dkubernetes.container.image<span class="o">=</span>&lt;user-image&gt; <span class="se">\</span>
+    -Dkubernetes.jobmanager.cpu<span class="o">=</span>0.5 <span class="se">\</span>
+    -Dkubernetes.taskmanager.cpu<span class="o">=</span>0.5 <span class="se">\</span>
+    -Dtaskmanager.numberOfTaskSlots<span class="o">=</span><span class="m">4</span> <span class="se">\</span>
+    -Dkubernetes.rest-service.exposed.type<span class="o">=</span>NodePort <span class="se">\</span>
+    -Dhigh-availability<span class="o">=</span>org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory <span class="se">\</span>
+    -Dhigh-availability.storageDir<span class="o">=</span>s3://flink-bucket/flink-ha <span class="se">\</span>
+    -Drestart-strategy<span class="o">=</span>fixed-delay <span class="se">\</span>
+    -Drestart-strategy.fixed-delay.attempts<span class="o">=</span><span class="m">10</span> <span class="se">\</span>
+    -Dcontainerized.master.env.ENABLE_BUILT_IN_PLUGINS<span class="o">=</span>flink-s3-fs-hadoop-1.12.1.jar <span class="se">\</span>
+    -Dcontainerized.taskmanager.env.ENABLE_BUILT_IN_PLUGINS<span class="o">=</span>flink-s3-fs-hadoop-1.12.1.jar <span class="se">\</span>
+    <span class="nb">local</span>:///opt/flink/usrlib/my-flink-job.jar</code></pre></div>
+
+<p><br />
+<strong>3. Access the Flink Web UI</strong> (http://minikube-ip-address:node-port) <strong>and check that the job is running!</strong></p>
+
+<div class="highlight"><pre><code>2021-02-05 17:26:13,403 INFO  org.apache.flink.kubernetes.KubernetesClusterDescriptor      [] - Create flink application cluster k8s-ha-app-1 successfully, JobManager Web Interface: http://192.168.64.21:32388
+</code></pre></div>
+
+<p>You should be able to find a similar log in the Flink client and get the JobManager web interface URL.</p>
+
+<p><br />
+<strong>4. Kill the JobManager to simulate failure</strong></p>
+
+<div class="highlight"><pre><code class="language-bash"><span class="nv">$ </span>kubectl <span class="nb">exec</span> <span class="o">{</span>jobmanager_pod_name<span class="o">}</span> -- /bin/sh -c <span class="s2">&quot;kill 1&quot;</span></code></pre></div>
+
+<p><br />
+<strong>5. Verify that the job recovers from the latest successful checkpoint</strong></p>
+
+<p>Refresh the Flink Web UI until the new JobManager is launched, and then search for the following JobManager logs to verify that the job recovers from the latest successful checkpoint:</p>
+
+<div class="highlight"><pre><code>2021-02-05 09:44:01,636 INFO  org.apache.flink.runtime.checkpoint.CheckpointCoordinator    [] - Restoring job 00000000000000000000000000000000 from Checkpoint 101 @ 1612518074802 for 00000000000000000000000000000000 located at &lt;checkpoint-not-externally-addressable&gt;.
+</code></pre></div>
+
+<p><br />
+<strong>6. Cancel the job</strong></p>
+
+<p>The job can be cancelled through the Flink the Web UI, or using the following command:</p>
+
+<div class="highlight"><pre><code class="language-bash"><span class="nv">$ </span>./bin/flink cancel --target kubernetes-application -Dkubernetes.cluster-id<span class="o">=</span>&lt;ClusterID&gt; &lt;JobID&gt;</code></pre></div>
+
+<p>When the job is cancelled, all the Kubernetes resources created by Flink (e.g. JobManager deployment, TaskManager pods, service, Flink configuration ConfigMap, leader-related ConfigMaps) will be deleted automatically.</p>
+
+<h1 id="conclusion">Conclusion</h1>
+
+<p>The native Kubernetes integration was first introduced in Flink 1.10, abstracting a lot of the complexities of hosting, configuring, managing and operating Flink clusters in cloud-native environments.
+After three major releases, the community has made great progress in supporting multiple deployment modes (i.e. session and application) and an alternative HA setup that doesn’t depend on Zookeeper.</p>
+
+<p>Compared with <a href="https://ci.apache.org/projects/flink/flink-docs-master/deployment/resource-providers/standalone/kubernetes.html">standalone</a> Kubernetes deployments, the native integration is more <strong>user-friendly</strong> and requires less upfront knowledge about Kubernetes.
+Given that Flink is now aware of the underlying Kubernetes cluster, it also can benefit from dynamic resource allocation and make <strong>more efficient use of Kubernetes cluster resources</strong>.
+The next building block to deepen Flink’s native integration with Kubernetes is the pod template (<a href="https://issues.apache.org/jira/browse/FLINK-15656">FLINK-15656</a>), which will greatly enhance the flexibility of using advanced Kubernetes features (<em>e.g.</em> volumes, init container, sidecar container).
+This work is already in progress and will be added in the upcoming 1.13 release!</p>
+
+      </article>
+    </div>
+
+    <div class="row">
+      <div id="disqus_thread"></div>
+      <script type="text/javascript">
+        /* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
+        var disqus_shortname = 'stratosphere-eu'; // required: replace example with your forum shortname
+
+        /* * * DON'T EDIT BELOW THIS LINE * * */
+        (function() {
+            var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
+            dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+             (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
+        })();
+      </script>
+    </div>
+  </div>
+</div>
+      </div>
+    </div>
+
+    <hr />
+
+    <div class="row">
+      <div class="footer text-center col-sm-12">
+        <p>Copyright © 2014-2019 <a href="http://apache.org">The Apache Software Foundation</a>. All Rights Reserved.</p>
+        <p>Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation.</p>
+        <p><a href="/privacy-policy.html">Privacy Policy</a> &middot; <a href="/blog/feed.xml">RSS feed</a></p>
+      </div>
+    </div>
+    </div><!-- /.container -->
+
+    <!-- Include all compiled plugins (below), or include individual files as needed -->
+    <script src="/js/jquery.matchHeight-min.js"></script>
+    <script src="/js/bootstrap.min.js"></script>
+    <script src="/js/codetabs.js"></script>
+    <script src="/js/stickysidebar.js"></script>
+
+    <!-- Google Analytics -->
+    <script>
+      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+      ga('create', 'UA-52545728-1', 'auto');
+      ga('send', 'pageview');
+    </script>
+  </body>
+</html>
diff --git a/content/blog/index.html b/content/blog/index.html
index 69896b3..fff33c9 100644
--- a/content/blog/index.html
+++ b/content/blog/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></h2>
+
+      <p>10 Feb 2021
+       Yang Wang </p>
+
+      <p>Kubernetes provides built-in functionalities that Flink can leverage for JobManager failover. In Flink 1.12 (FLIP-144), the community implemented a Kubernetes High Availability (HA) service as an alternative to ZooKeeper for highly available production setups. In this blogpost, we will have a close look at how to deploy Flink applications natively on Kubernetes cluster with HA.</p>
+
+      <p><a href="/2021/02/10/native-k8s-with-ha.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></h2>
 
       <p>29 Jan 2021
@@ -325,21 +338,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/11/11/release-statefun-2.2.1.html">Stateful Functions 2.2.1 Release Announcement</a></h2>
-
-      <p>11 Nov 2020
-       Tzu-Li (Gordon) Tai (<a href="https://twitter.com/tzulitai">@tzulitai</a>)</p>
-
-      <p><p>The Apache Flink community released the first bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.1.</p>
-
-</p>
-
-      <p><a href="/news/2020/11/11/release-statefun-2.2.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -372,6 +370,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page10/index.html b/content/blog/page10/index.html
index 58d1c68..7a72009 100644
--- a/content/blog/page10/index.html
+++ b/content/blog/page10/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2018/02/15/release-1.4.1.html">Apache Flink 1.4.1 Released</a></h2>
+
+      <p>15 Feb 2018
+      </p>
+
+      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.4 series.</p>
+
+</p>
+
+      <p><a href="/news/2018/02/15/release-1.4.1.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/features/2018/01/30/incremental-checkpointing.html">Managing Large State in Apache Flink: An Intro to Incremental Checkpointing</a></h2>
 
       <p>30 Jan 2018
@@ -334,21 +349,6 @@ what’s coming in Flink 1.4.0 as well as a preview of what the Flink community
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2017/04/26/release-1.2.1.html">Apache Flink 1.2.1 Released</a></h2>
-
-      <p>26 Apr 2017
-      </p>
-
-      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.2 series.</p>
-
-</p>
-
-      <p><a href="/news/2017/04/26/release-1.2.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -381,6 +381,16 @@ what’s coming in Flink 1.4.0 as well as a preview of what the Flink community
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page11/index.html b/content/blog/page11/index.html
index 00cb078..9d640d9 100644
--- a/content/blog/page11/index.html
+++ b/content/blog/page11/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2017/04/26/release-1.2.1.html">Apache Flink 1.2.1 Released</a></h2>
+
+      <p>26 Apr 2017
+      </p>
+
+      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.2 series.</p>
+
+</p>
+
+      <p><a href="/news/2017/04/26/release-1.2.1.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2017/04/04/dynamic-tables.html">Continuous Queries on Dynamic Tables</a></h2>
 
       <p>04 Apr 2017 by Fabian Hueske, Shaoxuan Wang, and Xiaowei Jiang
@@ -328,21 +343,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2016/08/11/release-1.1.1.html">Flink 1.1.1 Released</a></h2>
-
-      <p>11 Aug 2016
-      </p>
-
-      <p><p>Today, the Flink community released Flink version 1.1.1.</p>
-
-</p>
-
-      <p><a href="/news/2016/08/11/release-1.1.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -375,6 +375,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page12/index.html b/content/blog/page12/index.html
index a135625..cbcb757 100644
--- a/content/blog/page12/index.html
+++ b/content/blog/page12/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2016/08/11/release-1.1.1.html">Flink 1.1.1 Released</a></h2>
+
+      <p>11 Aug 2016
+      </p>
+
+      <p><p>Today, the Flink community released Flink version 1.1.1.</p>
+
+</p>
+
+      <p><a href="/news/2016/08/11/release-1.1.1.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2016/08/08/release-1.1.0.html">Announcing Apache Flink 1.1.0</a></h2>
 
       <p>08 Aug 2016
@@ -332,19 +347,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2015/12/18/a-year-in-review.html">Flink 2015: A year in review, and a lookout to 2016</a></h2>
-
-      <p>18 Dec 2015 by Robert Metzger (<a href="https://twitter.com/">@rmetzger_</a>)
-      </p>
-
-      <p><p>With 2015 ending, we thought that this would be good time to reflect on the amazing work done by the Flink community over this past year, and how much this community has grown.</p></p>
-
-      <p><a href="/news/2015/12/18/a-year-in-review.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -377,6 +379,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page13/index.html b/content/blog/page13/index.html
index 3b7a1d9..1405a23 100644
--- a/content/blog/page13/index.html
+++ b/content/blog/page13/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2015/12/18/a-year-in-review.html">Flink 2015: A year in review, and a lookout to 2016</a></h2>
+
+      <p>18 Dec 2015 by Robert Metzger (<a href="https://twitter.com/">@rmetzger_</a>)
+      </p>
+
+      <p><p>With 2015 ending, we thought that this would be good time to reflect on the amazing work done by the Flink community over this past year, and how much this community has grown.</p></p>
+
+      <p><a href="/news/2015/12/18/a-year-in-review.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2015/12/11/storm-compatibility.html">Storm Compatibility in Apache Flink: How to run existing Storm topologies on Flink</a></h2>
 
       <p>11 Dec 2015 by Matthias J. Sax (<a href="https://twitter.com/">@MatthiasJSax</a>)
@@ -338,19 +351,6 @@ vertex-centric or gather-sum-apply to Flink dataflows.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2015/05/14/Community-update-April.html">April 2015 in the Flink community</a></h2>
-
-      <p>14 May 2015 by Kostas Tzoumas (<a href="https://twitter.com/">@kostas_tzoumas</a>)
-      </p>
-
-      <p><p>The monthly update from the Flink community. Including the availability of a new preview release, lots of meetups and conference talks and a great interview about Flink.</p></p>
-
-      <p><a href="/news/2015/05/14/Community-update-April.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -383,6 +383,16 @@ vertex-centric or gather-sum-apply to Flink dataflows.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page14/index.html b/content/blog/page14/index.html
index ba0943c..14b18af 100644
--- a/content/blog/page14/index.html
+++ b/content/blog/page14/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2015/05/14/Community-update-April.html">April 2015 in the Flink community</a></h2>
+
+      <p>14 May 2015 by Kostas Tzoumas (<a href="https://twitter.com/">@kostas_tzoumas</a>)
+      </p>
+
+      <p><p>The monthly update from the Flink community. Including the availability of a new preview release, lots of meetups and conference talks and a great interview about Flink.</p></p>
+
+      <p><a href="/news/2015/05/14/Community-update-April.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2015/05/11/Juggling-with-Bits-and-Bytes.html">Juggling with Bits and Bytes</a></h2>
 
       <p>11 May 2015 by Fabian Hüske (<a href="https://twitter.com/">@fhueske</a>)
@@ -344,21 +357,6 @@ and offers a new API including definition of flexible windows.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2014/11/18/hadoop-compatibility.html">Hadoop Compatibility in Flink</a></h2>
-
-      <p>18 Nov 2014 by Fabian Hüske (<a href="https://twitter.com/">@fhueske</a>)
-      </p>
-
-      <p><p><a href="http://hadoop.apache.org">Apache Hadoop</a> is an industry standard for scalable analytical data processing. Many data analysis applications have been implemented as Hadoop MapReduce jobs and run in clusters around the world. Apache Flink can be an alternative to MapReduce and improves it in many dimensions. Among other features, Flink provides much better performance and offers APIs in Java and Scala, which are very easy to use. Similar to Hadoop, Flink’s APIs provi [...]
-
-</p>
-
-      <p><a href="/news/2014/11/18/hadoop-compatibility.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -391,6 +389,16 @@ and offers a new API including definition of flexible windows.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page15/index.html b/content/blog/page15/index.html
index 5cb625e..a1942ef 100644
--- a/content/blog/page15/index.html
+++ b/content/blog/page15/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2014/11/18/hadoop-compatibility.html">Hadoop Compatibility in Flink</a></h2>
+
+      <p>18 Nov 2014 by Fabian Hüske (<a href="https://twitter.com/">@fhueske</a>)
+      </p>
+
+      <p><p><a href="http://hadoop.apache.org">Apache Hadoop</a> is an industry standard for scalable analytical data processing. Many data analysis applications have been implemented as Hadoop MapReduce jobs and run in clusters around the world. Apache Flink can be an alternative to MapReduce and improves it in many dimensions. Among other features, Flink provides much better performance and offers APIs in Java and Scala, which are very easy to use. Similar to Hadoop, Flink’s APIs provi [...]
+
+</p>
+
+      <p><a href="/news/2014/11/18/hadoop-compatibility.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2014/11/04/release-0.7.0.html">Apache Flink 0.7.0 available</a></h2>
 
       <p>04 Nov 2014
@@ -295,6 +310,16 @@ academic and open source project that Flink originates from.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page2/index.html b/content/blog/page2/index.html
index 3a0fce5..3f06a00 100644
--- a/content/blog/page2/index.html
+++ b/content/blog/page2/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/11/11/release-statefun-2.2.1.html">Stateful Functions 2.2.1 Release Announcement</a></h2>
+
+      <p>11 Nov 2020
+       Tzu-Li (Gordon) Tai (<a href="https://twitter.com/tzulitai">@tzulitai</a>)</p>
+
+      <p><p>The Apache Flink community released the first bugfix release of the Stateful Functions (StateFun) 2.2 series, version 2.2.1.</p>
+
+</p>
+
+      <p><a href="/news/2020/11/11/release-statefun-2.2.1.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1.html">From Aligned to Unaligned Checkpoints - Part 1: Checkpoints, Alignment, and Backpressure</a></h2>
 
       <p>15 Oct 2020
@@ -329,19 +344,6 @@ as well as increased observability for operational purposes.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/08/06/external-resource.html">Accelerating your workload with GPU and other external resources</a></h2>
-
-      <p>06 Aug 2020
-       Yangze Guo </p>
-
-      <p>This post introduces the new External Resource Framework in Flink 1.11 and take GPU as an example to show how to accelerate your workload with external resources.</p>
-
-      <p><a href="/news/2020/08/06/external-resource.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -374,6 +376,16 @@ as well as increased observability for operational purposes.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page3/index.html b/content/blog/page3/index.html
index 6ca5f5d..f7026a2 100644
--- a/content/blog/page3/index.html
+++ b/content/blog/page3/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/08/06/external-resource.html">Accelerating your workload with GPU and other external resources</a></h2>
+
+      <p>06 Aug 2020
+       Yangze Guo </p>
+
+      <p>This post introduces the new External Resource Framework in Flink 1.11 and take GPU as an example to show how to accelerate your workload with external resources.</p>
+
+      <p><a href="/news/2020/08/06/external-resource.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/2020/08/04/pyflink-pandas-udf-support-flink.html">PyFlink: The integration of Pandas into PyFlink</a></h2>
 
       <p>04 Aug 2020
@@ -331,23 +344,6 @@ perform streaming data visualization via Flink on Zeppelin and how to use Apache
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/06/15/flink-on-zeppelin-part1.html">Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 1</a></h2>
-
-      <p>15 Jun 2020
-       Jeff Zhang (<a href="https://twitter.com/zjffdu">@zjffdu</a>)</p>
-
-      <p><p>The latest release of <a href="https://zeppelin.apache.org/">Apache Zeppelin</a> comes with a redesigned interpreter for Apache Flink (version Flink 1.10+ is only supported moving forward) 
-that allows developers to use Flink directly on Zeppelin notebooks for interactive data analysis. I wrote 2 posts about how to use Flink in Zeppelin. This is part-1 where I explain how the Flink interpreter in Zeppelin works, 
-and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</p>
-
-</p>
-
-      <p><a href="/news/2020/06/15/flink-on-zeppelin-part1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -380,6 +376,16 @@ and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page4/index.html b/content/blog/page4/index.html
index ab218dd..b3cd7c8 100644
--- a/content/blog/page4/index.html
+++ b/content/blog/page4/index.html
@@ -201,6 +201,23 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/06/15/flink-on-zeppelin-part1.html">Flink on Zeppelin Notebooks for Interactive Data Analysis - Part 1</a></h2>
+
+      <p>15 Jun 2020
+       Jeff Zhang (<a href="https://twitter.com/zjffdu">@zjffdu</a>)</p>
+
+      <p><p>The latest release of <a href="https://zeppelin.apache.org/">Apache Zeppelin</a> comes with a redesigned interpreter for Apache Flink (version Flink 1.10+ is only supported moving forward) 
+that allows developers to use Flink directly on Zeppelin notebooks for interactive data analysis. I wrote 2 posts about how to use Flink in Zeppelin. This is part-1 where I explain how the Flink interpreter in Zeppelin works, 
+and provide a tutorial for running Streaming ETL with Flink on Zeppelin.</p>
+
+</p>
+
+      <p><a href="/news/2020/06/15/flink-on-zeppelin-part1.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/06/11/community-update.html">Flink Community Update - June'20</a></h2>
 
       <p>11 Jun 2020
@@ -323,22 +340,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/04/07/release-statefun-2.0.0.html">Stateful Functions 2.0 - An Event-driven Database on Apache Flink</a></h2>
-
-      <p>07 Apr 2020
-       Stephan Ewen (<a href="https://twitter.com/stephanewen">@stephanewen</a>)</p>
-
-      <p><p>Today, we are announcing the release of Stateful Functions (StateFun) 2.0 — the first release of Stateful Functions as part of the Apache Flink project.
-This release marks a big milestone: Stateful Functions 2.0 is not only an API update, but the <strong>first version of an event-driven database</strong> that is built on Apache Flink.</p>
-
-</p>
-
-      <p><a href="/news/2020/04/07/release-statefun-2.0.0.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -371,6 +372,16 @@ This release marks a big milestone: Stateful Functions 2.0 is not only an API up
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page5/index.html b/content/blog/page5/index.html
index 7b9fa41..5ebd972 100644
--- a/content/blog/page5/index.html
+++ b/content/blog/page5/index.html
@@ -201,6 +201,22 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/04/07/release-statefun-2.0.0.html">Stateful Functions 2.0 - An Event-driven Database on Apache Flink</a></h2>
+
+      <p>07 Apr 2020
+       Stephan Ewen (<a href="https://twitter.com/stephanewen">@stephanewen</a>)</p>
+
+      <p><p>Today, we are announcing the release of Stateful Functions (StateFun) 2.0 — the first release of Stateful Functions as part of the Apache Flink project.
+This release marks a big milestone: Stateful Functions 2.0 is not only an API update, but the <strong>first version of an event-driven database</strong> that is built on Apache Flink.</p>
+
+</p>
+
+      <p><a href="/news/2020/04/07/release-statefun-2.0.0.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2020/04/01/community-update.html">Flink Community Update - April'20</a></h2>
 
       <p>01 Apr 2020
@@ -323,19 +339,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2020/01/15/demo-fraud-detection.html">Advanced Flink Application Patterns Vol.1: Case Study of a Fraud Detection System</a></h2>
-
-      <p>15 Jan 2020
-       Alexander Fedulov (<a href="https://twitter.com/alex_fedulov">@alex_fedulov</a>)</p>
-
-      <p>In this series of blog posts you will learn about three powerful Flink patterns for building streaming applications.</p>
-
-      <p><a href="/news/2020/01/15/demo-fraud-detection.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -368,6 +371,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page6/index.html b/content/blog/page6/index.html
index 22a494e..fb2d032 100644
--- a/content/blog/page6/index.html
+++ b/content/blog/page6/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2020/01/15/demo-fraud-detection.html">Advanced Flink Application Patterns Vol.1: Case Study of a Fraud Detection System</a></h2>
+
+      <p>15 Jan 2020
+       Alexander Fedulov (<a href="https://twitter.com/alex_fedulov">@alex_fedulov</a>)</p>
+
+      <p>In this series of blog posts you will learn about three powerful Flink patterns for building streaming applications.</p>
+
+      <p><a href="/news/2020/01/15/demo-fraud-detection.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2019/12/11/release-1.8.3.html">Apache Flink 1.8.3 Released</a></h2>
 
       <p>11 Dec 2019
@@ -326,21 +339,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2019/07/02/release-1.8.1.html">Apache Flink 1.8.1 Released</a></h2>
-
-      <p>02 Jul 2019
-       Jincheng Sun (<a href="https://twitter.com/sunjincheng121">@sunjincheng121</a>)</p>
-
-      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.8 series.</p>
-
-</p>
-
-      <p><a href="/news/2019/07/02/release-1.8.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -373,6 +371,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page7/index.html b/content/blog/page7/index.html
index 30400f2..33ac7d0 100644
--- a/content/blog/page7/index.html
+++ b/content/blog/page7/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2019/07/02/release-1.8.1.html">Apache Flink 1.8.1 Released</a></h2>
+
+      <p>02 Jul 2019
+       Jincheng Sun (<a href="https://twitter.com/sunjincheng121">@sunjincheng121</a>)</p>
+
+      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.8 series.</p>
+
+</p>
+
+      <p><a href="/news/2019/07/02/release-1.8.1.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/2019/06/26/broadcast-state.html">A Practical Guide to Broadcast State in Apache Flink</a></h2>
 
       <p>26 Jun 2019
@@ -325,19 +340,6 @@ for more details.</p>
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2019/02/25/monitoring-best-practices.html">Monitoring Apache Flink Applications 101</a></h2>
-
-      <p>25 Feb 2019
-       Konstantin Knauf (<a href="https://twitter.com/snntrable">@snntrable</a>)</p>
-
-      <p>The monitoring of business-critical applications is a crucial aspect of a production deployment. It ensures that any degradation or downtime is immediately identified and can be resolved as quickly as possible. In this post, we discuss the most important metrics that indicate healthy Flink applications.</p>
-
-      <p><a href="/news/2019/02/25/monitoring-best-practices.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -370,6 +372,16 @@ for more details.</p>
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page8/index.html b/content/blog/page8/index.html
index 453472c..8c51372 100644
--- a/content/blog/page8/index.html
+++ b/content/blog/page8/index.html
@@ -201,6 +201,19 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2019/02/25/monitoring-best-practices.html">Monitoring Apache Flink Applications 101</a></h2>
+
+      <p>25 Feb 2019
+       Konstantin Knauf (<a href="https://twitter.com/snntrable">@snntrable</a>)</p>
+
+      <p>The monitoring of business-critical applications is a crucial aspect of a production deployment. It ensures that any degradation or downtime is immediately identified and can be resolved as quickly as possible. In this post, we discuss the most important metrics that indicate healthy Flink applications.</p>
+
+      <p><a href="/news/2019/02/25/monitoring-best-practices.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2019/02/25/release-1.6.4.html">Apache Flink 1.6.4 Released</a></h2>
 
       <p>25 Feb 2019
@@ -335,21 +348,6 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/09/20/release-1.6.1.html">Apache Flink 1.6.1 Released</a></h2>
-
-      <p>20 Sep 2018
-      </p>
-
-      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.6 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/09/20/release-1.6.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -382,6 +380,16 @@ Please check the <a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/blog/page9/index.html b/content/blog/page9/index.html
index 5e059d2..920c5a6 100644
--- a/content/blog/page9/index.html
+++ b/content/blog/page9/index.html
@@ -201,6 +201,21 @@
     <!-- Blog posts -->
     
     <article>
+      <h2 class="blog-title"><a href="/news/2018/09/20/release-1.6.1.html">Apache Flink 1.6.1 Released</a></h2>
+
+      <p>20 Sep 2018
+      </p>
+
+      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.6 series.</p>
+
+</p>
+
+      <p><a href="/news/2018/09/20/release-1.6.1.html">Continue reading &raquo;</a></p>
+    </article>
+
+    <hr>
+    
+    <article>
       <h2 class="blog-title"><a href="/news/2018/09/20/release-1.5.4.html">Apache Flink 1.5.4 Released</a></h2>
 
       <p>20 Sep 2018
@@ -333,21 +348,6 @@
 
     <hr>
     
-    <article>
-      <h2 class="blog-title"><a href="/news/2018/02/15/release-1.4.1.html">Apache Flink 1.4.1 Released</a></h2>
-
-      <p>15 Feb 2018
-      </p>
-
-      <p><p>The Apache Flink community released the first bugfix version of the Apache Flink 1.4 series.</p>
-
-</p>
-
-      <p><a href="/news/2018/02/15/release-1.4.1.html">Continue reading &raquo;</a></p>
-    </article>
-
-    <hr>
-    
 
     <!-- Pagination links -->
     
@@ -380,6 +380,16 @@
 
     <ul id="markdown-toc">
       
+      <li><a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></li>
+
+      
+        
+      
+    
+      
+      
+
+      
       <li><a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></li>
 
       
diff --git a/content/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-architecture.png b/content/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-architecture.png
new file mode 100644
index 0000000..448edb7
Binary files /dev/null and b/content/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-architecture.png differ
diff --git a/content/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-ha-architecture.png b/content/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-ha-architecture.png
new file mode 100644
index 0000000..b63634f
Binary files /dev/null and b/content/img/blog/2021-02-10-native-k8s-with-ha/native-k8s-ha-architecture.png differ
diff --git a/content/index.html b/content/index.html
index d981116..3b37dee 100644
--- a/content/index.html
+++ b/content/index.html
@@ -573,6 +573,9 @@
 
   <dl>
       
+        <dt> <a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></dt>
+        <dd>Kubernetes provides built-in functionalities that Flink can leverage for JobManager failover. In Flink 1.12 (FLIP-144), the community implemented a Kubernetes High Availability (HA) service as an alternative to ZooKeeper for highly available production setups. In this blogpost, we will have a close look at how to deploy Flink applications natively on Kubernetes cluster with HA.</dd>
+      
         <dt> <a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></dt>
         <dd><p>The Apache Flink community released the third bugfix version of the Apache Flink 1.10 series.</p>
 
@@ -588,9 +591,6 @@
       
         <dt> <a href="/news/2021/01/11/batch-fine-grained-fault-tolerance.html">Exploring fine-grained recovery of bounded data sets on Flink</a></dt>
         <dd>Apache Flink 1.9 introduced fine-grained recovery through FLIP-1. The Flink APIs that are made for bounded workloads benefit from this change by individually recovering failed operators, re-using results from the previous processing step. This blog post gives an overview over these changes and evaluates their effectiveness.</dd>
-      
-        <dt> <a href="/2021/01/07/pulsar-flink-connector-270.html">What's New in the Pulsar Flink Connector 2.7.0</a></dt>
-        <dd>With the unification of batch and streaming regarded as the future in data processing, the Pulsar Flink Connector provides an ideal solution for unified batch and stream processing with Apache Pulsar and Apache Flink. The Pulsar Flink Connector 2.7.0 supports features in Pulsar 2.7 and Flink 1.12 and is fully compatible with Flink's data format. The Pulsar Flink Connector 2.7.0 will be contributed to the Flink repository soon and the contribution process is ongoing.</dd>
     
   </dl>
 
diff --git a/content/zh/index.html b/content/zh/index.html
index c62fe7a..f15e8ef 100644
--- a/content/zh/index.html
+++ b/content/zh/index.html
@@ -570,6 +570,9 @@
 
   <dl>
       
+        <dt> <a href="/2021/02/10/native-k8s-with-ha.html">How to natively deploy Flink on Kubernetes with High-Availability (HA)</a></dt>
+        <dd>Kubernetes provides built-in functionalities that Flink can leverage for JobManager failover. In Flink 1.12 (FLIP-144), the community implemented a Kubernetes High Availability (HA) service as an alternative to ZooKeeper for highly available production setups. In this blogpost, we will have a close look at how to deploy Flink applications natively on Kubernetes cluster with HA.</dd>
+      
         <dt> <a href="/news/2021/01/29/release-1.10.3.html">Apache Flink 1.10.3 Released</a></dt>
         <dd><p>The Apache Flink community released the third bugfix version of the Apache Flink 1.10 series.</p>
 
@@ -585,9 +588,6 @@
       
         <dt> <a href="/news/2021/01/11/batch-fine-grained-fault-tolerance.html">Exploring fine-grained recovery of bounded data sets on Flink</a></dt>
         <dd>Apache Flink 1.9 introduced fine-grained recovery through FLIP-1. The Flink APIs that are made for bounded workloads benefit from this change by individually recovering failed operators, re-using results from the previous processing step. This blog post gives an overview over these changes and evaluates their effectiveness.</dd>
-      
-        <dt> <a href="/2021/01/07/pulsar-flink-connector-270.html">What's New in the Pulsar Flink Connector 2.7.0</a></dt>
-        <dd>With the unification of batch and streaming regarded as the future in data processing, the Pulsar Flink Connector provides an ideal solution for unified batch and stream processing with Apache Pulsar and Apache Flink. The Pulsar Flink Connector 2.7.0 supports features in Pulsar 2.7 and Flink 1.12 and is fully compatible with Flink's data format. The Pulsar Flink Connector 2.7.0 will be contributed to the Flink repository soon and the contribution process is ongoing.</dd>
     
   </dl>