<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>K8e on Zwindler's Reflection</title><link>https://blog.zwindler.fr/en/tags/k8e/</link><description>Recent content in K8e on Zwindler's Reflection</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>Licensed under CC BY-SA 4.0</copyright><lastBuildDate>Fri, 19 Sep 2025 16:00:00 +0000</lastBuildDate><atom:link href="https://blog.zwindler.fr/en/tags/k8e/index.xml" rel="self" type="application/rss+xml"/><item><title>I Tested For You: k8e (Kubernetes Easy Engine)</title><link>https://blog.zwindler.fr/en/2025/09/19/i-tested-for-you-k8e-kubernetes-easy-engine/</link><pubDate>Fri, 19 Sep 2025 16:00:00 +0000</pubDate><guid>https://blog.zwindler.fr/en/2025/09/19/i-tested-for-you-k8e-kubernetes-easy-engine/</guid><description>&lt;img src="https://blog.zwindler.fr/2025/09/k8e-logo.webp" alt="Featured image of post I Tested For You: k8e (Kubernetes Easy Engine)" /&gt;&lt;h2 id="werent-you-writing-a-book-on-kubernetes"&gt;Weren&amp;rsquo;t You Writing a Book on Kubernetes?
&lt;/h2&gt;&lt;p&gt;Yes! And I have good news: my book &amp;ldquo;Kubernetes: 50 solutions for development workstations and production clusters&amp;rdquo;, published by &lt;a class="link" href="https://www.editions-eyrolles.com/" target="_blank" rel="noopener"
&gt;Eyrolles&lt;/a&gt;, will be released on &lt;strong&gt;October 16, 2025&lt;/strong&gt;! You can follow the project&amp;rsquo;s progress on &lt;a class="link" href="https://50ndk.zwindler.fr" target="_blank" rel="noopener"
&gt;50ndk.zwindler.fr&lt;/a&gt;. I&amp;rsquo;ll make a proper announcement when I have the final cover to show you :3.&lt;/p&gt;
&lt;p&gt;While waiting for the release, I&amp;rsquo;m &amp;ldquo;freeing&amp;rdquo; another chapter that was abandoned during the final selection of the book: the one on &lt;a class="link" href="https://github.com/xiaods/k8e" target="_blank" rel="noopener"
&gt;&lt;strong&gt;k8e&lt;/strong&gt; (Kubernetes Easy Engine)&lt;/a&gt;. If you follow the blog closely, you might remember that I did the same for &lt;a class="link" href="https://blog.zwindler.fr/2025/05/26/test-k8s-tew" &gt;k8s-tew (K8S: the easier way)&lt;/a&gt;, which also didn&amp;rsquo;t make it into the list of 50 methods that have their place in my book :-P.&lt;/p&gt;
&lt;h2 id="but-lets-get-back-to-k8e"&gt;But Let&amp;rsquo;s Get Back to k8e!
&lt;/h2&gt;&lt;p&gt;k8e is a wrapper for k3s that makes it easy to install a multi-node cluster with &lt;a class="link" href="https://cilium.io/" target="_blank" rel="noopener"
&gt;Cilium&lt;/a&gt; configured as CNI and in &lt;em&gt;kube-proxy replacement&lt;/em&gt; mode. In philosophy, it&amp;rsquo;s really not much more than k3s with a big preflight check. We&amp;rsquo;re not even at the functional level of a &lt;code&gt;k3sup&lt;/code&gt; or a &lt;code&gt;k0ctl&lt;/code&gt;&amp;hellip;&lt;/p&gt;
&lt;p&gt;The developers highlight several key features:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;✅ Key Features&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports airgap images package for k8s components&lt;/li&gt;
&lt;li&gt;10-year valid certificate, supports cluster backup and upgrade&lt;/li&gt;
&lt;li&gt;No dependency on Ansible, HAProxy, or Keepalived; a binary tool with zero dependencies&lt;/li&gt;
&lt;li&gt;Natively supports Cilium network&lt;/li&gt;
&lt;li&gt;No kube-proxy component&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;The project presents itself as a simplified alternative to deploy k3s with Cilium directly integrated, which avoids manual post-installation configuration steps. I actually wrote an article at the end of 2023 about these famous manual operations, still available here: &lt;a class="link" href="https://blog.zwindler.fr/2023/09/01/k3s-et-cilium-rapide-et-facile" &gt;k3s and cilium quick and easy&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites
&lt;/h2&gt;&lt;p&gt;Since k8e is based on k3s, the prerequisites are generally the same as for k3s. However, there&amp;rsquo;s an important additional requirement: Cilium using eBPF for its low-level features, you need a &lt;strong&gt;relatively&lt;/strong&gt; recent Linux kernel.&lt;/p&gt;
&lt;p&gt;Well, that&amp;rsquo;s what we used to say for the early versions of cilium. Now &lt;strong&gt;Linux kernel &amp;gt;= 4.19.57&lt;/strong&gt; is a very old kernel!&lt;/p&gt;
&lt;p&gt;For my tests, I used 4 virtual machines in the same LAN:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;k8e1 (control plane, 192.168.1.11)&lt;/li&gt;
&lt;li&gt;k8e2 (control plane, 192.168.1.12)&lt;/li&gt;
&lt;li&gt;k8e3 (control plane, 192.168.1.13)&lt;/li&gt;
&lt;li&gt;k8e4 (worker, 192.168.1.14)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The installation requires SSH access with sudo/root privileges on all nodes.&lt;/p&gt;
&lt;h2 id="installing-the-first-node"&gt;Installing the First Node
&lt;/h2&gt;&lt;p&gt;The &lt;a class="link" href="https://getk8e-site.pages.dev/docs/install/200-quick-start/" target="_blank" rel="noopener"
&gt;Getting started&lt;/a&gt; is a bit rough because you land on a simplified Chinese page by default&amp;hellip;&lt;/p&gt;
&lt;p&gt;Installing k8e is done via a bash script, like many CNCF tools (RIP security). For the first node (which will be our first control plane node), we use the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e1:~$ curl -sfL https://getk8e-site.pages.dev/install.sh &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nv"&gt;API_SERVER_IP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;192.168.1.11 &lt;span class="nv"&gt;K8E_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;superSecureToken &lt;span class="nv"&gt;INSTALL_K8E_EXEC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;server --cluster-init&amp;#34;&lt;/span&gt; sh -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The script performs several preflight checks to ensure the environment is compatible. This is notably where it checks the Linux kernel version for eBPF compatibility.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2025-09-19 12:28:45&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;WARN&lt;span class="o"&gt;]&lt;/span&gt; System memory is less than 4GB. This may affect performance.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Finding latest version from GitHub
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;v1.31.2+k8e1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Downloading package https://github.com/xiaods/k8e/releases/download/v1.31.2+k8e1/k8e as /home/denis/k8e
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2025/09/k8e-prereqs.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;At the end of the process, we get a confirmation message:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;...&lt;span class="o"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2025-09-19 12:35:33&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;INFO&lt;span class="o"&gt;]&lt;/span&gt; systemd: Starting k8e
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2025-09-19 12:35:41&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;INFO&lt;span class="o"&gt;]&lt;/span&gt; Installing cilium network cni/operator
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ℹ️ Using Cilium version 1.15.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;🔮 Auto-detected cluster name: default
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;🔮 Auto-detected kube-proxy has not been installed
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ℹ️ Cilium will fully replace all functionalities of kube-proxy
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2025-09-19 12:35:42&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;INFO&lt;span class="o"&gt;]&lt;/span&gt; Installation completed successfully
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;2025-09-19 12:35:42&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;INFO&lt;span class="o"&gt;]&lt;/span&gt; Performing cleanup...
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Point that has been improved since the last time I tested, k8e copies the kubeconfig itself, there&amp;rsquo;s no longer a need to get it from &lt;code&gt;/etc/k8e/k8e.yaml&lt;/code&gt; (same as k3s, it&amp;rsquo;s traditionally in &lt;code&gt;/etc/rancher/k3s/k3s.yaml&lt;/code&gt;)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e1:~$ kubectl get nodes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME STATUS ROLES AGE VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;k8e1 Ready control-plane,etcd,master 62m v1.31.2+k8e1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;However, a quick look shows &amp;ldquo;how&amp;rdquo; k8e does it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e1:~$ env
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;KUBECONFIG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/etc/k8e/k8e.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e1:~$ ls -l /etc/k8e/k8e.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;-rw-r--r-- &lt;span class="m"&gt;1&lt;/span&gt; root root &lt;span class="m"&gt;2961&lt;/span&gt; Sep &lt;span class="m"&gt;19&lt;/span&gt; 12:35 /etc/k8e/k8e.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And I&amp;rsquo;m sorry, but this is:&lt;/p&gt;
&lt;p&gt;&lt;img src="https://blog.zwindler.fr/2025/09/heretique.avif"
loading="lazy"
&gt;&lt;/p&gt;
&lt;p&gt;The cluster-admin kubeconfig bare at 644, that&amp;rsquo;s a NO. The k8e doc is even worse, it recommends 666 (always more).&lt;/p&gt;
&lt;h2 id="adding-additional-nodes"&gt;Adding Additional Nodes
&lt;/h2&gt;&lt;p&gt;Once the first node is installed, we can add other control plane members. For additional control plane nodes:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e2:~$ curl -sfL https://getk8e-site.pages.dev/install.sh &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nv"&gt;K8E_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;superSecureToken &lt;span class="nv"&gt;K8E_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://192.168.1.11:6443 &lt;span class="nv"&gt;INSTALL_K8E_EXEC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;server&amp;#34;&lt;/span&gt; sh -s -
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e3:~$ curl -sfL https://getk8e.com/install.sh &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nv"&gt;K8E_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;superSecureToken &lt;span class="nv"&gt;K8E_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://192.168.1.11:6443 &lt;span class="nv"&gt;INSTALL_K8E_EXEC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;server&amp;#34;&lt;/span&gt; sh -s -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And for the worker node:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e4:~$ curl -sfL https://getk8e-site.pages.dev/install.sh &lt;span class="p"&gt;|&lt;/span&gt; &lt;span class="nv"&gt;K8E_TOKEN&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;superSecureToken &lt;span class="nv"&gt;K8E_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://192.168.1.11:6443 sh -
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We can then verify that all nodes are present:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e1:~$ kubectl get nodes
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;NAME STATUS ROLES AGE VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;k8e1 Ready control-plane,etcd,master 72m v1.31.2+k8e1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;k8e2 Ready control-plane,etcd,master 2m30s v1.31.2+k8e1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;k8e3 Ready control-plane,etcd,master 2m18s v1.31.2+k8e1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;k8e4 Ready &amp;lt;none&amp;gt; 75s v1.31.2+k8e1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="verifying-cilium"&gt;Verifying Cilium
&lt;/h2&gt;&lt;p&gt;One of k8e&amp;rsquo;s particularities is the native integration of Cilium. We can verify that Cilium is working correctly by using its CLI directly on one of the control plane nodes (installed by default):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;denis@k8e1:~$ cilium status
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /¯¯&lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /¯¯&lt;span class="se"&gt;\_&lt;/span&gt;_/¯¯&lt;span class="se"&gt;\ &lt;/span&gt; Cilium: OK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="se"&gt;\_&lt;/span&gt;_/¯¯&lt;span class="se"&gt;\_&lt;/span&gt;_/ Operator: OK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; /¯¯&lt;span class="se"&gt;\_&lt;/span&gt;_/¯¯&lt;span class="se"&gt;\ &lt;/span&gt; Envoy DaemonSet: disabled &lt;span class="o"&gt;(&lt;/span&gt;using embedded mode&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="se"&gt;\_&lt;/span&gt;_/¯¯&lt;span class="se"&gt;\_&lt;/span&gt;_/ Hubble Relay: disabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="se"&gt;\_&lt;/span&gt;_/ ClusterMesh: disabled
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DaemonSet cilium Desired: 4, Ready: 4/4, Available: 4/4
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Deployment cilium-operator Desired: 1, Ready: 1/1, Available: 1/1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Containers: cilium Running: &lt;span class="m"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cilium-operator Running: &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cluster Pods: 3/3 managed by Cilium
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Helm chart version: 1.15.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Image versions cilium quay.io/cilium/cilium:v1.15.6: &lt;span class="m"&gt;4&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cilium-operator quay.io/cilium/operator-generic:v1.15.6: &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="pros-and-cons"&gt;Pros and Cons
&lt;/h3&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pros&lt;/th&gt;
&lt;th&gt;Cons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;➕ Automated installation of Cilium on k3s&lt;/td&gt;
&lt;td&gt;➖ Permissions &lt;code&gt;/etc/k8e/k8e.yaml&lt;/code&gt; in &amp;ldquo;world readable&amp;rdquo; in official doc (dangerous!)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;➖ Kubernetes version behind the latest versions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;➖ Doesn&amp;rsquo;t add much value compared to k3s alone&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;➖ Limited documentation compared to more mature projects&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="conclusion"&gt;Conclusion
&lt;/h2&gt;&lt;p&gt;On the positive side, the project, while not popular, is still fairly followed with quite a few external contributions and &amp;ldquo;life&amp;rdquo; (regular commits). k8e is a tool for lazy people who want to install a k3s cluster with Cilium faster (yes that&amp;rsquo;s a positive point).&lt;/p&gt;
&lt;p&gt;But, at what cost?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A kubeconfig at 644, readable by all unix users on control planes&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;curl | bash&lt;/code&gt; installation (exactly like &lt;code&gt;k3s&lt;/code&gt;, except that I trust &lt;strong&gt;Rancher labs&lt;/strong&gt; more than &lt;strong&gt;xiaods&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;Dated versions (kube 1.31, cilium 1.15)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No need for me to tell you what I think, I think you&amp;rsquo;ve understood.&lt;/p&gt;</description></item></channel></rss>