<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Academy on Exoscale Academy</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/</link><description>Recent content in Academy on Exoscale Academy</description><generator>Hugo</generator><language>en</language><atom:link href="https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/index.xml" rel="self" type="application/rss+xml"/><item><title>Introduction to Compliance</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-compliance/intro-compliance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-compliance/intro-compliance/</guid><description>&lt;h2 id="why-compliance" class="heading-link"&gt;
 Why Compliance?
 &lt;a href="#why-compliance" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;

&lt;h3 id="is-essential-for-business" class="heading-link"&gt;
 Is essential for business.
 &lt;a href="#is-essential-for-business" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Companies that comply with regulations are usually &lt;strong&gt;more competitive&lt;/strong&gt; than those that don&amp;rsquo;t, as they can offer their products through any marketplace without any legal restriction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Customers have &lt;strong&gt;more trust&lt;/strong&gt; in those companies because they know they&amp;rsquo;re following quality standards and using safe materials for consumption.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Learning more&lt;/strong&gt; about compliance and why it is essential can help implement workplace programs that &lt;strong&gt;follow established policies&lt;/strong&gt;, &lt;strong&gt;codes&lt;/strong&gt;, and &lt;strong&gt;standards&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Introduction to DBaaS</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-dbaas/intro-dbaas/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-dbaas/intro-dbaas/</guid><description>&lt;h2 id="data" class="heading-link"&gt;
 Data
 &lt;a href="#data" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Data is the fuel of our society. Can we agree on that? There were many bold statements over the years to underline the importance of data. Data is the new oil; Data is the new gold; all variations you have probably come across if you follow the news, media, or social media. Data is the new water - is a fresh analogy you can find in researching the data topic.&lt;/p&gt;</description></item><item><title>Introduction to Kubernetes</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-k8s/intro-k8s/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-k8s/intro-k8s/</guid><description>&lt;h2 id="experiences-we-want-to-change" class="heading-link"&gt;
 Experiences we want to change!
 &lt;a href="#experiences-we-want-to-change" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;

&lt;h3 id="why-containers" class="heading-link"&gt;
 Why Containers?
 &lt;a href="#why-containers" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Many people have a complex job building, testing, and running systems based on old concepts and technology in today&amp;rsquo;s IT — the results you can see below (Experiences we want to change!). Modern ways to build, test, and run IT systems are not adopted as broadly as possible. Hence, a lot of pain is still out there that we could ease by changing IT processes and utilizing the new ways.&lt;/p&gt;</description></item><item><title>Introduction to Pricing</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-pricing/intro-pricing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-pricing/intro-pricing/</guid><description>&lt;h2 id="typical-web-application" class="heading-link"&gt;
 Typical Web Application
 &lt;a href="#typical-web-application" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Our example architecture consists of the following explained components, and it demonstrates the practical usage of several products together and the associated costs.&lt;/p&gt;

&lt;h4 id="application-servers" class="heading-link"&gt;
 Application Servers
 &lt;a href="#application-servers" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;run the web application. The application reads from the DB servers via the Elastic IP v2, and users access this web service via another Elastic IP v2 that distributes traffic evenly among them. Upload user files to the Public File Bucket. Installed in an Anti-Affinity group.&lt;/p&gt;</description></item><item><title>Introduction to Storage</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-storage/intro-storage/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-storage/intro-storage/</guid><description>&lt;h2 id="storage" class="heading-link"&gt;
 Storage
 &lt;a href="#storage" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;

&lt;h3 id="definition" class="heading-link"&gt;
 Definition
 &lt;a href="#definition" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Storage is crucial for preserving and accessing computer data, files, applications, and other digital content. Storage refers to the process of storing and retrieving data or information. It is an essential component of any computer system.&lt;/p&gt;
&lt;p&gt;






&lt;div class="md__image"&gt;
 &lt;img id="[327 431 452 44 228 13]" src="storage_color.jpg" onclick="openModal(this.id)" alt="" 
 class="md-image-responsive" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;h3 id="basic-storage-types" class="heading-link"&gt;
 Basic Storage Types
 &lt;a href="#basic-storage-types" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;There are several basic types of storage that are commonly used in computing systems. Here are the most common types:&lt;/p&gt;</description></item><item><title>Introduction to Sustainability</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-sustainability/intro-sustainability/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-sustainability/intro-sustainability/</guid><description>&lt;h2 id="corporate-sustainability-cs" class="heading-link"&gt;
 Corporate Sustainability (CS)
 &lt;a href="#corporate-sustainability-cs" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;

&lt;h3 id="why" class="heading-link"&gt;
 Why?
 &lt;a href="#why" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Long-term Viability:&lt;/strong&gt; Businesses prioritizing sustainability are better equipped to navigate the risks associated with resource scarcity, climate change, and evolving regulatory landscapes. A sustainable approach helps ensure long-term viability in a rapidly changing world.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Competitive Advantage:&lt;/strong&gt; As consumers, investors, and other stakeholders increasingly value sustainability, companies committed to sustainable practices can differentiate themselves in the marketplace. This can translate into increased brand loyalty, attract investment, and open new markets.&lt;/p&gt;</description></item><item><title>Certified Cloud Professional</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedcloudprofessional/certified-cloud-professional/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedcloudprofessional/certified-cloud-professional/</guid><description>&lt;h2 id="cloud-computing" class="heading-link"&gt;
 Cloud Computing
 &lt;a href="#cloud-computing" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;

&lt;h3 id="definition" class="heading-link"&gt;
 Definition
 &lt;a href="#definition" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Cloud computing lets you use servers, storage, and applications on the Internet instead of owning or managing your own hardware. It’s an easy, flexible, and cost-effective way to get the technology you need without the hassle.&lt;/p&gt;
&lt;p&gt;






&lt;div class="md__image"&gt;
 &lt;img id="[261 141 428 152 139 494]" src="cloud-computing.png" onclick="openModal(this.id)" alt="" 
 class="md-image-responsive" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;h2 id="service-models" class="heading-link"&gt;
 Service Models
 &lt;a href="#service-models" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;

&lt;h3 id="explained" class="heading-link"&gt;
 Explained
 &lt;a href="#explained" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Cloud service models let you easily use software, development tools, or virtual computers over the Internet. This gives your organization more flexibility and the ability to grow, without having to manage complex IT systems yourself.&lt;/p&gt;</description></item><item><title>Certified Container Engineer</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedcontainerengineer/certified-container-engineer/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedcontainerengineer/certified-container-engineer/</guid><description>&lt;h2 id="container" class="heading-link"&gt;
 Container
 &lt;a href="#container" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;

&lt;h3 id="application-deployment" class="heading-link"&gt;
 Application Deployment
 &lt;a href="#application-deployment" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h3&gt;
&lt;p&gt;Observing the evolution of application deployment highlights the advantages that containers offer.&lt;/p&gt;

&lt;h4 id="traditional-deployment" class="heading-link"&gt;
 Traditional Deployment
 &lt;a href="#traditional-deployment" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;Initially, organizations ran applications directly on physical servers, lacking resource boundaries between applications. This often led to resource contention and underperformance. Running each application on its own server solved this but resulted in underutilized resources and high costs.&lt;/p&gt;</description></item><item><title>Certified Solution Architect</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedsolutionarchitect/certified-solution-architect/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedsolutionarchitect/certified-solution-architect/</guid><description>&lt;h2 id="overview" class="heading-link"&gt;
 Overview
 &lt;a href="#overview" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;

&lt;h2 id="iaas" class="heading-link"&gt;
 IaaS+
 &lt;a href="#iaas" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;I&lt;/strong&gt;nfrastructure &lt;strong&gt;a&lt;/strong&gt;s &lt;strong&gt;a&lt;/strong&gt; &lt;strong&gt;S&lt;/strong&gt;ervice is the cloud service model we support with the Exoscale platform and a bit more, hence, IaaS+.&lt;/p&gt;
&lt;p&gt;






&lt;div class="md__image"&gt;
 &lt;img id="[351 120 382 225 445 337]" src="iaas&amp;#43;_arch.png" onclick="openModal(this.id)" alt="" 
 class="md-image-responsive" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;h4 id="video" class="heading-link"&gt;
 VIDEO
 &lt;a href="#video" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;&lt;a href="https://sos-de-fra-1.exo.io/exoscale-academy/videos/csa-overview-01.mp4"&gt;IaaS+&lt;/a&gt;&lt;/p&gt;

&lt;h2 id="data-centers" class="heading-link"&gt;
 Data Centers
 &lt;a href="#data-centers" class="heading-anchor" aria-label="Permalink to this heading"&gt;🔗&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Getting the necessary cloud infrastructure components is easy. In Europe, there is always an Exoscale data center near you.&lt;/p&gt;</description></item><item><title>Instructor Toolkit</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/instructor-toolkit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/instructor-toolkit/</guid><description>&lt;section class="academy-toolkit academy-toolkit--ready"&gt;

 &lt;p class="academy-toolkit__verdict academy-toolkit__verdict--good"&gt;Ready to publish&lt;/p&gt;&lt;p class="academy-toolkit__summary academy-toolkit__summary--good"&gt;
 &lt;strong&gt;All publishable content IDs are registered.&lt;/strong&gt;
 &lt;/p&gt;&lt;p class="academy-toolkit__legend"&gt;
 &lt;span&gt;&lt;a href="https://exoscale.layer5.io/academy/instructors-console" target="_blank" rel="noopener" aria-label="Open Instructor Console"&gt;⚠️&lt;/a&gt;Draft page: Content ID is not registered or missing.&lt;/span&gt;
 &lt;span&gt;&lt;a href="https://exoscale.layer5.io/academy/instructors-console" target="_blank" rel="noopener" aria-label="Open Instructor Console"&gt;❌&lt;/a&gt;Content ID is not registered or missing.&lt;/span&gt;
 &lt;span&gt;✅ Content ID is registered.&lt;/span&gt;
 &lt;/p&gt;&lt;table class="academy-toolkit__table"&gt;
 &lt;colgroup&gt;
 &lt;col class="academy-toolkit__col-page"&gt;
 &lt;col class="academy-toolkit__col-draft"&gt;
 &lt;col class="academy-toolkit__col-id"&gt;
 &lt;col class="academy-toolkit__col-status"&gt;
 &lt;/colgroup&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th scope="col"&gt;Page&lt;/th&gt;
 &lt;th scope="col"&gt;Draft&lt;/th&gt;
 &lt;th scope="col"&gt;Content ID&lt;/th&gt;
 &lt;th scope="col"&gt;Status&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedcloudprofessional/"&gt;Certified Cloud Professional&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;033b0a08-0ac5-4073-a343-fcabda7730f1&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedsolutionarchitect/"&gt;Certified Solution Architect&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;b4b20bf2-a034-4724-9cca-c370c477418e&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/certifiedcontainerengineer/"&gt;Certified Container Engineer&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;ad28e9ed-b1e5-4d90-aa62-43bf32c2e4f5&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-k8s/"&gt;INTRO Kubernetes&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;6bb2ae92-89d6-4e2b-aac2-74512828b68d&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-dbaas/"&gt;INTRO DBaaS&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;3dd8409e-ba0f-4d0c-ae4b-b2ee3d3361fd&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-storage/"&gt;INTRO Storage&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;c2326b60-4cb4-4f82-acdb-f9e5a32c3304&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-sustainability/"&gt;INTRO Sustainability&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;70c37467-6d35-44c8-a1bc-d4be86981592&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-compliance/"&gt;INTRO Compliance&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;d2693f33-9afe-46c0-bf21-65a15ba983ac&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/intro-pricing/"&gt;INTRO Pricing&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;7dc9d1fa-063c-4ff5-8a13-7250baee1f09&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-k8s-introduction/"&gt;Workshop Kubernetes&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;8cd4aa89-87f5-472d-a7c2-69e5b9819915&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/"&gt;Workshop CKA Preparation&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;5a817fbd-7754-4bf2-8285-be3074c854ea&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;tr&gt;
 &lt;th scope="row"&gt;&lt;a href="https://exoscale.layer5.io/academy/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-exoscale-introduction/"&gt;Workshop Exoscale Intro&lt;/a&gt;&lt;/th&gt;
 &lt;td&gt;False&lt;/td&gt;
 &lt;td&gt;0e8df4e6-ed92-4687-a84f-c3dc61af912c&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;&lt;/tbody&gt;
 &lt;/table&gt;&lt;/section&gt;

&lt;style&gt;
 .academy-toolkit {
 max-width: 960px;
 margin-top: 1.5rem;
 color: #182126;
 }

 .academy-toolkit__header {
 margin-bottom: 0.75rem;
 }

 .academy-toolkit h2 {
 margin: 0;
 font-size: 1.45rem;
 }

 .academy-toolkit__empty {
 margin: 0;
 color: #52616b;
 }

 .academy-toolkit__summary-row {
 display: flex;
 flex-wrap: wrap;
 gap: 0.75rem 1rem;
 align-items: center;
 margin-bottom: 0.75rem;
 }

 .academy-toolkit__summary {
 display: inline-flex;
 align-items: center;
 margin: 0;
 font-size: 1.15rem;
 }

 .academy-toolkit__legend {
 display: flex;
 flex-wrap: wrap;
 gap: 0.5rem 1.25rem;
 margin: 0 0 0.75rem;
 color: #52616b;
 font-size: 0.95rem;
 }

 .academy-toolkit__legend span {
 white-space: nowrap;
 }

 .academy-toolkit__action {
 margin: 0.85rem 0 0.75rem;
 color: #182126;
 font-size: 1rem;
 }

 .academy-toolkit__action a {
 color: #00b39f;
 }

 .academy-toolkit__verdict {
 margin: 0.9rem 0 0.25rem;
 font-size: 1.55rem;
 font-weight: 800;
 line-height: 1.2;
 }

 .academy-toolkit a {
 color: #00b39f;
 text-decoration: none;
 }

 .academy-toolkit a:hover,
 .academy-toolkit a:focus {
 color: rgba(0, 179, 159, 0.7);
 }

 .academy-toolkit__table {
 width: 100%;
 border-collapse: collapse;
 }

 .academy-toolkit__table th:nth-child(3),
 .academy-toolkit__table td:nth-child(3) {
 padding-right: 4rem !important; 
 }

 .academy-toolkit__col-draft {
 width: 10%;
 }

 .academy-toolkit__table th,
 .academy-toolkit__table td {
 padding: 0.55rem 0.75rem;
 text-align: left;
 vertical-align: top;
 }

 .academy-toolkit__table thead th {
 color: #52616b;
 font-size: 0.85rem;
 font-weight: 700;
 }

 .academy-toolkit__table tbody th {
 font-weight: 500;
 }

 .academy-toolkit__table tbody th a {
 font-weight: inherit;
 }

 .academy-toolkit__table tbody td a {
 text-decoration: none;
 }

 .academy-toolkit__table tbody td:last-child {
 white-space: nowrap;
 }
&lt;/style&gt;</description></item><item><title>Solution - Audit</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/audit/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/audit/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;On the &lt;em&gt;controlplane&lt;/em&gt; node, create the file &lt;em&gt;/etc/kubernetes/audit-policy.yaml&lt;/em&gt; with the following content:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: Metadata
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Edit the API Server Pod specification (in the file &lt;em&gt;/etc/kubernetes/manifests/kube-apiserver.yaml&lt;/em&gt;) by adding the following two volume definitions:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- name: audit
 hostPath:
 path: /etc/kubernetes/audit-policy.yaml
 type: File
- name: audit-log
 hostPath:
 path: /var/log/kubernetes/audit/
 type: DirectoryOrCreate
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;and also add the following entries to the &lt;em&gt;volumeMounts&lt;/em&gt; field of the container:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- mountPath: /etc/kubernetes/audit-policy.yaml
 name: audit
 readOnly: true
- mountPath: /var/log/kubernetes/audit/
 name: audit-log
 readOnly: false
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Start a simple Pod:&lt;/p&gt;</description></item><item><title>Solution - Certs</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/cert/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/cert/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Check the current certificate expiration dates&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Run the following command from the control plane node.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo kubeadm certs check-expiration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command shows all certificates managed by kubeadm and their expiration dates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;admin.conf (client certificate for kubectl)&lt;/li&gt;
&lt;li&gt;apiserver (API server serving certificate)&lt;/li&gt;
&lt;li&gt;apiserver-etcd-client (API server to etcd client certificate)&lt;/li&gt;
&lt;li&gt;apiserver-kubelet-client (API server to kubelet client certificate)&lt;/li&gt;
&lt;li&gt;controller-manager.conf (controller manager client certificate)&lt;/li&gt;
&lt;li&gt;etcd-healthcheck-client (etcd health check client certificate)&lt;/li&gt;
&lt;li&gt;etcd-peer (etcd peer certificate for cluster communication)&lt;/li&gt;
&lt;li&gt;etcd-server (etcd server certificate)&lt;/li&gt;
&lt;li&gt;front-proxy-client (front proxy client certificate)&lt;/li&gt;
&lt;li&gt;scheduler.conf (scheduler client certificate)&lt;/li&gt;
&lt;li&gt;super-admin.conf (client certificate bypassing authorization layer)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="hextra-callout alert alert-warning d-flex align-items-start" role="alert"&gt;
 &lt;div class="flex-shrink-0 me-2"&gt;&lt;svg height="1.2em" class="d-inline-block align-middle" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true"&gt;&lt;path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/&gt;&lt;/svg&gt;&lt;/div&gt;
 &lt;div class="flex-grow-1 hextra-callout-content"&gt;&lt;ul&gt;
&lt;li&gt;By default, kubeadm certificates are valid for 1 year. You should renew them before they expire to avoid cluster outages.&lt;/li&gt;
&lt;li&gt;Certificate are automatically renewed during each upgrade of the control plane.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;ol start="2"&gt;
&lt;li&gt;Renew the certificates using kubeadm&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You can renew all certificates at once.&lt;/p&gt;</description></item><item><title>Solution - Ch1</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge1/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge1/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you try to list the Nodes, you&amp;rsquo;ll get an error similar to the following one:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get no
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;The connection to the server 192.168.64.17:6443 was refused - did you specify the right host or port?
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Identification&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As kubectl targets the API Server, first make sure this one is running fine.&lt;/p&gt;
&lt;p&gt;On the controlplane Node, check the APIServer&amp;rsquo;s logs in &lt;em&gt;/var/log/syslog&lt;/em&gt;. You should see that the API Server cannot start correctly:&lt;/p&gt;</description></item><item><title>Solution - Ch2</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge2/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge2/solution/</guid><description>&lt;p&gt;The worker1 has the &lt;em&gt;NotReady&lt;/em&gt; status&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get no
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME STATUS ROLES AGE VERSION
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;master Ready control-plane,master 2d16h v1.32.7
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;worker1 NotReady &amp;lt;none&amp;gt; 2d16h v1.32.7
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;worker2 Ready &amp;lt;none&amp;gt; 2d16h v1.32.7
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The description of the node provide additional information&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl describe node worker1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type Reason Age From Message
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ---- ------ ---- ---- -------
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal RegisteredNode 57m node-controller Node worker1 event: Registered Node worker1 in Controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeNotReady 25m node-controller Node worker1 status is now: NodeNotReady
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Starting 24m kubelet Starting kubelet.
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeReady 24m kubelet Node worker1 status is now: NodeReady
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeAllocatableEnforced 24m kubelet Updated Node Allocatable limit across pods
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeHasSufficientMemory 24m &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 24m&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Node worker1 status is now: NodeHasSufficientMemory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeHasNoDiskPressure 24m &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 24m&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Node worker1 status is now: NodeHasNoDiskPressure
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeHasSufficientPID 24m &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 24m&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Node worker1 status is now: NodeHasSufficientPID
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal RegisteredNode 22m node-controller Node worker1 event: Registered Node worker1 in Controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal RegisteredNode 96s node-controller Node worker1 event: Registered Node worker1 in Controller
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal NodeNotReady 26s node-controller Node worker1 status is now: NodeNotReady
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The Node in &lt;code&gt;NodeNotReady&lt;/code&gt; status may indicate kubelet is having trouble. We have the confirmation checking the kubelet status with systemctl on this specific Node.&lt;/p&gt;</description></item><item><title>Solution - Ch3</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge3/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge3/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Let&amp;rsquo;s create a new Pod and expose it with a ClusterIP Service&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl run nginx --image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;nginx:1.20 --port &lt;span style="color:#ae81ff"&gt;80&lt;/span&gt; --expose
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let&amp;rsquo;s new get an interactive shell in an Alpine based Pod&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl run -ti --rm debug --image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;alpine -- sh
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We cannot reach the nginx Pod from the debug one:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/ &lt;span style="color:#75715e"&gt;# wget http://nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;wget: bad address &lt;span style="color:#e6db74"&gt;&amp;#39;nginx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Going one step further we can see the name resolution is not working fine:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/ &lt;span style="color:#75715e"&gt;# nslookup nginx&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;;; connection timed out; no servers could be reached
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Checking the cluster&amp;rsquo;s internal DNS&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get deploy -n kube-system
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY UP-TO-DATE AVAILABLE AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;coredns 0/0 &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 2d17h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Seems like there is no replica running for the dns (should be 2 by default)&lt;/p&gt;</description></item><item><title>Solution - Ch4</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge4/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge4/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;List the resources in &lt;em&gt;app2&lt;/em&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get po,svc -n app2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod/nginx 1/1 Running &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 8s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME TYPE CLUSTER-IP EXTERNAL-IP PORT&lt;span style="color:#f92672"&gt;(&lt;/span&gt;S&lt;span style="color:#f92672"&gt;)&lt;/span&gt; AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;service/nginx NodePort 10.106.164.238 &amp;lt;none&amp;gt; 80:30000/TCP 8s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;From a worker node, try to reach the nginx Pod&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ curl localhost:30000
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;curl: &lt;span style="color:#f92672"&gt;(&lt;/span&gt;7&lt;span style="color:#f92672"&gt;)&lt;/span&gt; Failed to connect to localhost port 30000: Connection refused
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Check the service&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl describe svc nginx -n app2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Name: nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Namespace: app2
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Labels: &amp;lt;none&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Annotations: &amp;lt;none&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Selector: app&lt;span style="color:#f92672"&gt;=&lt;/span&gt;nginx
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Type: NodePort
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IP Family Policy: SingleStack
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IP Families: IPv4
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IP: 10.106.164.238
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;IPs: 10.106.164.238
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Port: &amp;lt;unset&amp;gt; 80/TCP
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;TargetPort: 80/TCP
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NodePort: &amp;lt;unset&amp;gt; 30000/TCP
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Endpoints: &amp;lt;none&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Session Affinity: None
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;External Traffic Policy: Cluster
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events: &amp;lt;none&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The list of &lt;em&gt;Endpoints&lt;/em&gt; is empty, that is surely a problem. The Service&amp;rsquo;s selector is &lt;em&gt;app: nginx&lt;/em&gt;, let&amp;rsquo;s see the content of the Pod&amp;rsquo;s labels.&lt;/p&gt;</description></item><item><title>Solution - Ch5</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge5/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge5/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The single replica is not running&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get deploy,po -n app1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY UP-TO-DATE AVAILABLE AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;deployment.apps/nginx 0/1 &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 79m
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;pod/nginx-7b4b5bbf6f-dth6d 0/1 ImagePullBackOff &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 79m
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The description of the nginx Pod gives additional information&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl describe po pod/nginx-7b4b5bbf6f-dth6d
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type Reason Age From Message
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ---- ------ ---- ---- -------
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal BackOff 16s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x351 over 80m&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Back-off pulling image &lt;span style="color:#e6db74"&gt;&amp;#34;ngnix:1.26&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Fix it&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Edit the Deployment and replace the image name &lt;em&gt;ngnix:1.26&lt;/em&gt; with &lt;em&gt;nginx:1.26&lt;/em&gt;, a little typo can have big consequences :)&lt;/p&gt;</description></item><item><title>Solution - Ch6</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge6/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge6/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Test&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Try to create a pod:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl run ghost --image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;ghost:4
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Verify it is running:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get po
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;ghost 0/1 Pending &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 10s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;There is definitely something wrong as the pod remains in pending status.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl describe po ghost
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type Reason Age From Message
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ---- ------ ---- ---- -------
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Warning FailedScheduling 4s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 72s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; default-scheduler 0/3 nodes are available: &lt;span style="color:#ae81ff"&gt;3&lt;/span&gt; node&lt;span style="color:#f92672"&gt;(&lt;/span&gt;s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; had taint &lt;span style="color:#f92672"&gt;{&lt;/span&gt;app: secure&lt;span style="color:#f92672"&gt;}&lt;/span&gt;, that the pod didn&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;t tolerate.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It seems the 3 nodes have a taint that prevents the pod from being scheduled. We can see there are 2 taints on the master:&lt;/p&gt;</description></item><item><title>Solution - Ch7</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge7/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/11.challenges/challenge7/solution/</guid><description>&lt;p&gt;Observe the behavior of the pod you will notice the pod is automatically restarted after a few tens of seconds:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl get po -w
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;NAME READY STATUS RESTARTS AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;demo 1/1 Running &lt;span style="color:#ae81ff"&gt;0&lt;/span&gt; 2s
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;demo 1/1 Running &lt;span style="color:#ae81ff"&gt;1&lt;/span&gt; &lt;span style="color:#f92672"&gt;(&lt;/span&gt;1s ago&lt;span style="color:#f92672"&gt;)&lt;/span&gt; 76s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Going a little deeper in the details, we understand this is due to the liveness probe failing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ kubectl describe po demo
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;...
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;Events:
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Type Reason Age From Message
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ---- ------ ---- ---- -------
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Scheduled 2m8s default-scheduler Successfully assigned default/demo to worker1
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Pulled 2m7s kubelet Successfully pulled image &lt;span style="color:#e6db74"&gt;&amp;#34;k8s.gcr.io/busybox&amp;#34;&lt;/span&gt; in 578.053377ms
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Pulling 53s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 2m7s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Pulling image &lt;span style="color:#e6db74"&gt;&amp;#34;k8s.gcr.io/busybox&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Created 52s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 2m6s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Created container busybox
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Started 52s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 2m6s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Started container busybox
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Pulled 52s kubelet Successfully pulled image &lt;span style="color:#e6db74"&gt;&amp;#34;k8s.gcr.io/busybox&amp;#34;&lt;/span&gt; in 512.064103ms
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Warning Unhealthy 8s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x6 over 93s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Liveness probe failed: cat: can&lt;span style="color:#e6db74"&gt;&amp;#39;t open &amp;#39;&lt;/span&gt;/tmp/healthy&lt;span style="color:#960050;background-color:#1e0010"&gt;&amp;#39;&lt;/span&gt;: No such file or directory
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Normal Killing 8s &lt;span style="color:#f92672"&gt;(&lt;/span&gt;x2 over 83s&lt;span style="color:#f92672"&gt;)&lt;/span&gt; kubelet Container busybox failed liveness probe, will be restarted
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If we check the pod&amp;rsquo;s specification, we can see the liveness probe checks the existence of a file:&lt;/p&gt;</description></item><item><title>Solution - Drain</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/drain/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/drain/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Create a Deployment with 6 replicas of Pods based on the nginx:1.20 image&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k create deploy www --image=nginx:1.20 --replicas=4
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;Where are the pods scheduled ?&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The pods are splitted between worker1 and worker2 (because master node has a NoScheduled taint that the pods do not tolerate)&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
www-644dfdf68b-6mk2w 1/1 Running 0 33s 10.38.0.1 worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
www-644dfdf68b-crdjl 1/1 Running 0 33s 10.32.0.6 worker1 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
www-644dfdf68b-nhm7b 1/1 Running 0 33s 10.32.0.2 worker1 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
www-644dfdf68b-tsw84 1/1 Running 0 33s 10.38.0.5 worker2 &amp;lt;none&amp;gt; &amp;lt;none&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Drain the worker1 node. What happened ?&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k drain worker1 --ignore-daemonsets
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The application pods have been evicted from worker1 and are now all running on worker2&lt;/p&gt;</description></item><item><title>Solution - Metrics</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/metrics/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/metrics/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Install the metrics server (&lt;a href="https://github.com/kubernetes-sigs/metrics-server"&gt;https://github.com/kubernetes-sigs/metrics-server&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;Verify it&amp;rsquo;s not running correctly&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Trying to get the Nodes or Pods metrics should return an error&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;k top node
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;k top pod
Error from server (ServiceUnavailable): the server is currently unable to handle the request (get pods.metrics.k8s.io)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Checking the logs of the metrics-server pod will provide additional details&lt;/p&gt;</description></item><item><title>Solution - Nodes</title><link>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/node/solution/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://layer5io.github.io/exoscale-academy/pr-preview/pr-444/learning-paths/1e2a8e46-937c-47ea-ab43-5716e3bcab2e/workshop-cka-preparation/10.operations/exercises/node/solution/</guid><description>&lt;ol&gt;
&lt;li&gt;Create a Deployment named &lt;em&gt;web-app&lt;/em&gt; with 6 replicas using nginx:1.26 image&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl create deployment web-app --image&lt;span style="color:#f92672"&gt;=&lt;/span&gt;nginx:1.26 --replicas&lt;span style="color:#f92672"&gt;=&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="2"&gt;
&lt;li&gt;Create a DaemonSet named &lt;em&gt;monitoring&lt;/em&gt; using nginx:alpine image&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl create -f - &lt;span style="color:#e6db74"&gt;&amp;lt;&amp;lt;EOF
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;apiVersion: apps/v1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;kind: DaemonSet
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; name: monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; selector:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; matchLabels:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; app: monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; template:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; labels:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; app: monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; containers:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - name: monitoring
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; image: nginx:alpine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; ports:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt; - containerPort: 80
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#e6db74"&gt;EOF&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start="3"&gt;
&lt;li&gt;Check how Pods are distributed across all Nodes&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get pods -o wide
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You should see Pods are distributed across worker Nodes, and one monitoring Pod per Node.&lt;/p&gt;</description></item></channel></rss>