Skip to content

moabukar/Kubernetes-and-Cloud-Native-Associate-KCNA

Repository files navigation

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

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?