Completek8s Classroomnotes 20/Sep/2023

Scheduling and Tooling

  • K8s Cluster can contain multiple nodes and workloads are scheduled on the node by kube-schedule and there are different factors influencing the decision to select the node
    • node selector
    • node affinity
    • taints and tolerations
  • Container Resource Limits influence this decision as kube-Scheduler will sum all the requests of container in a Pod spec and schedules it on a suitable node
  • If the Pod doesnot schedule due to insufficient resources available on nodes in the Events we will see the following reasons
    • PodExceedsFreeCpu
    • PodExceedsFreeMemory

Node-Selector

  • Refer Here for official docs
  • Lets label two nodes
    • node2:
      • labels
        • diskspeed=high
    • node3:
      • labels:
        • diskspeed=low
          Preview
  • Lets create a Pod and specify the selection based on diskspeed=high which has a match and one more pod which doesnot match. Refer Here for the changeset
  • Pod will be scheduled on node matching labels but not on not matching scenarios

Node Affinity

  • Refer Here for official docs
  • Refer Here for nodeAffinity with hard and soft rules
  • Non Matching hard will not be scheduled
    Preview
  • podAffinity speaks about running a pod on the same node as some other pod with matching conditions and reverse of it is podAntiAffinity
  • Refer Here for the manifests

Taints and Tolerations

  • Taint is a property of a node to repel the pods. Only pods who have toleration for the taint will be scheduled on the node.
  • Usecases:
    • Dedicated Hardware:
    • Evictions
  • Refer Here for official docs
  • Taint Effects:
    • NoSchedule
    • NoExecute
    • PreferNoShedule
  • Taint nodes kubectl taint nodes <node-name> <taint:key>=<taint:value>:<taint-effect>

Yaml Processor

  • The tool yq is used to read, modify and enhance contents of YAML file.
  • Refer Here for the docs
    Preview
  • Exercise 1: Try more samples on modifying yaml files
  • Exercise 2:
  • Create a Deployment using nopCommerce Docker image
  • Create a stateful set using mysql Container

Published
Categorized as Uncategorized Tagged

By continuous learner

devops & cloud enthusiastic learner

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Please turn AdBlock off
Social Media Icons Powered by Acurax Web Design Company

Discover more from Direct DevOps from Quality Thought

Subscribe now to keep reading and get access to the full archive.

Continue reading

Visit Us On FacebookVisit Us On LinkedinVisit Us On Youtube