Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
50 views

Kubernetes Notes - (Start)

The document provides an in-depth overview of Kubernetes, including its architecture, key components, features, objects, and the importance of using Kubernetes for container management and orchestration.

Uploaded by

Madhusudan G J
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
50 views

Kubernetes Notes - (Start)

The document provides an in-depth overview of Kubernetes, including its architecture, key components, features, objects, and the importance of using Kubernetes for container management and orchestration.

Uploaded by

Madhusudan G J
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 32

Search Translate to English

Vivek Singh

Summary
The provided content serves as a comprehensive guide to understanding
Kubernetes, detailing its architecture, features, components, and objects,
while emphasizing the necessity and benefits of using Kubernetes for
container management and orchestration.
Abstract
The web content titled "Kubernetes Notes — Get Started" offers an in-
depth exploration of Kubernetes, an open-source platform designed to
automate deploying, scaling, and operating application containers. It
begins by outlining the key components of Kubernetes architecture,
including master and worker nodes, and the roles of various processes
such as kube-apiserver, kube-controller-manager, kube-scheduler, etcd,
and kubelet. The guide highlights the features of Kubernetes, such as
service discovery, load balancing, scaling, self-healing, and storage
orchestration, which collectively enable high availability and efficient
resource management. The importance of Kubernetes is underscored by
its ability to manage complex containerized applications, ensuring zero
downtime and facilitating data recovery. The content also delves into
Kubernetes objects, such as Pods, Services, Deployments, and Persistent
Volumes, and their role in defining the desired state of the cluster. The
guide concludes with practical use cases, references for further reading,
and a call to action for readers to engage with the author for discussions
or freelancing opportunities.
Opinions
The author conveys that managing containers without Kubernetes can
be challenging and inefficient, especially as the number of containers
grows.
Kubernetes is portrayed as an essential tool for running distributed
Translate to
systems resiliently, providing a framework that takes care of scaling
and failover for applications.
The guide suggests that Kubernetes enhances modularity and better
management of software deployment and updates at scale.
The author emphasizes the importance of Kubernetes' self-healing
capabilities, such as restarting failed containers and rescheduling
pods, to maintain application stability.

The content reflects the author's view that Kubernetes' dynamic


provisioning of storage through Persistent Volumes and Storage
Classes is a key feature for stateful applications.
The author's opinion on the significance of network policies for
isolating and managing network traffic between pods is evident.

The guide expresses the benefits of using Ingress controllers for


managing external access to services within a cluster, highlighting the
author's appreciation for their role in traffic routing and load
balancing.
The author's perspective on the value of Kubernetes Services for stable
networking and load balancing is clear, as well as their role in enabling
communication within and outside the cluster.
The author encourages active engagement with the Kubernetes
community and continuous learning, indicating a belief in the
importance of collaboration and shared knowledge in the field.

Kubernetes Notes — Get Started


Translate to

Content

Architecture

What are containers?

What features Does K8s Offer?

Why you need Kubernetes ?

Worker Nodes Kubelet, KubeProxy & Container Runtime.

Master Nodes kube-apiserver, kube-controller-manager, kube-


scheduler, etcd, Cloud Controller Manager

kubelet and kube-proxy difference

K8s Objects

K8s Components

References

Ending Notes
Architecture Translate to

Kubernetes is a powerful container management tool that automates the


deployment and management of containers. It can run and coordinate
containerized applications across a cluster of machines. It is a platform
designed to completely manage the life cycle of containerized applications
and services using methods that provide predictability, scalability, and high
availability. Kubernetes can define how your applications should run and
how application interact with other applications or the outside world.

Source
Translate to

Source

Kubernetes deployment is called a cluster. A Kubernetes cluster consists of at


least one main (control) plane, and one or more worker machines, called
nodes. Both the control planes and node instances can be physical devices,
virtual machines, or instances in the cloud.

What are containers?

Stuff like your application code, dependent libraries, and its dependencies all
the way up to the kernel — is a container. The key concept here is isolation.
Isolate all your stuff from the rest so that you have better control of them.
There are three types of isolation provided by containers

Workspace isolation (Process, Network)

Resource isolation (CPU, Memory)

File system isolation (Union File System)

What features Does K8s Offer?


Service discovery and load balancing Kubernetes can expose a
container using the DNS name or using their own IP address. If traffic to a
container is high, Kubernetes is able to load balance and distribute the
Translate to
network traffic so that the deployment is stable.

Scaling Auto-scaling: Automatically change the number of running


containers, based on CPU utilisation or other application-provided
metrics.

Self-healing Kubernetes restarts containers that fail, replaces


containers, kills containers that don’t respond to your user-defined health
check, and doesn’t advertise them to clients until they are ready to serve.

Storage orchestration Kubernetes allows you to automatically mount


a storage system of your choice, such as local storages, public cloud
providers, and more.

Automated rollouts and rollbacks You can describe the desired state
for your deployed containers using Kubernetes, and it can change the
actual state to the desired state at a controlled rate. For example, you can
automate Kubernetes to create new containers for your deployment,
remove existing containers and adopt all their resources to the new
container.

Automatic bin packing You provide Kubernetes with a cluster of nodes


that it can use to run containerized tasks. You tell Kubernetes how much
CPU and memory each container needs. Kubernetes can fit containers
onto your nodes to make the best use of your resources.

Secret and configuration management Kubernetes lets you store


and manage sensitive information, such as passwords, OAuth tokens, and
SSH keys. You can deploy and update secrets and application
configuration without rebuilding your container images, and without
exposing secrets in your stack configuration.

Assures high availability with zero downtime

Reliable infrastructure to support data recovery with ease

Why you need Kubernetes?


Containers are a good way to bundle and run your applications. They provide
Translate to
you with an easy way to package and deploy services, allow for process
isolation, immutability, efficient resource utilization, and are lightweight in
creation.

Managing containers for production is challenging: - You need to manage the


containers that run the applications and ensure that there is no downtime.
For example, if a container goes down, another container needs to start. - You
can end up with dozens, even thousands of containers over time. These
containers need to be deployed, managed and updated.

It will be very difficult to do all things manually, right? Kubernetes is the


solution! Kubernetes provides you with a framework to run distributed
systems resiliently. It takes care of scaling and fail-over for your application,
provides deployment patterns, and more.

Package up the app and let something else manage it for us

Not worry about the containers management

App Containers can’t live with single server deployment

Inter-host communication of containers

Deploying and updating software at scale

Better management through modularity

Auto healing

Logging and Monitoring

Worker Node

Every worker as shown in picture below has these 3 key processes :

Container Runtime

kubelet

kube-proxy
Translate to

Worker Node

kubelet

kubelet is a primary node-agent of the worker node, which interacts with


both node and the container in the given worker node

The kubelet is responsible for

Maintaining a set of pods, which are composed of one or more containers,


on a local system.
For registering a node with a Kubernetes cluster, sending events and pod
Translate to
status, and reporting resource utilization.

Within a Kubernetes cluster, the kubelet watches for PodSpecs via the
Kubernetes API server.

A PodSpec is a YAML or JSON object that describes a pod. The kubelet takes
a set of PodSpecs that are provided through various mechanisms (primarily
through the API server) and ensures that the containers described in those
PodSpecs are running and healthy.

Kube-proxy:

K8s cluster can have multiple worker nodes and each node has multiple pods
running, so if one has to access this pod, they can do so via Kube-proxy. In
order to access the pod via k8s services, there are certain network policies,
that allow network communication to your Pods from network sessions
inside or outside of your cluster. These rules are handled via kube-proxy.
kube-proxy has an intelligent algorithm to forward network traffics
required for pod access which minimizes the overhead and makes service
communication more performant

Container runtime

Every Microservice module(micro-app) you deploy is packaged into a single


pod that has its own container runtime. One needs to install a container
runtime into each worker node in the cluster so that Pods can run there.

Some of the container runtime examples are,

containerd

CRI-O

Docker
The container runtime is the software that is responsible for running
Translate to
containers (in Pods).

To run the containers, each worker node has a container runtime engine.

It pulls images from a container image registry and starts and stops
containers.

Master Node

Who manages these worker nodes, to ensure that they are always up and
running? How does the K8s cluster know which pods should be scheduled
and which one should be dropped or restarted? How does the k8s cluster
know the resource level requirements of each container app? — — — Well
the answer lies in the concept of Master Node — -
Translate to

Master Node

The master node is also known as a control plane that is responsible to


manage worker/slave nodes efficiently. They interact with the worker node to

Schedule the pods

Monitor the worker nodes/Pods

Start/restart the pods

Manage the new worker nodes joining the cluster

Master Node Processes:


The control plane manages the worker nodes and the Pods in the cluster. In
Translate to
production environments, the control plane usually runs across multiple
computers and a cluster usually runs multiple nodes, providing fault-
tolerance and high availability. You can scale up and scale down cluster by
adding and removing nodes.

Every master nodes in the K8s cluster runs the following key processes

kube-apiserver

kubectl: kube-controller-manager

kube-scheduler

etcd

kube-apiserver:

It is the main gateway to access the k8s cluster and act as the main
gatekeeper for client level authentication or we can say that the kube-
apiserver is the front end for the Kubernetes control plane.

kube-api server in master node

So whenever you want to


Deploy any new app
Translate to

Schedule any pods or

Create any new services

Query status or the health of your worker nodes

You need to make a request to the API server of the master node which in
turn validates your requests before you get access to the processes in worker
nodes. 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

kube-scheduler in K8s Master Node:

It schedules pods to worker nodes..Every time as a K8s admin/developer if


you want to schedule a new pod on the worker node, you need to send the
request to the master API server which in turn will make a call to the kube-
scheduler process. The scheduler here will intelligently decide on which
worker node this pod should be placed. This is a key Control plane
component that keep a watch for newly created Pods with no assigned worker
node, and selects a worker node for them to be scheduled and run on. This
decision to which worker node the newly created pod should be
accommodated in based on the resource level availability of each node.
Scheduler does the resource level query and makes critical scheduling
decisions. The real execution of the scheduler level decision is done by the
kubelet process in the given worker node.

Factors taken into account for scheduling decisions include:

Individual and collective resource requirements

Hardware/Software/Policy constraints

Node affinity and anti-affinity specifications,

Data locality, inter-workload interference, and deadlines.


kube-controller-manager(Kubectl):
Translate to

It is one of the critical processes in a master node that monitors the status of
any worker node level failures. It keeps a close watch over the event like ::
Crashing of any pods in the worker node and, requests the scheduler to
restart or reschedule any dead /failed pods, after detecting such event.

These control manager component of master control planer has following


types of controllers:

Node controller: Responsible to respond when any worker node goes


down

Replication controller: It ensures that the request to maintain the


correct replica count of any pod deployment is always taken care

Endpoints controller: Populates the Endpoints object viz. Joins,


Services & Pods

Service Account & Token controllers: Create default accounts and


API access tokens for new namespaces created in the worker node.

It 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.

etcd

etcd in the master control plane is responsible to store every kind of cluster-
level change in the form of key-value pairs. It is a consistent, distributed,
and highly-available key value store. It can be part of the control plane, or, it
can be configured externally.

It can be easily seen as a brain of the k8s cluster which keeps the log of every
minute details of changes occurring in the cluster.
For example, if any pod crashes in the worker node and it has to be
Translate to
rescheduled, the same gets stored in etcd as key-value pair, also the event of
pod rescheduling on the node is also logged here.

Cloud Controller Manager

The cloud-controller-manager is 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.

By decoupling the interoperability logic between Kubernetes and the


underlying cloud infrastructure, the cloud-controller-manager component
enables cloud providers to release features at a different pace compared to
the main Kubernetes project.

The cloud-controller-manager is structured using a plugin mechanism that


allows different cloud providers to integrate their platforms with Kubernetes.

kubelet and kube-proxy difference

kubelet

It is an agent that runs on each node in the cluster.

It acts as a conduit between the API server and the node.

It makes sure that containers are running in a Pod and they are healthy.

It instantiates and executes Pods.

It watches API Server for work tasks.

It gets instructions from master and reports back to Masters.

kube-proxy
It is networking component that plays vital role in networking.
Translate to

It manages IP translation and routing.

It is a network proxy that runs on each node in cluster.

It maintains network rules on nodes. These network rules allow network


communication to Pods from inside or outside of cluster.

It ensure each Pod gets unique IP address.

It makes possible that all containers in a pod share a single IP.

It facilitating Kubernetes networking services and load-balancing across


all pods in a service.

It deals with individual host sub-netting and ensure that the services are
available to external parties.

Kubernetes Objects

Kubernetes Objects are persistent entities in the Kubernetes system that


represent state of your cluster. By creating an object, you’re effectively telling
the Kubernetes system what you want your cluster’s workload to look like;
this is your cluster’s desired state.

Kubernetes objects can be distinguished between workload-oriented objects


that are used for handling container workloads and infrastructure-oriented
objects, that for example handle configuration, networking and security.
Some of these objects can be put into a namespace, while others are available
across the whole cluster.

we can describe these objects in the popular data-serialization language


YAML and send them to the api-server, where they get validated before they
are created.
Translate to

Kubernetes Objects

K8s components :
Pods: Smallest unit of k8s, which is an abstraction of the container
application. Pod is a group of one or more containers, with shared storage
and network resources, and a specification for how to run the containers.

Nodes: The machines on Kubernetes. They can be either a physical or a


virtual machine. Pods are scheduled and orchestrated to run on nodes.

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.

ReplicaSet’s purpose is to maintain a stable set of replica Pods


(Identical Pods) running at any given time.

Services & Ingress: To manage external communication between


nodes and internal pod level communication
ConfigMaps: To manage the end-point URLs required by the pods/ DB’s
Translate to

Secrets: To keep app-level passwords and secret keys securely using


based64 encoding

Statefulsets: StatefulSet is used to manage stateful applications with


persistent storage. Storage stays associated with replacement pods.
Volumes persist when pods are deleted. Pods are deployed/updated
individually and in order. Each Pod has own storage. A StatefulSet
maintains a sticky identity for each of their Pods.

DaemonSet ensures that all (or some, matching a node selector) Nodes
run a copy of a Pod. As nodes are added to the cluster, Pods are added to
them. As nodes are removed from the cluster, those Pods are garbage
collected. Deleting a DaemonSet will clean up the Pods it created. Some
typical uses of a DaemonSet are: - Running a cluster storage daemon on
every node. - Running a logs collection daemon on every node. - Running
a node monitoring daemon on every node.

Job runs pods that perform a completable task. Job creates one or more
Pods and will continue to retry execution of the Pods until a specified
number of them successfully terminate. Deleting a Job will clean up the
Pods it created. Suspending a Job will delete its active Pods until the Job
is resumed again.

CronJob creates Jobs on a repeating schedule. CronJobs are meant for


performing regular scheduled actions such as backups, report generation,
and so on.

Namespaces provides a mechanism for isolating groups of resources


within a single cluster.Namespace-based scoping is applicable only for
namespaced objects (e.g. Deployments, Services, etc) and not for cluster-
wide objects (e.g. StorageClass, Nodes, PersistentVolumes, etc).

Service
Service is used to expose an application deployed on a set of pods using a
single endpoint. i.e. It maps a fixed IP address to a logical group of pods.
Service provides stable networking for pods (ephemeral pods) by bringing
Translate to
stable IP addresses and DNS names, and provide a way to Kubernetes to
configuring a proxy to forward traffic to a set of pods.

Service enables communication between nodes, pods, and users of app,


both internal and external, to the cluster. Service also provides load
balancing when you have Pod replicas.

There are four types of Kubernetes services — ClusterIP , NodePort ,

LoadBalancer and ExternalName .

Ingress
Ingress manages external access to the services in a cluster, typically
HTTP/S.

Ingress may provide load balancing, SSL termination and name-based


virtual hosting.

Ingress exposes one or more services to external clients through a single


externally reachable IP address.

Traffic routing is controlled by rules defined on the Ingress resource.

Ingress controller is responsible for fulfilling the Ingress, usually with a


load balancer.

Network Policy (NetPol)


Network Policy isolates the network between pods by specifying which
pods can connect to each other, and other network endpoints.

Network Policy works on OSI Layer 3 and Layer 4.

Network policies are implemented by the network plugin.

Endpoint
Endpoint defines which pods (or other servers) are exposed through a
service.
For Kubernetes Services, Kubernetes creates a Endpoint object. This
Translate to
endpoint will have the ip address mapping of the pods. This is created
automatically for services with a defined selector.

Endpoints can also be used to connect to external services like they were
internal to the kubernetes cluster.

EndpointSlice
EndpointSlices provide a simple way to track network endpoints within a
Kubernetes cluster.

EndpointSlices offer a more scalable and extensible alternative to


Endpoints.

EndpointSlice contains references to a set of network endpoints.

EndpointSlice
EndpointSlices provide a simple way to track network endpoints within a
Kubernetes cluster.

EndpointSlices offer a more scalable and extensible alternative to


Endpoints.

EndpointSlice contains references to a set of network endpoints

Persistent Volumes (PV)


PV is a low level representation of a storage volume. It is an abstraction
for the physical storage device that is attached to the cluster.

PV can be mounted into a pod through a PVC.

PV is resource in the cluster that can be provisioned dynamically using


Storage Classes, or they can be explicitly created by a cluster
administrator.

PV is independent of the lifecycle of the Pods. It means that data


represented by a PV continue to exist as the cluster changes and as Pods
are deleted and recreated.
Translate to

Persistent Volume Claim (PVC)


PVC is binding between a Pod and PV. Pod request the Volume through
the PVC.

PVC is the request to provision persistent storage with a specific type and
configuration.

PVCs describe the storage capacity and characteristics a pod requires, and
the cluster attempts to match the request and provision the desired
persistent volume.

PVC must be in same namespace as the Pod. For each Pod, a PVC makes a
storage consumption request within a namespace.

PVC is similar to a Pod. Pods consume node resources and PVC consume
PV resources.

Storage Classes (SC)


StorageClass allows dynamic provisioning of Persistent Volumes, when
PVC claims it.

StorageClass abstracts underlying storage provider.

StorageClass is used in conjunction with PVC that allow Pods to


dynamically request a new storage.

ConfigMaps
ConfigMap is used to store non-confidential data in key-value pairs.

Pods can consume ConfigMaps as environment variables, command-line


arguments, or as configuration files in a volume.

ConfigMap allows you to decouple environment-specific configuration


from your container images, so that your applications are easily portable.
Secrets Translate to

Secrets are similar to ConfigMaps but are specifically intended to hold


confidential data.

Secret allows you store and manage a small amount of sensitive


information such as passwords, tokens, keys, SSH keys, etc.

With Secret, you don’t need to include confidential data in your


application code.

Secrets can be created independently of the Pods that use them.

Service Account
Kubernetes uses Service Accounts to authenticate and authorize requests
by pods to the Kubernetes API server.

Service Account provides an identity for processes that run in a Pod.

Role
Role defines what can be done to Kubernetes Resources.

Role contains one or more rules that represent a set of permissions.

Roles are namespaced, meaning Roles work within the constraints of a


namespace.

After creating a Role, you assign it to a user or group of users by creating a


RoleBinding.

ClusterRole
ClusterRole works the same as Role, but they are applied to the cluster as
a whole.

ClusterRoles are not bound to a specific namespace. ClusterRole give


access across more than one namespace or all namespaces.
After creating a ClusterRole, you assign it to a user or group of users by
Translate to
creating a RoleBinding or ClusterRoleBinding.

ClusterRoles are typically used with service accounts.

RoleBinding
RoleBinding is used for granting permission to a Subject.

RoleBinding holds a list of subjects (users, groups, or service accounts),


and a reference to the role being granted.

Role and RoleBinding are used in namespaced scoped.

RoleBinding may reference any Role in the same namespace.

Defines who can perform the actions defined in a Role or ClusterRole


(within a namespace).

ClusterRoleBinding
ClusterRole and ClusterRoleBinding function like Role and RoleBinding,
except they have wider scope.

RoleBinding grants permissions within a specific namespace, whereas a


ClusterRoleBinding grants access cluster-wide and to multiple
namespaces.

ClusterRoleBinding is binding or associating a ClusterRole with a Subject


(users, groups, or service accounts).

Horizontal Pod Autoscaler (HPA)


HPA automatically updates a workload resource (such as a Deployment or
StatefulSet), with the aim of automatically scaling the workload to match
demand.

HPA automatically scales number of pod replicas based on CPU usage or


another metric.

HPA controls the scale of a Deployment and its ReplicaSet.


Pod Disruption Budget (PDB) Translate to

PDB limits the number of Pods of a replicated application that are down
simultaneously from voluntary disruptions.

PDB can temporarily halt the eviction process if the number of replicas of
an application falls below the declared threshold. Eviction process will
continue once the number of available replicas is over the threshold.

PDB defines the minimum number of pods that must remain running
when evacuating nodes.

Ingress

Source

Ingress exposes HTTP and HTTPS routes from outside the cluster to services
within the cluster. Traffic routing is controlled by rules defined on the Ingress
resource. You can configure access by creating a collection of rules that define
which inbound connections reach which services.
An Ingress controller is responsible for fulfilling the Ingress, usually with a
Translate to
load balancer, though it may also configure your edge router or additional
frontends to help handle the traffic.

The Ingress spec has all the information needed to configure a load balancer
or proxy server. It contains a list of rules matched against all incoming
requests. Ingress provides routing rules to manage external users’ access to
the services in a Kubernetes cluster, typically via HTTPS/HTTP. With
Ingress, you can easily set up rules for routing traffic without creating a
bunch of Load Balancers or exposing each service on the node. This makes it
the best option to use in production environments.

An Ingress does not expose arbitrary ports or protocols. Exposing services


other than HTTP and HTTPS to the internet typically uses a service of type
NodePort or LoadBalancer .

Ingress controllers
Ingress controller is an application that runs in a cluster and configures
an HTTP load balancer according to Ingress resources. The load balancer
can be a software load balancer running in the cluster or a hardware or
cloud load balancer running externally. Different load balancers require
different Ingress controller implementations.

In order to Ingress resource work, the cluster must have an ingress


controller running.

You can deploy any number of ingress controllers within a cluster.

There are many different Ingress controllers, and there’s support for
cloud-native load balancers (from GCP, AWS, and Azure). e.g. Nginx,
Ambassador, EnRoute, HAProxy, AWS ALB, AKS Application Gateway

Use Cases

Externally reachable URLs for applications deployed in Kubernetes


clusters.
Load balancing rules and traffic, as well as TLS/SSL termination for each
Translate to
hostname, such as foo.example.com .

Content-based routing: 1. Host-based routing. For example, routing


requests with the host header foo.example.com to one group of services
and the host header bar.example.com to another group. 2. Path-based
routing. For example, routing requests with the URI that starts with
/serviceA to service A and requests with the URI that starts with
/serviceB to service B.

Services

Source
What is a Service in Kubernetes?
Translate to

Kubernetes service is a Kubernetes object that provides stable networking for


pods and provide a way to Kubernetes to configuring a proxy to forward
traffic to a set of pods.

It enables communication between nodes, pods, and users of app, both


internal and external, to the cluster. Service also provides load balancing
when you have Pod replicas.

Services are a good abstraction for loose coupling for communication within
the cluster, but also from external services like a browser request coming to
the cluster.

How Kubernetes Services Works?

Kubernetes assigns IP address to service on creation, just like a node or pod.


These addresses get assigned from a service cluster’s IP range. Service is also
assigned a DNS name based on the service name, and an IP port.

Instead of static IP address-based assignments, Services use selectors (or


labels) to define which pods uses which service. Services select Pods based on
their labels. When a network request is made to the service, it selects all Pods
in the cluster matching the service’s selector, chooses one of them, and
forwards the network request to it.

Service automatically discovers a new pod with labels that match the selector.
This process seamlessly adds new pods to the service, and at the same time,
removes terminated pods from the cluster.

Kubernetes Service Types

ClusterIP

NodePort
LoadBalancer
Translate to

ExternalName

Kubernetes Service Key Points

Service gives stable networking endpoints for a set of Pods.

Service gets single IP, DNS and Port that never change.

Service enables how pods talk to each other inside the cluster.

Service enables how pods expose to the world/outside of cluster.

Service offers load balancing, naming and discovery isolation.

Service only sends traffic to healthy Pods and hide unreliable Pods.

Service can do session affinity.

Service supports TCP and UDP.

Service is Load Balancer in Cloud Kubernetes services.

apiVersion: v1
kind: Service
metadata:
name: my-service
spec:
selector:
app: MyApp
ports:
- protocol: TCP
port: 80
targetPort: 9376

As soon as a new pod appears in a cluster, with labels matching with Service’s
selector , the app=MyApp in the example above - Service will start sending
traffic to it.

Endpoints
Usually, we don’t see Endpoints objects when using Kubernetes Services, as
Translate to
they are working under the hood, similarly to ReplicaSets which are “hidden”
behind Kubernetes Deployments.

What else does a Kubernetes cluster need?

Container Registry

The container images that Kubernetes relies on are stored in a container


registry. This can be a registry you configure, or a third party registry like

Docker Hub

Amazon Elastic Container Registry (ECR)

Azure Container Registry (ACR)

Google Container Registry (GCR)

References:

Kubernetes Fundamentals For Absolute Beginners: Architecture &


Components

Learning Kubernetes architecture & components

medium.com

Kubernetes — Architecture Overview

Introduction to Kubernetes Architecture and Understanding K8s Cluster


Components.

medium.com

Kubernetes (K8s) Overview


What is Kubernetes — Introduction to Kubernetes (K8s) Orchestration
Translate to

medium.com

Kubernetes — Objects (Resources/Kinds) Overview

Introduction (Understanding) to Kubernetes Objects/Resources/Kinds.

medium.com

Kubernetes — Ingress Overview

What is K8s Ingress? — Introduction to Kubernetes Ingress.

medium.com

Kubernetes — Services Overview

What are Kubernetes Services? — Introduction to Kubernetes Service.

medium.com

Kubernetes: what are Endpoints

Usually, we don’t see Endpoints objects when using Kubernetes Services, as


they are working under the hood, similarly…

itnext.io

This article will be updated with more details theory and practical included
as I progress on my learning journey. Stay tuned. The notes is for sure
going to help you learn more and crack your next Kubernetes interview.

Ending Notes
I am active on Medium so please reach out to me in case you want to have a
Translate to
conversation. Happy to help. For any freelancing work or a healthy
conversation — reach me out at vivek.sinless@gmail.com or LinkedIn

If you enjoyed this article, consider trying out the AI service I recommend. It
provides the same performance and functions to ChatGPT Plus(GPT-4) but
more cost-effective, at just $6/month (Special offer for $1/month). Click here
to try ZAI.chat.

Kubernetes Container Orchestration Containers K8s DevOps

Recommended from ReadMedium

VenKube

Kubernetes Chronicles: (K8s#01) — Introduction to Kubernetes |


Architecture.
Kubernetes also known as K8s, is an open-source container orchestration platform that
automates the deployment, management, scaling and…

6 min read

Tamer Benhassan

7 Best Practices for Implementing Security Contexts in Kubernetes


Kubernetes security contexts are a fundamental part of safeguarding Kubernetes applications.
They allow administrators and developers to…

3 min read

Jake Page
The guide to kubectl I never had.
What kind of engineer are you? 🤔 Translate to
Can somebody guess by just looking at you? More than
likely not.

17 min read

Ammar Suhail

KUBERNETES NETWORKING
What Kubernetes networking solves

6 min read

Medha Choudhary

Setting Up Your First EKS Cluster: A Step-by-Step Guide: Topic#2


Hello, Cloud Enthusiasts! 👋 Excited to share a step-by-step guide on setting up your very first
Amazon EKS (Elastic Kubernetes Service)…

2 min read

Lubomir Tobek

Kubernetes Multi-Master Node Cluster


Creating and operating a highly available Kubernetes cluster requires multiple Kubernetes
control plane nodes and “Master Nodes”. To…

10 min read

You might also like