DevOps Classroom Series – 14/Nov/2020

Kubernetes Objects

  • Every k8s object can be describe using .yaml (specification) or json when using with rest api and passed accross to kube-api server via kubectl or k8s REST API. The cluster responds back with status
  • While describing object spec, we will have some required fields
    • apiVersion: Which version of k8s api are you using to create this object
    • kind: what kind of k8s object do you want to create
    • metadata: Data which is helpful in uniquely identifying the object, here we will be have name, UID and optional namespace
    • spec: What is your desired state

K8s Workloads

  • Workload is an application running on k8s cluster.
  • A Pod has a defined lifecycle. If the pod fails, we need to create the new pod running the same application, K8s has workload resources which can maintain desired state of pods
  • Workload resources are
    • Deployments
    • Replica Sets
    • Stateful Sets
    • Daemon Sets
    • Job and Cron Job

The Pod Manifest

  • Pods are described in a Pod Manifest which is a text-file representation of k8s API Object.
  • Creating a Pod in a imperative kubectl run command Preview
  • Creating a Pod using a manifest file
  • Refer Here for the pod manifest Preview Preview
  • Accessing your pod: Preview Preview
  • Logs information of your pod: Preview
  • Running commands in your container with exec Preview Preview Exercise: Create a pod manifest for spring petclinic by using api reference Refer Here
  • Refer Here for the spc solution
  • Top commands in k8s cluster Preview
  • Resource Management:
    • Resource Requests for Minimum required resources and maximum limits Refer Here
    • Refer Here for resource limits in a pod.
    • Refer Here for multi container pod

K8s API Groups

  • K8s groups api’s as api groups.
  • The major purpose is to extend k8s
  • Refer Here for api groups
  • To use resources from api groups the naming convention is <GROUP_NAME>/<VERSION> in yaml file
    • batch/v1
    • extensions/v1beta1
    • rbac.authorization.k8s.io/v1
  • To use resource from api groups in the REST api, convention is /apis/<GROUP_NAME>/<VERSION>
    • /apis/batch/v1
    • /apis/extensions/v1beta1
    • /apis/rbac.authorization.k8s.io/v1
  • If the resources are part of core group we can directly write the version apiVersion: v1

Replica Set

  • Replica Set will ensure that the number of replicas specified in the spec is maintained by k8s cluster. Preview

  • K8s will try to maintain the desired state which is number of replicas. If some pod gets deleted/crashed etc, k8s will create one more pod to maintain the desired state. Preview

  • Pods might be alloacated on different cluster nodes.

  • So lets create a replica set with 2 replicas for game of life. Refer Here for the changeset

  • Now lets add selector for the labels Preview

  • apply the replicaset and explore Preview Preview Preview

  • Now lets shutdown one node Preview

  • Lets configure replicaset for autoscaling using imperative commands Preview

  • Next Steps:

    • How do i access the application in the case of multiple replicas
    • How do i deploy the new version of my application without having a downtime
    • How about the storage problem
    • How is k8s networking working.

Leave a Reply

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

Please turn AdBlock off
Floating Social Media Icons by Acurax Wordpress Designers

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