Skip to content

Update: INTRO Kubernetes Learning Path #633

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions content/en/learning-paths/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
title: Learning Paths
description: Learn about the various learning paths available in the Layer5 ecosystem.
linkTitle: Learning Paths
type: docs
cascade:
type: docs
---

{{% pageinfo %}}

### Learning Paths

{{% /pageinfo %}}
8 changes: 8 additions & 0 deletions content/en/learning-paths/intro-kubernetes-course/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
title: "INTRO Kubernetes - Course"
description: "New to container and container orchestration? This level 100 INTRO Kubernetes - Course covers the foundational topics for a non-technical audience and conveys the benefits of containers and container orchestration for modern IT scenarios. It will help you learn the basics of terminology associated, understand the essential components' functions, and understand why these new technologies are so important."
themeColor: "#3C494F"
cardImage: "/images/learning-path/kubernetes-icon.svg"
courses: 1
weight: 1
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
docType: "Course"
title: "1. Why Containers?"
description: "This section provides an introduction to containers, their architecture, and how they are used in modern software development."
lectures: 4
courseTitle: "Why Containers?"
themeColor: "#00B39F"
order: 1
cardImage: ""
toc:
[
"experience-we-want-to-change",
"new-ideas-and-concepts",
"container-benefits",
"history-of-application-deployments",
]
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
docType: "Chapter"
id: "Container Benefits"
chapterTitle: "Container Benefits"
description: ""
lectures: 4
title: "Container Benefits"
weight: 3
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">Container Benefits</h2>

1. **dev and ops separation of concerns** create application container images at build/release time rather than deployment time, thereby decoupling applications from infrastructure

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l3_1.png" width="100%" align="center" alt="DevOps" >}}

2. **continuous development, integration, and deployment** provides for reliable and frequent container image build and deployment with quick and efficient rollbacks – due to image immutability

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l3_2.png" width="100%" align="center" alt="Mutable vs Immutable" >}}

3. **environmental consistency across dev, test, and prod** runs the same on a laptop as it does on an on-premises server, virtualized server, and in the cloud

4. **OS distribution and cloud portability** runs on Ubuntu, RHEL, CoreOS, on major public clouds, on-premises, and anywhere else

5. **resource utilization and isolation benefits** higher efficiency and density due to better utilization and predictable application performance due to isolation

6. **loosely coupled, distributed, elastic microservices** applications are broken into smaller, independent pieces and can be deployed and managed dynamically – not a monolithic stack running on one big single-purpose machine

7. **agile application creation and deployment** increased ease and efficiency of container image creation compared to VM image use

8. <strong>application-centric management</strong> raises abstraction level:
<ul>
<li>from running applications on an OS using virtual hardware</li>
<li>to running applications on an OS using logical resources</li>
</ul>

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
docType: "Chapter"
id: "Experiences we want to change!"
chapterTitle: "Experiences we want to change!"
description: ""
lectures: 4
title: "Experiences we want to change!"
weight: 1
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">Why Containers?</h2>

Many people have a complex job building, testing, and running systems based on old concepts and technology in today'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.

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l1_1.png" width="100%" align="center" alt="Why Container?" >}}

<h2 class="chapter-sub-heading">Experiences we want to change!</h2>

<h3 class="chapter-sub-heading">BUILD - Life of a Developer</h3>

Here you see a developer who brought her code into production, only to find out that it didn't run like on her laptop ...

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l1_2.png" width="50%" align="center" alt="" >}}

<h3 class="chapter-sub-heading">TEST - Life of System Architects</h3>

Here you can see system architects who mistakenly made a load test on a production server ...

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l1_3.png" width="50%" align="center" alt="" >}}

<h3 class="chapter-sub-heading">RUN - Life of a System Administrator</h3>

Here you can see a system administrator who was woken at 3 am to restart a process ...

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l1_4.png" width="50%" align="center" alt="" >}}

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
---
docType: "Chapter"
id: "History of Application Deployments"
chapterTitle: "History of Application Deployments"
description: ""
lectures: 4
title: "History of Application Deployments"
weight: 4
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">History of Application Deployments</h2>

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l4_1.png" width="100%" align="center" alt="Application Deployments" >}}

<h2 class="chapter-sub-heading">Traditional Deployment</h2>

Early on, organizations ran applications on physical servers. There was no way to define resource boundaries for applications in a physical server, and this caused resource allocation issues. For example, if multiple applications run on a physical server, there can be instances where one application would take up most of the resources, and as a result, the other applications would underperform. A solution for this would be to run each application on a different physical server. But this did not scale as resources were underutilized, and it was expensive for organizations to maintain many physical servers.

<h2 class="chapter-sub-heading">Virtualized Deployment</h2>

As a solution, virtualization was introduced. It allows you to run multiple Virtual Machines (VMs) on a single physical server's CPU. Virtualization allows applications to be isolated between VMs and provides a level of security as the information of one application cannot be freely accessed by another application. Virtualization allows better utilization of resources in a physical server and allows better scalability because an application can be added or updated easily, reduces hardware costs, and much more. With virtualization, you can present a set of physical resources as a cluster of disposable virtual machines. Each VM is a full machine running all the components, including its own operating system, on top of the virtualized hardware.

<h2 class="chapter-sub-heading">Container Deployment</h2>

Containers are similar to VMs, but they have relaxed isolation properties to share the Operating System (OS) among the applications. Therefore, containers are considered lightweight. Similar to a VM, a container has its own file system, share of CPU, memory, process space, and more. As they are decoupled from the underlying infrastructure, they are portable across clouds and OS distributions.

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
docType: "Chapter"
id: "New Ideas & Concepts"
chapterTitle: "New Ideas & Concepts"
description: ""
lectures: 4
title: "New Ideas & Concepts"
weight: 2
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">New Ideas & Concepts</h2>

As often in IT, great "new" ideas and concepts are recycled or borrowed from others. So it happened that the shipping industry was a big inspiration for optimizing IT infrastructure operations more than two decades ago.

The concept of a container to standardize the packing of goods, make them universal to handle and transport on different means of transportation to improve efficiency and reduce the transportation costs was a real success story for the transportation industry.

Replication of success is always desirable and sparked a new way of operating IT infrastructures indifferent of application on development, testing, or production.

Container Technology in the shipping industry Instead of thinking up a separate way of shipping for each product, placing the goods in steel containers designed for pickup by the crane on the dock and fit into the ship is a more efficient way to do transport at scale.

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l2_1.png" width="100%" align="center" alt="A Container Ship" >}}

In streamlining the processes and the loading of the goods in standardized containers, the goods can be moved as one unit in a space-saving and cost-effective manner.

Container Technology in the IT industry Computer container technology in the IT industry addresses similar challenges to steel containers in the shipping industry:

<ul>
<li>increase compatibility</li>
<li>reduce dependencies</li>
<li>develop, deploy and operate easier</li>
</ul>

{{< image src="/images/learning-path/intro-kubernetes/containers/c1_l2_2.png" width="50%" align="center" alt="Docker" >}}

In streamlining the processes and the apps' packaging in containers, deploying and running apps as one unit become a more performant and resource-effective process.

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
docType: "Course"
title: "6. Why Exoscale SKS?"
description: "Learn about Exoscale's Kubernetes Service (SKS) and how it provides a managed Kubernetes experience tailored for European users."
lectures: 2
courseTitle: "Why Exoscale SKS?"
themeColor: "#00B39F"
order: 6
cardImage: ""
toc:
[
"scalable-kubernetes-service",
"packaging-pricing",
]
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
docType: "Chapter"
id: "Packaging & Pricing"
chapterTitle: "Packaging & Pricing"
description: ""
lectures: 2
title: "Packaging & Pricing"
weight: 2
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">Packaging & Pricing</h2>

{{< image src="/images/learning-path/intro-kubernetes/exoscale-sks/c6_l2_1.png" width="100%" align="center" alt="Exoscale SKS - Packaging & Pricing" >}}

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
docType: "Chapter"
id: "Scalable Kubernetes Service"
chapterTitle: "Scalable Kubernetes Service"
description: ""
lectures: 2
title: "Scalable Kubernetes Service"
weight: 1
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">Scalable, On-demand Kubernetes Cluster</h2>

Start with a privacy-minded public cloud to host from single applications to complex architectures. Deploy a production-ready cluster in 90 seconds and manage it with a simple web portal, CLI, API or your choice of tools (Terraform).

{{< image src="/images/learning-path/intro-kubernetes/exoscale-sks/c6_l1_1.png" width="30%" align="center" alt="" >}}

<h2 class="chapter-sub-heading" >SKS Features</h2>

**Access to all compute instance types**

It is your cluster on your terms. Size the Node-Pools as needed, using all instance types available. Attach one Node-Pool with Memory-Optimized instances and another one with CPU-Optimized ones.

**Full cluster lifecycle management**

Kubernetes is a fast-changing platform, and versions roll out fast. SKS has built-in commands to upgrade your control plane seamlessly – minimizing downtimes and errors.

**Integration with NLB and Instance Pools**

Manage ingress traffic with Exoscale Network Load Balancer support directly integrated into SKS management. Scale pools from Kubernetes using Instance Pools.

**High-Availability control plane**

With the PRO SKS plan, benefit from a resilient HA Kubernetes control plane, so your workloads are always up.

**Simple and transparent pricing**

With a free STARTER version and an affordable PRO plan, SKS provides straightforward pricing. Nodes are charged their usual rate with no extra cluster management fee.

**All zones**

Deploy your cluster where you need to, in the region that suits your latency, privacy or redundancy strategy.

{{< image src="/images/learning-path/intro-kubernetes/exoscale-sks/c6_l2_1.png" width="100%" align="center" alt="" >}}

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
docType: "Course"
title: "4. Kubernetes Building Blocks"
description: "Learn the details of Kubernetes, including its architecture, components, and how it manages containerized applications."
lectures: 4
courseTitle: "Kubernetes Building Blocks"
themeColor: "#00B39F"
order: 3
cardImage: ""
toc:
[
"important-building-blocks",
"pods",
"replicasets",
"deployments",
"daemonsets",
"ingress",
"cronjobs",
]
---
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
docType: "Chapter"
id: "CRONJOBs"
chapterTitle: "CRONJOBs"
description: "CronJobs are part of the Batch API for creating short-lived non-server tools. They provide a method for scheduling the execution of Pods, making them excellent for running periodic tasks like backups, reports, and automated tests."
lectures: 7
title: "CRONJOBs"
weight: 7
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">CRONJOBs</h2>

Use familiar **cron** syntax to schedule tasks. CronJobs are part of the Batch API for creating short-lived non-server tools. CronJobs provide a method for scheduling the execution of Pods. They are excellent for running periodic tasks like backups, reports, and automated tests.

{{< image src="/images/learning-path/intro-kubernetes/kubernetes_building_blocks/c4_l7_1.png" width="100%" align="center" alt="CRONJOBs" >}}

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
docType: "Chapter"
id: "DEAMONSETs"
chapterTitle: "DEAMONSETs"
description: "DaemonSets have many use cases – one frequent pattern is to use DaemonSets to install or configure each host node. DaemonSets provide a way to ensure that a Pod copy is running on every node in the cluster. As a cluster grows and shrinks, the DaemonSet spreads these specially labelled Pods across all nodes."
lectures: 7
title: "DEAMONSETs"
weight: 4
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">DEAMONSETs</h2>

DaemonSets have many use cases – one frequent pattern is to use DaemonSets to install or configure each host node. DaemonSets provide a way to ensure that a Pod copy is running on every node in the cluster. As a cluster grows and shrinks, the DaemonSet spreads these specially labelled Pods across all nodes.

{{< image src="/images/learning-path/intro-kubernetes/kubernetes_building_blocks/c4_l4_1.gif" width="100%" align="center" alt="DEAMONSETs" >}}

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
docType: "Chapter"
id: "DEPLOYMENTs"
chapterTitle: "DEPLOYMENTs"
description: "Deployments are a higher-order abstraction that controls deploying and maintaining a set of Pods. They support sophisticated logic for deploying, updating, and scaling Pods within a cluster."
lectures: 7
title: "DEPLOYMENTs"
weight: 4
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">DEPLOYMENTs</h2>

A ReplicaSet's purpose is to maintain a stable set of replica Pods running at any given time to guarantee the avaiA Deployment is a higher-order abstraction that controls deploying and maintaining a set of Pods. Behind the scenes, it uses a ReplicaSet to keep the Pods running, but it offers sophisticated logic for deploying, updating, and scaling a set of Pods within a cluster. Deployments support rollbacks and rolling updates. Rollouts can be paused if needed.

{{< image src="/images/learning-path/intro-kubernetes/kubernetes_building_blocks/c4_l4_1.gif" width="100%" align="center" alt="DEPLOYMENTs" >}}

{{< /chapterstyle >}}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
docType: "Chapter"
id: "Important Building Blocks"
chapterTitle: "Important Building Blocks"
description: ""
lectures: 7
title: "Important Building Blocks"
weight: 1
---
{{< chapterstyle >}}

<h2 class="chapter-sub-heading">Important Building Blocks</h2>

An application running on Kubernetes is a workload. Whether your workload is a single component or several that work together, on Kubernetes, you run it inside a set of Pods. In Kubernetes, a Pod represents a set of running containers on your cluster.

A critical fault on the node where your Pod runs means that all the Pods on that node fail. Kubernetes treats that level of failure as final: you would need to create a new Pod to recover, even if the node later becomes healthy. However, to make life easier, you don't need to manage each Pod directly.

Instead, you can use workload resources that address a set of Pods on your behalf. These resources configure controllers that ensure the correct number and right kind of Pods are running to match the state you specified. Kubernetes provides several built-in workload resources: Pods, ReplicaSet, Deployment, DaemonSet, Ingress, and CronJob, to name a few of those building blocks.

{{< image src="/images/learning-path/intro-kubernetes/kubernetes_building_blocks/c4_l1_1.png" width="100%" align="center" alt="Important Building Blocks" >}}

{{< /chapterstyle >}}
Loading