Giter Site home page Giter Site logo

adamhancock / kubernetes-certified-administrator Goto Github PK

View Code? Open in Web Editor NEW

This project forked from walidshaari/kubernetes-certified-administrator

1.0 1.0 1.0 120 KB

Online resources that will help you prepare for taking the CNCF CKA 2020 "Kubernetes Certified Administrator" Certification exam. with time, This is not likely the comprehensive up to date list - please make a pull request if there something that should be added here.

License: Creative Commons Attribution Share Alike 4.0 International

kubernetes-certified-administrator's Introduction

Kubernetes Certified Administration

Online resources that will help you prepare for taking the Kubernetes Certified Administrator Certification exam.

Disclaimer: This is not likely a comprehensive list as the exam will be a moving target with the fast pace of k8s development - please make a pull request if there something wrong, should be added, or updated.

I tried to restrict the cross references of resources to kubernetes.io. Youtube videos and other blog resources are optional; however, I still found them useful in my k8s learning journey.

Ensure you have the right version of Kubernetes documentation selected (e.g. v1.19 as of 1st Sept 2020 exam) especially for API objects and annotations.

LDR: practice practice practice

Other CK exams:

CKA 2020 Exam Objectives

These are the exam objectives you review and understand in order to pass the test.

  1. Manage role based access control
  2. Use kubeadm to install a basic cluster
  3. Manage a highly available Kubernetes cluster Weaveworks Kubeadm HA cluster
  4. Provision underlying infrastructure to deploy Kubernetes cluster
  5. Peform a version upgrade on Kubernetes cluster using kubeadm
  6. implment etcd backup and restore

Kubecon Europe 2020: Kubeadm deep dive

sample commands used during backup/restore/update of nodes

#etcd backup and restore brief
export ETCDCTL_API=3  # needed to specify etcd api versions, not sure if it is needed anylonger with k8s 1.19+ 
etcdctl snapshot save -h   #find save options
etcdctl snapshot restore -h  #find restore options

## possible example of save, options will change depending on cluster context, as TLS is used need to give ca,crt, and key paths
etcdctl snapshot save /backup/snapshot.db  --cert=/etc/kubernetes/pki/etcd/server.crt  --key=/etc/kubernetes/pki/etcd/server.key --cacert=/etc/kubernetes/pki/etcd/ca.crt


# evicting pods/nodes and bringing back node back to cluster
kubectl drain  <node># to drain a node
kubectl uncordon  <node> # to return a node after updates back to the cluster from unscheduled state to Ready
kubectl cordon  <node>   # to not schedule new pods on a node

#backup/restore the cluster (e.g. the state of the cluster in etcd)


# upgrade kubernetes worker node
kubectl drain <node>
apt-get upgrade -y kubeadm=<k8s-version-to-upgrade>
apt-get upgrade -y kubelet=<k8s-version-to-upgrade>
kubeadm upgrade node config --kubelte-version <k8s-version-to-upgrade>
systemctl restart kubelet
kubectl uncordon <node>


#kubeadm upgrade steps
kubeadm upgrade plan
kubeadm upgrade apply


Workloads & Scheduling – 15%

  1. Understand deployments and how to perform rolling update and rollbacks
  2. Use ConfigMaps and Secrets to configure applications
  1. Know how to scale applications
  1. Understand the primitives used to create robust, self-healing, application deployments
  1. Understand how resource limits can affect Pod scheduling
  2. Awareness of manifest management and common templating tools

Services & Networking – 20%

  1. Understand host networking configuration on the cluster nodes
  2. Understand connectivity between Pods
  1. Understand ClusterIP, NodePort, LoadBalancer service types and endpoints
  2. Know how to use Ingress controllers and Ingress resources
  • Ingress concepts
  1. Know how to configure and use CoreDNS
  2. Choose an appropriate container network interface plugin

Storage – 10%

  1. Understand storage classes, persistent volumes
  2. Understand volume mode, access modes and reclaim policies for volumes
  3. Understand persistent volume claims primitive
  4. Know how to configure applications with persistent storage
StorageClass, PersistentVolume, and PersitentVolumeClaim examples

#### Storage Class example
#

#### Persistent Volume Claim example
#
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: local-pvc
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: local-storage-sc
  resources:
    requests:
      storage: 100Mi

## Persistent Volume example
#
apiVersion: v1
kind: PersistentVolume
metadata:
  name: local-pv
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 200Mi
  local:
    path: /data/pv/disk021
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-storage-sc
  volumeMode: Filesystem
  
###  Pod using the pvc
#
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    volumeMounts:
      - name: local-persistent-storage
        mountPath: /var/www/html
  volumes:
    - name: local-persistent-storage
      persistentVolumeClaim:
        claimName: local-pvc

Troubleshooting – 30%

  1. Evaluate cluster and node logging
  2. Understand how to monitor applications
  3. Manage container stdout & stderr logs
  4. Troubleshoot application failure
  5. Troubleshoot cluster component failure
  6. Troubleshoot networking

Tips:

practice pratice pratice

Get familiar with:

     $kubectl get pods -o wide  --show-labels  --all-namespaces
     or
     $kubectl get pods -o wide  --show-labels  -A     # -A is quicker than --all-namespaces
  • In kubectl utilizie --all-namespaces or better -A to ensure deployments, pods, objects are on the right name space, and right desired state

  • for events and troubleshooting utilize kubectl describe if its pod/resource related and logs if it is application issue related

     $kubectl describe pods <PODID>   # for pod, deployment, other k8s resource issues/events
     $kubectl logs <PODID>            # for container/application issues like crash loops
     
  • the '-o yaml' in conjuction with --dry-run allows you to create a manifest template from an imperative spec, combined with --edit it allows you to modify the object before creation
kubectl create service clusterip my-svc -o yaml --dry-run > /tmp/srv.yaml
kubectl create --edit -f /tmp/srv.yaml
  • use kubectl aliases to speed up and reduce typo errors, practice these alaises early at your work and study for the exam. some example aliases:
alias k='kubectl'
alias kg='kubectl get'
alias kgpo='kubectl get pod'

alias ksysgpo='kubectl --namespace=kube-system get pod'

alias krm='kubectl delete'
alias krmf='kubectl delete -f'
## for quick deletes you can add --force --grace-period=0
alias krmgf='kubectl delete --grace-period 0 --force'
alias kgsvcoyaml='kubectl get service -o=yaml'
alias kgsvcwn='watch kubectl get service --namespace'
alias kgsvcslwn='watch kubectl get service --show-labels --namespace'

#example usage of aliases
krmgf nginx-8jk71    # kill pod nginx-8jk71 using grace period 0 and force

Miscellaneous (resources not allowed during exam):

  1. Troubleshooting use cases by Ian/Container solutions

Popular Courses

Most of these course as of this commit are not 100% updated with the CKA 2020.

What's Next:

kubernetes-certified-administrator's People

Contributors

abdennour avatar aisuko avatar antiarchitect avatar arsenvlad avatar jmcshane avatar jul-reb avatar matthewfischer avatar mgaruccio avatar normanjoyner avatar tej-singh-rana avatar walidshaari avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

pchar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.