Introduction to Kubernetes on Edge with K3s

Brought by: edX

Overview

There is a growing interest in running software at the edge. This course takes a deep dive into the use cases and applications of Kubernetes at the edge using examples, labs, and a technical overview of the K3s project and the cloud native edge ecosystem.

This course is designed for those interested learning more about Kubernetes, as well as in deploying applications or embedded sensors in edge locations. While learners do not need a Kubernetes certification for this course, experience with a Linux operating system and shell scripting will be beneficial. Programming experience is also not strictly required. Learners will need to be able to run Docker on their computer.

In this course, you will learn the use cases for running compute in edge locations and about various supporting projects and foundations such as LF Edge and CNCF. The course covers how to deploy applications to the edge with open source tools such as K3s and k3sup, and how those tools can be applied to low-power hardware such as the Raspberry Pi. You will learn the challenges associated with edge compute, such as partial availability and the need for remote access. Through practical examples, students will gain experience of deploying applications to Kubernetes and get hands-on with object storage, MQTT and OpenFaaS. It also introduces the fleet management and GitOps models of deployment, and helps you understand messaging, and how to interface with sensors and real hardware.

This course will enable developers to learn about the growing impact the cloud native movement is having on modernizing edge deployments. They will also learn the challenges of deploying Kubernetes on the edge through a concrete example via the k3s project.

Syllabus

  • Welcome

  • Ch 1. The Case for Edge Compute

  • Ch 2. The Edge Compute Landscape

  • Ch 3. Scaling Down and System-on-Chip Devices

  • Ch 4. What Is K3s and Why Is It needed?

  • Ch 5. Setting Up Your Lab Environment

  • Ch 6. Kubernetes API Primitives

  • Ch 7. Functions at the Edge

  • Ch 8. Command & Control and Remote Access

  • Ch 9. Deployment Strategies for Applications at the Edge

  • Ch 10. Challenges with Edge

  • Ch 11. Further Resources

  • Final Exam (verified track only)

Taught by

Alex Ellis

Introduction to Kubernetes on Edge with K3s
Go to course

Introduction to Kubernetes on Edge with K3s

Brought by: edX

  • edX
  • Free
  • English
  • Certificate Available
  • Certain days
  • beginner
  • English
8.1.2PHP Version1.01sRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (668ms)
    • Application (339ms)
    • 1 x Booting (66.14%)
      667.81ms
      1 x Application (33.62%)
      339.44ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed8.53ms
      • select * from `courses` where `slug_en` = 'introduction-to-kubernetes-on-edge-with-k3s' limit 1
        6.92ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. introduction-to-kubernetes-on-edge-with-k3s
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-06-14 14:01:14' where `id` = 858
        480μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-14 14:01:14
        • 1. 858
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (64)
        230μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (17) and `institutions`.`deleted_at` is null
        220μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (1) and `providers`.`deleted_at` is null
        210μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 852 limit 1
        280μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 852
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        OeDqwK0l732lXzWP5UVtKkVdeEYAJJBF1gTUUbdU
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/introduction-to-kubernetes-on-edge-with-k...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/introduction-to-kubernetes-on-edge-with-k3s
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.8" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.8" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "94fa5bc18a20e7f8-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.8" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.8" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "94fa5bc18a20e7f8-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "38406" "REMOTE_ADDR" => "108.162.216.115" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/introduction-to-kubernetes-on-edge-with-k3s" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1749909673.49 "REQUEST_TIME" => 1749909673 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 14 Jun 2025 14:01:14 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Im43eHF2Y3RnamRhMTJIWVdlSmJTUHc9PSIsInZhbHVlIjoiN1k1NlM3YlVhM25RMG5laFQwQnJaRFYrWFZ2TXpGNkEyR21CZkJldWduK3R6UmRWNXpoZHpjTEVqN2xCRHpOVitoNGkxSlhKK2U5QVUxQXlkRDJ4cHNBR0dtN043UVdVWnhGVHhSSmZzL2FFZ0lXa3pOR052Z2ozN21kS2dFNmUiLCJtYWMiOiI1NThkMzBlY2M0NmUyNGMwYTVjZjhjMmJkZWFhM2E2ODc2NTlmMzI3NzM4YTI5ZTNmOGM4MjM4YTc0ZjQ0Y2UyIiwidGFnIjoiIn0%3D; expires=Sat, 14 Jun 2025 16:01:14 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Im43eHF2Y3RnamRhMTJIWVdlSmJTUHc9PSIsInZhbHVlIjoiN1k1NlM3YlVhM25RMG5laFQwQnJaRFYrWFZ2TXpGNkEyR21CZkJldWduK3R6UmRWNXpoZHpjTEVqN2xCRHpOVitoNGkxS" 1 => "laravel_session=eyJpdiI6IndrZlViQlpwSTREQ0Rhak1sS0Q0a2c9PSIsInZhbHVlIjoiVllXcUNlSXZvOTh6ZjFXZFovZFd3THFwYTd1Z2tjR0lRc2hRWWlLWGZ3ejdEVTk2Rk5GL216alZIbTJhREJoUm5BN3pnR1hwZGpTSDZuVWlTbTd1QjEyOWUrck9CN2FkUjhBaGpuTVVQb3M5bkROWlZwYm1jbkdFZVB0VEVBMnIiLCJtYWMiOiJlZWRlM2I0OGZlOGI0MmRjZWFkYTUyNWQzNmQ2ZTc5ZGQyZGQ2NjZiNzI5ODZlOTVmYTAyYTY2NzE2MjBhNGQ3IiwidGFnIjoiIn0%3D; expires=Sat, 14 Jun 2025 16:01:14 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IndrZlViQlpwSTREQ0Rhak1sS0Q0a2c9PSIsInZhbHVlIjoiVllXcUNlSXZvOTh6ZjFXZFovZFd3THFwYTd1Z2tjR0lRc2hRWWlLWGZ3ejdEVTk2Rk5GL216alZIbTJhREJoUm5B" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Im43eHF2Y3RnamRhMTJIWVdlSmJTUHc9PSIsInZhbHVlIjoiN1k1NlM3YlVhM25RMG5laFQwQnJaRFYrWFZ2TXpGNkEyR21CZkJldWduK3R6UmRWNXpoZHpjTEVqN2xCRHpOVitoNGkxSlhKK2U5QVUxQXlkRDJ4cHNBR0dtN043UVdVWnhGVHhSSmZzL2FFZ0lXa3pOR052Z2ozN21kS2dFNmUiLCJtYWMiOiI1NThkMzBlY2M0NmUyNGMwYTVjZjhjMmJkZWFhM2E2ODc2NTlmMzI3NzM4YTI5ZTNmOGM4MjM4YTc0ZjQ0Y2UyIiwidGFnIjoiIn0%3D; expires=Sat, 14-Jun-2025 16:01:14 GMT; path=/XSRF-TOKEN=eyJpdiI6Im43eHF2Y3RnamRhMTJIWVdlSmJTUHc9PSIsInZhbHVlIjoiN1k1NlM3YlVhM25RMG5laFQwQnJaRFYrWFZ2TXpGNkEyR21CZkJldWduK3R6UmRWNXpoZHpjTEVqN2xCRHpOVitoNGkxS" 1 => "laravel_session=eyJpdiI6IndrZlViQlpwSTREQ0Rhak1sS0Q0a2c9PSIsInZhbHVlIjoiVllXcUNlSXZvOTh6ZjFXZFovZFd3THFwYTd1Z2tjR0lRc2hRWWlLWGZ3ejdEVTk2Rk5GL216alZIbTJhREJoUm5BN3pnR1hwZGpTSDZuVWlTbTd1QjEyOWUrck9CN2FkUjhBaGpuTVVQb3M5bkROWlZwYm1jbkdFZVB0VEVBMnIiLCJtYWMiOiJlZWRlM2I0OGZlOGI0MmRjZWFkYTUyNWQzNmQ2ZTc5ZGQyZGQ2NjZiNzI5ODZlOTVmYTAyYTY2NzE2MjBhNGQ3IiwidGFnIjoiIn0%3D; expires=Sat, 14-Jun-2025 16:01:14 GMT; path=/; httponlylaravel_session=eyJpdiI6IndrZlViQlpwSTREQ0Rhak1sS0Q0a2c9PSIsInZhbHVlIjoiVllXcUNlSXZvOTh6ZjFXZFovZFd3THFwYTd1Z2tjR0lRc2hRWWlLWGZ3ejdEVTk2Rk5GL216alZIbTJhREJoUm5B" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "OeDqwK0l732lXzWP5UVtKkVdeEYAJJBF1gTUUbdU" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/introduction-to-kubernetes-on-edge-with-k3s" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]