Introduction to Kubernetes on Edge with K3s

بواسطة: 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
الذهاب الي الدورة

Introduction to Kubernetes on Edge with K3s

بواسطة: edX

  • edX
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • أيام محددة
  • beginner
  • English
8.1.2PHP Version243msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (152ms)
    • Application (90.25ms)
    • 1 x Booting (62.63%)
      152.21ms
      1 x Application (37.13%)
      90.25ms
      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 ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed5.65ms
      • select * from `courses` where `slug_ar` = 'introduction-to-kubernetes-on-edge-with-k3s' limit 1
        4.02ms/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-04-10 03:32:37' where `id` = 858
        570μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-04-10 03:32:37
        • 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)
        280μ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)
        150μ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
        170μ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
        160μ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
        300μ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
        ndGjyysm7vpG1wMR0Hij8hmEwQSMTcLUvkcCFOHy
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/introd...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/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 => "52.14.75.150" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "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 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "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 => "92df2d969ec660a1-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" ] "x-forwarded-for" => array:1 [ 0 => "52.14.75.150" ] "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" => "52.14.75.150" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "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" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "92df2d969ec660a1-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_X_FORWARDED_FOR" => "52.14.75.150" "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" => "44834" "REMOTE_ADDR" => "172.69.7.179" "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" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/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" => 1744255957.7729 "REQUEST_TIME" => 1744255957 ]
        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 => "Thu, 10 Apr 2025 03:32:37 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlJaVVM5THNQdjN4NWI4ZTg0WFZVNUE9PSIsInZhbHVlIjoia1NyMkdsWFZhOEcyemZjQXZURU12V09mM0RiYTg2SThDRlVXR1loL1drMjdoaEVDQXhidFg4dUpodzU0MnZoVXhxOWJuVG4yOUxmKzdqb2lJTmhMeld5Z2E4czR5RHNMU1FWMVNzaENjVmNRSlNWMy9tbVlTY1JmVlMzTnJLY1UiLCJtYWMiOiIyOWJkMjhiZDExMzMwMzEyZmUwOTQ0MzQ3YWE1MGI0ZWRhOGE4OWRmMzllM2JjOTVjMDk3YmVmZGRkMTBjNDMzIiwidGFnIjoiIn0%3D; expires=Thu, 10 Apr 2025 05:32:38 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IlJaVVM5THNQdjN4NWI4ZTg0WFZVNUE9PSIsInZhbHVlIjoia1NyMkdsWFZhOEcyemZjQXZURU12V09mM0RiYTg2SThDRlVXR1loL1drMjdoaEVDQXhidFg4dUpodzU0MnZoVXhxOWJuV" 1 => "laravel_session=eyJpdiI6IjBvM09LUjIwdkQwdUlodWo1bUtRL1E9PSIsInZhbHVlIjoidE9tbHJUVEZ1WTlRbHF1M2RqME5qNU9aQkVpZEJ5OFNBU3VsdFdmMHRUMzM1MnY2UVhkc2lFaTRoZHdIWDErcEZiY250alRQUzljeWhRQXlMVE05V3NlaGVYeWhGOTVibXBjZmxNeDg4c1FLTzFpOGVuYnQvQy9BSGFsdS84ZUYiLCJtYWMiOiJjMDBiODQzMmY5MzhmYjExMjkzYmM5M2MwZWI3MmE0MDUxZTNjNjNjYTJiOGIyOGM5MWJiODM4ODBhZGIwN2NmIiwidGFnIjoiIn0%3D; expires=Thu, 10 Apr 2025 05:32:38 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IjBvM09LUjIwdkQwdUlodWo1bUtRL1E9PSIsInZhbHVlIjoidE9tbHJUVEZ1WTlRbHF1M2RqME5qNU9aQkVpZEJ5OFNBU3VsdFdmMHRUMzM1MnY2UVhkc2lFaTRoZHdIWDErcEZi" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IlJaVVM5THNQdjN4NWI4ZTg0WFZVNUE9PSIsInZhbHVlIjoia1NyMkdsWFZhOEcyemZjQXZURU12V09mM0RiYTg2SThDRlVXR1loL1drMjdoaEVDQXhidFg4dUpodzU0MnZoVXhxOWJuVG4yOUxmKzdqb2lJTmhMeld5Z2E4czR5RHNMU1FWMVNzaENjVmNRSlNWMy9tbVlTY1JmVlMzTnJLY1UiLCJtYWMiOiIyOWJkMjhiZDExMzMwMzEyZmUwOTQ0MzQ3YWE1MGI0ZWRhOGE4OWRmMzllM2JjOTVjMDk3YmVmZGRkMTBjNDMzIiwidGFnIjoiIn0%3D; expires=Thu, 10-Apr-2025 05:32:38 GMT; path=/XSRF-TOKEN=eyJpdiI6IlJaVVM5THNQdjN4NWI4ZTg0WFZVNUE9PSIsInZhbHVlIjoia1NyMkdsWFZhOEcyemZjQXZURU12V09mM0RiYTg2SThDRlVXR1loL1drMjdoaEVDQXhidFg4dUpodzU0MnZoVXhxOWJuV" 1 => "laravel_session=eyJpdiI6IjBvM09LUjIwdkQwdUlodWo1bUtRL1E9PSIsInZhbHVlIjoidE9tbHJUVEZ1WTlRbHF1M2RqME5qNU9aQkVpZEJ5OFNBU3VsdFdmMHRUMzM1MnY2UVhkc2lFaTRoZHdIWDErcEZiY250alRQUzljeWhRQXlMVE05V3NlaGVYeWhGOTVibXBjZmxNeDg4c1FLTzFpOGVuYnQvQy9BSGFsdS84ZUYiLCJtYWMiOiJjMDBiODQzMmY5MzhmYjExMjkzYmM5M2MwZWI3MmE0MDUxZTNjNjNjYTJiOGIyOGM5MWJiODM4ODBhZGIwN2NmIiwidGFnIjoiIn0%3D; expires=Thu, 10-Apr-2025 05:32:38 GMT; path=/; httponlylaravel_session=eyJpdiI6IjBvM09LUjIwdkQwdUlodWo1bUtRL1E9PSIsInZhbHVlIjoidE9tbHJUVEZ1WTlRbHF1M2RqME5qNU9aQkVpZEJ5OFNBU3VsdFdmMHRUMzM1MnY2UVhkc2lFaTRoZHdIWDErcEZi" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "ndGjyysm7vpG1wMR0Hij8hmEwQSMTcLUvkcCFOHy" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/introduction-to-kubernetes-on-edge-with-k3s" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]