{"id":6652,"date":"2019-07-24T16:09:11","date_gmt":"2019-07-24T14:09:11","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=6652"},"modified":"2023-06-18T18:26:40","modified_gmt":"2023-06-18T16:26:40","slug":"how-to-create-a-k8s-cluster-with-custom-nodes-in-rancher","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/07\/24\/how-to-create-a-k8s-cluster-with-custom-nodes-in-rancher\/","title":{"rendered":"How to create a K8s cluster with custom nodes in Rancher"},"content":{"rendered":"\n<p>Don&#8217;t you find it annoying not to be able to manage all your Kubernetes clusters at a glance? Ranger 2.0 offers an ideal solution.&nbsp;<br><\/p>\n\n\n\n<p>The following article is less a scientific post than a how-to guide to creating a new Kubernetes cluster with custom nodes in Ranger 2.0.&nbsp;<br><\/p>\n\n\n\n<p>But before we drift into the practical part, let&#8217;s take a look at what&#8217;s going on with Rancher and Kubernetes. We&#8217;ll briefly discuss the differences, origins, and use of the two tools.&nbsp;<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Kubernetes?&nbsp;<\/h2>\n\n\n\n<p>Kubernetes, also often abbreviated as K8s, is a container orchestration system. An open source system for automating the deployment, scaling and management of container applications. In contrast to other orchestration systems, no fixed workflow is implemented. The actual state of the container system is continuously monitored and changed to the target state. K8s was originally developed by Google in 2014 and subsequently donated to the Cloud Native Computing Foundation (CNCF).&nbsp;<br><\/p>\n\n\n\n<p>So-called \u2018pods\u2019 representing the smallest unit which are being orchestrated. These are wrappers that consist of either a single container or several containers. They encapsulate these containers from the outside (like a legume). These pods do run on worker nodes (either physically or as virtual machines in a cluster). The cluster is controlled by one (or more) dedicated machine(s), the \u2018Kubernetes Master\u2019 (\u2018Master-Nodes\u2019).&nbsp;<br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Rancher?&nbsp;<\/h2>\n\n\n\n<p>Rancher 2.0 is an open source container manager for managing multiple K8s clusters. It doesn\u2019t matter if a cluster consists of custom nodes or a hosted Kubernetes cluster like GKE (Google Kubernetes Engine), EKS (Amazon Elastic Kubernetes Service) or AKS (Azure Kubernetes Service). Rancher is able to manage all these clusters centrally. Especially user administration and RBAC (Role Based Access Control), policy and project management, resource management, backup and recovery of clusters, monitoring, logging and much more are covered.&nbsp;<br><\/p>\n\n\n\n<p>As we have now seen, we are able to integrate multiple K8s clusters into Rancher. In our particular case, we don&#8217;t want to integrate a cluster from the big cloud supplier, but use our own hosts. So let&#8217;s take a look at what we need. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Requirements<\/h2>\n\n\n\n<p>The following servers all run CentOs 7. Of course you can also use other operating systems.<\/p>\n\n\n\n<p>We used seven hosts. One is only used for rancher. Three are used as master nodes and another three are used as worker nodes.<br><\/p>\n\n\n\n<table class=\"wp-block-table\"><tbody><tr><td>nunki[01:03]<\/td><td>10.208.215.24[1:3]<\/td><td>Master-Nodes (etcd)<\/td><\/tr><tr><td>nunki[04:06]<\/td><td>10.208.215.24[4:6]<\/td><td>Worker-Nodes<\/td><\/tr><tr><td>rana01<\/td><td>10.208.215.247<\/td><td>Rancher<\/td><\/tr><\/tbody><\/table>\n\n\n\n<h2 class=\"wp-block-heading\">Prerequisite <\/h2>\n\n\n\n<p>Docker needs to be installed on all hosts that are to serve as master and worker nodes in the cluster and on the host on which our rancher instance is running?runs. Once Docker is installed, you need to start the Docker daemon. Most Linux distributions use systemctl (systemctl start docker) to start services. If you don\u2019t have systemctl, use the service command. If you want Docker to automatically start at boot (recommended) you should enable the docker service as well.&nbsp;<\/p>\n\n\n\n<p>Further Setup<br>In this tutorial, we will not cover \u2018SELinux\u2019 configuration for Docker, so we disable it on every host. Edit the \/etc\/selinux\/config file to set the SELINUX parameter to disabled, and then reboot the server. Execute getenforce to see the current mode of SELinux<\/p>\n\n\n\n<p>Since we need certain ports for our Kubernetes environment, we deactivate the firewall completely for our tests. Of course this should not be done in production! <br>\u2018Firewalld\u2019 is a complete firewall solution that has been made available by default on all CentOS 7.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>First, stop the Firewalld service with:<ul><li>systemctl stop firewalld<\/li><\/ul><\/li><li>Then Disable the Firewalld service<ul><li>systemctl disable firewalld<\/li><\/ul><\/li><li>To check the status of firewalld, run the following command<ul><li>systemctl status firewalld<\/li><\/ul><\/li><\/ul>\n\n\n\n<p>We will run Rancher 2.0 in the container using the docker image rancher\/ranche r:v2.2.3. To start it, we use the following command:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>docker run -d &#8211;restart=unless-stopped -p 80:80 -p 443:443 rancher\/ranche r:v2.2.3<\/li><\/ul>\n\n\n\n<p>By means of parameter -d we tell the docker deamon that the container should run &#8216;detached\u2019, in other words: in the background. &#8211;restart=unless-stopped allows us to automatically restart the container after a restart (the service must be enabled for this). With parameter -p we define ports, which can be used to access our container from the outside.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create a k8s cluster with custom nodes<\/h2>\n\n\n\n<p>The following section describes the process of creating a new cluster. For this we call the Rancher web interface in the browser.&nbsp;<\/p>\n\n\n\n<p>From the Clusters page, click Add Cluster<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"189\" data-attachment-id=\"6655\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/07\/24\/how-to-create-a-k8s-cluster-with-custom-nodes-in-rancher\/cluster-2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster-1.png\" data-orig-size=\"1285,237\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cluster\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster-1-1024x189.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster-1-1024x189.png\" alt=\"\" class=\"wp-image-6655\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster-1-1024x189.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster-1-300x55.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster-1-768x142.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster-1.png 1285w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Add a new Cluster<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li><strong>Choose Custom<\/strong><\/li><li>Enter a <strong>Cluster Name<\/strong><\/li><li>Use <strong>Member Roles<\/strong> to configure user authorization for the cluster.<ul><li>Click <strong>Add Member<\/strong> to add users that can access the cluster.<\/li><li>Use the <strong>Role<\/strong> drop-down to set permissions for each user<\/li><li>Use <strong>Cluster Options<\/strong> to choose the <strong>version<\/strong> of Kubernetes, what<strong> network provider<\/strong> will be used and if you want to enable <strong>project network isolation<\/strong>.&nbsp; <\/li><\/ul><\/li><li>Click <strong>Next<\/strong> <\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"949\" data-attachment-id=\"6656\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/07\/24\/how-to-create-a-k8s-cluster-with-custom-nodes-in-rancher\/add_cluster-2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/add_cluster-1.png\" data-orig-size=\"1337,1239\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"add_cluster\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/add_cluster-1-1024x949.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/add_cluster-1-1024x949.png\" alt=\"\" class=\"wp-image-6656\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/add_cluster-1-1024x949.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/add_cluster-1-300x278.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/add_cluster-1-768x712.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/add_cluster-1.png 1337w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>Assign nodes to roles<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Under Node select the role that certain nodes should fulfill. If, for example, the master nodes are to be created, only &#8216;Control Plane&#8217; and &#8216;etcd&#8217; may be selected.&nbsp;<\/li><li><strong>Optional<\/strong>: Click <strong>Show advanced options<\/strong> to specify one or more IP address(es) to use when registering the node, override the hostname of the node or to add labels to the node.<\/li><li>Copy the displayed command to your clipboard.<\/li><li>Log in to your Linux host using your preferred shell, such as PuTTy or a remote Terminal connection. Run the command copied to your clipboard.<\/li><li>After all commands have been executed on your Linux host(s), then click Done.<\/li><\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"583\" data-attachment-id=\"6657\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/07\/24\/how-to-create-a-k8s-cluster-with-custom-nodes-in-rancher\/run_command\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/run_command.png\" data-orig-size=\"1277,727\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"run_command\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/run_command-1024x583.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/run_command-1024x583.png\" alt=\"\" class=\"wp-image-6657\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/run_command-1024x583.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/run_command-300x171.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/run_command-768x437.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/run_command.png 1277w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Result:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Your cluster is created and assigned a state of <strong>Provisioning<\/strong>. Rancher is standing up your cluster.<\/li><li>You can access your cluster after its state is <strong>Active<\/strong>.<\/li><\/ul>\n\n\n\n<p><strong>Active<\/strong> clusters are assigned to two Projects, Default (containing the namespace default) and System (containing the namespaces cattle-system,ingress-nginx,kube-public and kube-system, if present).\n\n<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"242\" data-attachment-id=\"6658\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/07\/24\/how-to-create-a-k8s-cluster-with-custom-nodes-in-rancher\/cluster_state\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_state.png\" data-orig-size=\"1263,298\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cluster_state\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_state-1024x242.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_state-1024x242.png\" alt=\"\" class=\"wp-image-6658\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_state-1024x242.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_state-300x71.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_state-768x181.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_state.png 1263w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>In addition to the configured settings, the available resources can also be taken from the Cluster Dashboard. <br>\nIt also shows the current workload of the nodes.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"609\" data-attachment-id=\"6659\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/07\/24\/how-to-create-a-k8s-cluster-with-custom-nodes-in-rancher\/cluster_dashboard\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_dashboard.png\" data-orig-size=\"1301,774\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cluster_dashboard\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_dashboard-1024x609.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_dashboard-1024x609.png\" alt=\"\" class=\"wp-image-6659\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_dashboard-1024x609.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_dashboard-300x178.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_dashboard-768x457.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_dashboard.png 1301w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>For more information about the used nodes, select Nodes.<br>\nThe table shows the current status, assigned role, available resources and their utilization. Nodes can also be restarted or deleted in this overview. <br>\nIn our example we selected 3 Master Nodes (Role &#8216;etcd&#8217; and &#8216;Control Plane&#8217;) and 3 Worker Nodes.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" data-attachment-id=\"6660\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/07\/24\/how-to-create-a-k8s-cluster-with-custom-nodes-in-rancher\/cluster_active\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_active.png\" data-orig-size=\"1303,710\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"cluster_active\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_active-1024x558.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_active-1024x558.png\" alt=\"\" class=\"wp-image-6660\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_active-1024x558.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_active-300x163.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_active-768x418.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/07\/cluster_active.png 1303w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>As you could see, setting up a cluster is uncomplicated. Within minutes, a Kubernetes cluster with custom nodes can be created and managed within Ranger 2.0. In the Rancher web interface you are able to display all clusters, their projects and namespaces clearly. <\/p>\n\n\n\n<p>You should try it out.<br><\/p>\n\n\n\n<p><br><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Don&#8217;t you find it annoying not to be able to manage all your Kubernetes clusters at a glance? Ranger 2.0 offers an ideal solution.&nbsp; The following article is less a scientific post than a how-to guide to creating a new Kubernetes cluster with custom nodes in Ranger 2.0.&nbsp; But before we drift into the practical [&hellip;]<\/p>\n","protected":false},"author":923,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1,21,651],"tags":[],"ppma_author":[786],"class_list":["post-6652","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-system-architecture","category-system-designs"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":12550,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/02\/27\/migrating-from-heroku-to-hetzner-achieving-scalability-with-docker-kubernetes-and-rancher\/","url_meta":{"origin":6652,"position":0},"title":"Migrating from Heroku to Hetzner: Achieving Scalability with Docker, Kubernetes and Rancher","author":"Mario Koch","date":"27. February 2021","format":false,"excerpt":"Dockerizing an existing application and deploying it in a Kubernetes Cluster via Rancher to achieve better scalability and cost minimization. Load Testing with Artillery, Monitoring with Prometheus & Grafana and GitHub Actions for CI\/CD were used in the process.","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/vidar-nordli-mathisen-y8TMoCzw87E-unsplash-1-scaled.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/vidar-nordli-mathisen-y8TMoCzw87E-unsplash-1-scaled.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/vidar-nordli-mathisen-y8TMoCzw87E-unsplash-1-scaled.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/vidar-nordli-mathisen-y8TMoCzw87E-unsplash-1-scaled.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/vidar-nordli-mathisen-y8TMoCzw87E-unsplash-1-scaled.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/02\/vidar-nordli-mathisen-y8TMoCzw87E-unsplash-1-scaled.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":5175,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/02\/24\/benefiting-kubernetes-part-2-deploy-with-kubectl\/","url_meta":{"origin":6652,"position":1},"title":"Migrating to Kubernetes Part 2 &#8211; Deploy with kubectl","author":"Can Kattwinkel","date":"24. February 2019","format":false,"excerpt":"Written by: Pirmin Gersbacher, Can Kattwinkel, Mario Sallat Migrating from Bare Metal to Kubernetes The interest in software containers is a relatively new trend in the developers world. Classic VMs have not lost their right to exist within a world full of monoliths yet, but the trend is clearly towards\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964.jpeg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2019\/02\/pexels-photo-379964.jpeg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":6338,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2019\/03\/15\/kubernetesk8s-everywhere-but-how\/","url_meta":{"origin":6652,"position":2},"title":"Kubernetes (K8S) everywhere, but how?","author":"Immanuel Haag","date":"15. March 2019","format":false,"excerpt":"In the last months, nearly everybody has been talking about Kubernetes. It\u2019s incredible! This semester the Stuttgart Media University even held a training course on this topic. For DevOps or \u201ccloud-computing specialist\u201d mastering Kubernetes and the concepts around it is becoming more and more important. This blog post won\u2019t explain\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/up-and-running-with-kubernetes-13-638.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/up-and-running-with-kubernetes-13-638.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/08\/up-and-running-with-kubernetes-13-638.jpg?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":9655,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2020\/02\/29\/image-editor-on-kubernetes-with-kompose-minikube-k3s-k3sup-and-helm-part-2\/","url_meta":{"origin":6652,"position":3},"title":"Kubernetes: from Zero to Hero with Kompose, Minikube, k3sup and Helm \u2014 Part 2: Hands-On","author":"Leon Klingele","date":"29. February 2020","format":false,"excerpt":"This is part two of our series on how we designed and implemented a scalable, highly-available and fault-tolerant microservice-based Image Editor. This part depicts how we went from a basic Docker Compose setup to running our application on our own \u00bbbare-metal\u00ab Kubernetes cluster.","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"\/wp-content\/uploads\/2020\/02\/DDD_dependencies-1024x119.png","width":350,"height":200,"srcset":"\/wp-content\/uploads\/2020\/02\/DDD_dependencies-1024x119.png 1x, \/wp-content\/uploads\/2020\/02\/DDD_dependencies-1024x119.png 1.5x, \/wp-content\/uploads\/2020\/02\/DDD_dependencies-1024x119.png 2x"},"classes":[]},{"id":27789,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/07\/24\/beyond-reactive-how-ai-is-revolutionizing-kubernetes-autoscaling\/","url_meta":{"origin":6652,"position":4},"title":"Beyond Reactive: How AI is Revolutionizing Kubernetes Autoscaling","author":"Hannah Holzheu","date":"24. July 2025","format":false,"excerpt":"Note:\u00a0This blog post was written for the module Enterprise IT (113601a) in the summer semester of 2025 Introduction Kubernetes has become the leading open-source platform for managing containerized applications. Its ability to automate deployment, scaling, and operations helps teams efficiently manage microservices architectures and dynamic cloud workloads. A cornerstone of\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/07\/AIvsRuleBased.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/07\/AIvsRuleBased.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/07\/AIvsRuleBased.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/07\/AIvsRuleBased.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":21651,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/18\/deploy-random-chat-application-on-aws-ec2-with-kubernetes\/","url_meta":{"origin":6652,"position":5},"title":"Deploying Random Chat Application on AWS EC2 with Kubernetes","author":"dv029","date":"18. September 2021","format":false,"excerpt":"1. Introduction For the examination of the lecture \u201cSoftware Development for Cloud Computing\u201d, I want to build a simple Random Chat Application. The idea of this application is based on the famous chat application called Omegle. Omegle is where people can meet random people in the world and can have\u2026","rel":"","context":"In &quot;Cloud Technologies&quot;","block_context":{"text":"Cloud Technologies","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/cloud-technologies\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-19.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":786,"user_id":923,"is_guest":0,"slug":"ss411","display_name":"Sarah Schwab","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/9d7391afc496edeb32bd15a8abaa0d92f1e920f75beba034d0dffa5d3ea92b20?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/6652","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/923"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=6652"}],"version-history":[{"count":2,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/6652\/revisions"}],"predecessor-version":[{"id":6662,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/6652\/revisions\/6662"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=6652"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=6652"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=6652"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=6652"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}