• Stars
    star
    421
  • Rank 102,977 (Top 3 %)
  • Language
    HTML
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Useful notes for the KCNA - Kubernetes and Cloud Native Associate

License PRs Welcome

Kubernetes-and-Cloud-Native-Associate KCNA

Note: A documentation of notes & curated useful resources to help you prepare for the Kubernetes and Cloud Native Associate Exam (KCNA) Feel free to share them :)

For any fixes, updates or new additions to the syllabus, please raise an issue or make a pull-request (PR). Thank you!

  • Regardless of you sitting the KCNA exam or not, once you have studied these topics, you will have a good overall understanding of the Cloud-Native, Containers and Kubernetes eco-system. What matters is that you enjoy the learning process. Goodluck on your learning journey!

The KCNA is a certification aimed for individuals who want to advance to the professional level by demonstrating an understanding of the core knowledge and abilities of Kubernetes. This certification is ideal for students learning about or candidates interested in working with cloud native technologies.

Exam Brief

  • Duration : 1.5 hours
  • Passing score: 75%

  • Certification validity: 3 years

  • Prerequisite: None

  • Cost: $250 USD, 1 year exam eligibility, with a free retake within the year.

  • Result: Emailed 24 hours after exam completion

  • Official KCNA curriculum

  • The exam consists of around 60 MCQ questions.

    Linux Foundation offer several discounts around the year such as CyberMonday, Kubecon and various other events - ensure to utilise these

KCNA topics overview

Practice questions for KCNA

Extra helpful materials

Useful keys & Common accronyms in Kubernetes

  • K8s = Kubernetes
  • CNCF = Cloud Native Computing Foundation
  • NetPol = Network Policies
  • PV = Persistent Volumes
  • PVC = Persistent Volume Claims
  • CSI = Container Storage Interface
  • CNI = Container Network Interface
  • CI/CD = Continuous Integration & Continuous Deployment
  • RBAC = Role Based Access Control
  • OCI = Open Container Initiative
  • CRI = Container Runtime Interface
  • SMI = Service Mesh Interface
  • SLO = Service Level Objectives
  • SLI = Service Level Indicators
  • SLA = Service Level Agreements

๐Ÿ”น 1. Kubernetes Fundamentals - 46%

1.1 Fundamental Kuberenetes resources

Pods in K8s - Click arrow to read more

Pods are the smallest deployable units of computing that you can create and manage in Kubernetes.

Deployments in K8s - Click arrow to read more

A Deployment provides declarative updates for Pods and ReplicaSets.

You describe a desired state in a Deployment, and the Deployment Controller changes the actual state to the desired state at a controlled rate. You can define Deployments to create new ReplicaSets, or to remove existing Deployments and adopt all their resources with new Deployments.

Services in K8s - Click arrow to read more

An abstract way to expose an application running on a set of Pods as a network service.

Types of Services: ClusterIP: Exposes the Service on a cluster-internal IP. Choosing this value makes the Service only reachable from within the cluster. This is the default ServiceType.

NodePort: Exposes the Service on each Node's IP at a static port (the NodePort). A ClusterIP Service, to which the NodePort Service routes, is automatically created. You'll be able to contact the NodePort Service, from outside the cluster, by requesting :.

LoadBalancer: Exposes the Service externally using a cloud provider's load balancer. NodePort and ClusterIP Services, to which the external load balancer routes, are automatically created.

ExternalName: Maps the Service to the contents of the externalName field (e.g. foo.bar.example.com), by returning a CNAME record with its value. No proxying of any kind is set up.

Reference: https://kubernetes.io/docs/concepts/services-networking/service/

ReplicaSets in K8s - Click arrow to read more

A ReplicaSet's purpose is to maintain a stable set of replica Pods running at any given time. As such, it is often used to guarantee the availability of a specified number of identical Pods.

Headless Services - Click arrow to read more

Sometimes you don't need load-balancing and a single Service IP. In this case, you can create what are termed "headless" Services, by explicitly specifying "None" for the cluster IP (.spec.clusterIP).

You can use a headless Service to interface with other service discovery mechanisms, without being tied to Kubernetes' implementation.

Useful Kubernetes commands using kubectl

kubectl get pods (obtain/list pods in current namespace)

kubectl get pods -A OR kubectl get pods --all-namespaces (obtain pods in all namespaces)

kubectl api-resources (obtain API resources that are retrievable using the kubect commands)

kubectl run nginx --image=nginx (run a pod named nginx using the nginx image)

kubectl create deploy kcna --image=nginx (create a deployment named "kcna" with the nginx image)

kubectl create deploy kcna --image=nginx --replicas=5 (create a deployment named "kcna" with the nginx image that deploys 5 pods (replicas))

1.2 Kubernetes Architecture

K8s components - Click arrow to read more

Control Plane Components

kube-apiserver:

The API server is a component of the Kubernetes control plane that exposes the Kubernetes API. The API server is the front end for the Kubernetes control plane.

The main implementation of a Kubernetes API server is kube-apiserver. kube-apiserver is designed to scale horizontallyโ€”that is, it scales by deploying more instances. You can run several instances of kube-apiserver and balance traffic between those instances.

etcd Consistent and highly-available key value store used as Kubernetes' backing store for all cluster data.

kube-scheduler: Control plane component that watches for newly created Pods with no assigned node, and selects a node for them to run on.

kube-controller-manager: Control plane component that runs controller processes.

Logically, each controller is a separate process, but to reduce complexity, they are all compiled into a single binary and run in a single process.

Some types of these controllers are:

Node controller: Responsible for noticing and responding when nodes go down. Job controller: Watches for Job objects that represent one-off tasks, then creates Pods to run those tasks to completion. Endpoints controller: Populates the Endpoints object (that is, joins Services & Pods). Service Account & Token controllers: Create default accounts and API access tokens for new namespaces.

cloud-controller-manager: A Kubernetes control plane component that embeds cloud-specific control logic. The cloud controller manager lets you link your cluster into your cloud provider's API, and separates out the components that interact with that cloud platform from components that only interact with your cluster. The cloud-controller-manager only runs controllers that are specific to your cloud provider. If you are running Kubernetes on your own premises, or in a learning environment inside your own PC, the cluster does not have a cloud controller manager.

Worker Node Components

kubelet An agent that runs on each node in the cluster. It makes sure that containers are running in a Pod.

kube-proxy kube-proxy is a network proxy that runs on each node in your cluster, implementing part of the Kubernetes Service concept.

kube-proxy maintains network rules on nodes. These network rules allow network communication to your Pods from network sessions inside or outside of your cluster.

K8s API - Click arrow to read more

Kubernetes API

The core of Kubernetes' control plane is the API server. The API server exposes an HTTP API that lets end users, different parts of your cluster, and external components communicate with one another.

The Kubernetes API lets you query and manipulate the state of API objects in Kubernetes (for example: Pods, Namespaces, ConfigMaps, and Events).

Most operations can be performed through the kubectl command-line interface or other command-line tools, such as kubeadm, which in turn use the API. However, you can also access the API directly using REST calls.

1.4 Containers

Containers - Click arrow to read more

Containers are a form of operating system virtualization. A single container might be used to run anything from a small microservice or software process to a larger application. Inside a container are all the necessary executables, binary code, libraries, and configuration files. Compared to server or machine virtualization approaches, however, containers do not contain operating system images.

This makes them more lightweight and portable, with significantly less overhead. In larger application deployments, multiple containers may be deployed as one or more container clusters. Such clusters might be managed by a container orchestrator such as Kubernetes.

Reference : https://www.netapp.com/devops-solutions/what-are-containers/

1.5 Scheduling

๐Ÿ”น 2. Container Orchestration - 22%

2.1 Containers Orchestration Fundamentals

2.2 Runtime

2.3 Security

2.4 Networking

2.5 Service Mesh

2.6 Storage

๐Ÿ”น 3. Cloud Native Architecture - 16%

Characteristics of Cloud Native Architecture - Click arrow to read more
  • High level of Automation
  • Self-healing
  • Secure by default
  • Cost-efficient
  • Easy-to-maintain
  • Scalable
Twelve-Factor App - Click arrow to read more

The Twelve Factors

  • I. Codebase: One codebase tracked in revision control, many deploys
  • II. Dependencies: Explicitly declare and isolate dependencies
  • III. Config: Store config in the environment
  • IV. Backing services: Treat backing services as attached resources
  • V. Build, release, run: Strictly separate build and run stages
  • VI. Processes: Execute the app as one or more stateless processes
  • VII. Port binding: Export services via port binding
  • VIII. Concurrency: Scale out via the process model
  • IX. Disposability: Maximize robustness with fast startup and graceful shutdown
  • X. Dev/prod parity: Keep development, staging, and production as similar as possible
  • XI. Logs: Treat logs as event streams
  • XII. Admin processes: Run admin/management tasks as one-off processes

Reference: https://12factor.net/

3.1 Autoscaling

3.2 Serverless

3.3 Community & Governance

3.4 Roles & Personas

3.5 Open Standards

๐Ÿ”น 4. Cloud Native Observability - 8%

4.1 Telemetry & Observability

4.2 Prometheus

4.3 Cost Management

๐Ÿ”น 5. Cloud Native Application Delivery - 8%

5.1 Application Delivery Fundamentals

5.2 GitOps

5.3 CI/CD

Test your knowledge - Click this for practice questions

Slack

  1. Kubernetes Community - #kcna-exam-prep
  2. Kubernetes Community
  3. Cloud Native Mentoring - #kcna

Useful training material

Useful reading material

Books

References

Useful Youtube vdeos

Useful Kubernetes repos + Next steps?

More Repositories

1

tech-vault

A list of many interview questions & real-world challenges in Tech! (https://tech-vault-web.vercel.app/)
HCL
969
star
2

Everything-Tech

A collection of online resources to help you on your Tech journey.
Go
419
star
3

CKS-Exercises-Certified-Kubernetes-Security-Specialist

A set of curated exercises to help you prepare for the CKS exam
Shell
235
star
4

CKA-Exercises

A set of curated exercises to help prepare you for the Certified Kubernetes Administrator Exam by the Cloud Native Computing Foundation
70
star
5

DevOps-Tooling

A repo containing toolings and software useful for a DevOps Engineer
Shell
54
star
6

Recommended-DevOps-certs

33
star
7

Grad-EntryLevel-Resources

A set of curated exercises and questions one can practice before going for graduate interviews and tech tests
18
star
8

ansible-mac-setup

My personal macOS monterrey setup for DevOps using Ansible
Jinja
18
star
9

devops-pathway

HTML
13
star
10

moabukar

Personal profile
13
star
11

unix-net

Repo documenting all my networking notes in the unix, containers, cloud and k8s space.
Dockerfile
13
star
12

CLI-Go

Go
4
star
13

golang-learning

My personal repo for learning GoLang
Go
4
star
14

coding-exercises

Python
4
star
15

no-hello-bot

Simple "no-hello" discord bot written in Golang
Go
4
star
16

subnet-calculator

A subnet calculator written in Golang
Go
4
star
17

everything-tech-website

website for everything-tech
TypeScript
3
star
18

EKS-setup

AWS EKS setup with managed node groups
HCL
3
star
19

dotfiles

Dotfiles & custom config for my machines
Shell
3
star
20

Leetcode-system-design

Our leetcode and system design work
2
star
21

url-shortener

A URL shortener written in Golang
Go
2
star
22

GitOps-workshop

2
star
23

DevOps

Ultimate DevOps library
2
star
24

Ansible-playaround

2
star
25

cloud-native-app

HTML
2
star
26

actions-templates

GitHub Actions custom workflows
2
star
27

EKS-Terraform

Creating an EKS cluster through Terraform
HCL
2
star
28

terra-labs

terra related tools like Terragrunt, Terratest etc
HCL
1
star
29

cks-setup

Shell
1
star
30

Terraform-Simple-Project

Terraform task
HCL
1
star
31

Git-switch

A CLI tool to switch between Git accounts
Shell
1
star
32

eks-patterns

Various EKS patterns
HCL
1
star
33

coderco-custom

CoderCo CICD Custom Action Lab
JavaScript
1
star
34

sysdev-sre-interview-guide

1
star
35

school-of-devops2

HTML
1
star
36

advent-of-code-2022

Advent of Code 2022 for TL
1
star
37

school-of-devops

A free DevOps curriculum for entry-level engineers!
HTML
1
star
38

Golang-Project

Golang playaround project
1
star
39

golang-discord

A Discord bot written in the GoLang programming language.
Go
1
star
40

todo-go

TODO app in Go
1
star
41

spacelift_test

play around with space lift
1
star
42

jenkins-learning

Java
1
star
43

ansible2.0

All my ansible playbooks and roles
Shell
1
star
44

GA-demo

Dockerfile
1
star
45

kubeflow-ml-eks

HCL
1
star
46

terraform-aws-shield-advanced

AWS Shield Advanced Terraform custom module
HCL
1
star
47

unix-learn

easy & fun way to learn UNIX & Networking
HTML
1
star
48

playground

Playground for testing and learning new tools, concepts & softwares
HTML
1
star
49

terraform-aws-ecs-traefik

Terraform module which creates a traefik ecs task
HCL
1
star
50

tech-vault-site

Tech Vault site using mkdocs
HTML
1
star
51

system-design

1
star
52

go-apis

A bunch of APIs I will be creating
Go
1
star
53

k8s-tf

K8s & Tf labs
HCL
1
star
54

argocd

Local ArgoCD test
1
star
55

advanced-go

1
star
56

aks-fluxcd

An AKS cluster that runs FluxCD
HCL
1
star
57

eks-observability

EKS with observability
HCL
1
star
58

aks

TF AKS setup
HCL
1
star
59

argocd-multi

Shell
1
star
60

zerotier-bridge

ZeroTier
Shell
1
star
61

subnet-calc

subnet calculator
HTML
1
star
62

madq

Go
1
star
63

cloud-native-demo

Cloud native demo going through ingress Controller with NGINX and Cert-Manager using DuckDNS.
HCL
1
star
64

eks-dns-ssl

Production grade EKS cluster - automation of DNS and SSL on AWS using Cert Manager, NGINX Ingress controller & External DNS on EKS.
HCL
1
star
65

cloud-native-dns

Cloud-native app with DNS (cert-manager, externalDNS with Cloudflare, NGINX ingress controller)
1
star