0% found this document useful (0 votes)
167 views

Kubernetes

The document provides an overview of Kubernetes concepts and components. It discusses the basic architecture including pods, nodes, clusters and controllers. It also covers services, networking, configuration, security, storage, maintenance, extensions, integration with cloud providers, continuous deployment, scheduling and more. The goal is to introduce readers to the main ideas in Kubernetes.

Uploaded by

NEHA KHANDELWAL
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
167 views

Kubernetes

The document provides an overview of Kubernetes concepts and components. It discusses the basic architecture including pods, nodes, clusters and controllers. It also covers services, networking, configuration, security, storage, maintenance, extensions, integration with cloud providers, continuous deployment, scheduling and more. The goal is to introduce readers to the main ideas in Kubernetes.

Uploaded by

NEHA KHANDELWAL
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 10

#_ Getting Started with: Kubernetes

# Notes and concepts _

1. Kubernetes Basics:

● Pods: Smallest deployable units in Kubernetes that can hold one or


multiple containers.
● Nodes: Worker machines in Kubernetes.
● Clusters: A set of worker machines, called nodes, that run
containerized applications.
● Kubectl: Command-line tool for interacting with a Kubernetes
cluster.
● Kubelet: An agent running on each node in the cluster.
● API Server: Front-end to the cluster's control plane.
● Etcd: Consistent and highly-available key-value store used as
Kubernetes' backing store for all cluster data.
● Control Plane: The collection of processes that control Kubernetes
nodes.
● Namespace: Virtual clusters backed by the same physical cluster.

2. Workloads & Controllers:

● Deployments: Manages a replicated application.


● ReplicaSets: Ensures that a specified number of replicas of a Pod
are running at all times.
● StatefulSets: Manages the deployment and scaling of a set of Pods,
providing guarantees about ordering and uniqueness.
● DaemonSets: Ensures that all (or some) nodes run a copy of a Pod.
● Jobs: Creates one or more Pods and ensures that a specified number
of them successfully terminate.
● CronJobs: Manages time-based Jobs, such as running a Job at a
specific time or periodic intervals.
● Horizontal Pod Autoscaler: Automatically scales the number of Pods
in a deployment, replica set, or replication controller based on
observed CPU or memory usage.

By: Waleed Mousa


3. Services & Networking:

● Services: A way to expose an application running in Pods as a


network service.
● Ingress: Manages external access to services within a cluster.
● Network Policies: Define how Pods communicate with each other.
● Service Discovery: Mechanism to connect to services dynamically
based on a logical name.
● Load Balancer: A service that distributes network traffic across
multiple Pods.

4. Configuration & Secrets:

● ConfigMaps: Manage configuration data separately from container


images.
● Secrets: Manages sensitive information, such as passwords, OAuth
tokens, and ssh keys.
● Environment Variables: Used within Kubernetes for service
discovery.
● Volumes: Persistent storage in Kubernetes.
● Persistent Volume Claims (PVCs): Request for storage by a user.

5. Monitoring, Logging, and Debugging:

● Kube-state-metrics: A simple service that listens to the


Kubernetes API server and generates metrics about the state of the
objects.
● Prometheus: An open-source system monitoring and alerting toolkit.
● Grafana: Open platform for beautiful analytics and monitoring
(often used with Prometheus).
● ELK Stack: Elasticsearch, Logstash, and Kibana used for logging in
Kubernetes.
● Kubernetes Dashboard: General-purpose web UI for Kubernetes
clusters.
● Kubectl Debug: Tool for debugging pods.
● Heapster: Collects monitoring and performance metrics.

By: Waleed Mousa


6. Security & Authorization:

● Role-Based Access Control (RBAC): Access control system.


● Security Policies: Security constraints applied to a Pod.
● Service Account: Identity attached to Pods to interact with the
Kubernetes API Server.
● Transport Layer Security (TLS): Protocol for privacy and data
integrity.

7. Kubernetes Storage:

● Persistent Volumes (PVs): Offers storage to the cluster that is


independent of Pod life cycles.
● Storage Classes: Allow administrators to describe the "classes" of
storage offered.

8. Kubernetes Cluster Maintenance:

● Node Maintenance: Taking a node down for service or replacing a


failing node.
● Cluster Upgrades: Upgrading the cluster to a newer version.
● Backup and Disaster Recovery: Ensuring data continuity and
integrity.

9. Extending Kubernetes:

● Custom Resources: Extension of the Kubernetes API.


● API Server Extension: Custom endpoints in the Kubernetes API.
● Custom Controllers: Automate handling of Custom Resources.
● Operators: Application-specific controllers to create, configure,
and manage instances of complex stateful applications.

10. Advanced Features:

● Service Mesh (e.g., Istio): Manage microservices in a transparent


way.
● Pod Priority & Preemption: Specifies priorities for Pods and allows
preemption of lower-priority Pods.
● Taints and Tolerations: Allows a node to repel a set of Pods.

By: Waleed Mousa


● Node Affinity: Controls where a Pod runs based on labels on nodes
and conditions called node affinity rules.
● Pod Presets: Injects information like secrets, volume mounts, and
environment variables into pods at creation time.

11. Kubernetes Cloud Integration:

● Amazon EKS: Managed Kubernetes service on AWS.


● Google Kubernetes Engine (GKE): Managed Kubernetes service on
Google Cloud.
● Azure AKS: Managed Kubernetes service on Azure.

12. Continuous Deployment/Integration in Kubernetes:

● Jenkins: Popular open-source tool to perform continuous


integration and build automation.
● GitLab CI: Continuous integration service included with GitLab
that builds and tests the software whenever a developer pushes
code to the application.
● Spinnaker: Open-source, multi-cloud continuous delivery platform
for releasing software changes with high velocity and confidence.

13. Helm: Kubernetes Package Manager:

● Helm Charts: Packages of pre-configured Kubernetes resources.


● Helm Repository: A collection of charts for Kubernetes packages.

14. Kubernetes Custom Scheduling:

● Custom Scheduler: You can implement a custom scheduler to have


more control over the scheduling of your Pods.

15. Kubernetes Federation:

● Cluster Federation: Allows the synchronization of resources across


multiple clusters.

By: Waleed Mousa


16. Windows in Kubernetes:

● Windows Nodes: Support for Windows worker nodes and Windows


containers in Kubernetes.

17. Kubernetes Testing:

● Kubetest: Kubernetes end-to-end testing.

18. Kubernetes Add-ons:

● DNS: DNS server for service name resolution.


● Web UI (Dashboard): Web-based Kubernetes user interface.
● Container Resource Monitoring: Time-series monitoring of resource
utilization.
● Cluster-level Logging: Save container logs to a logging backend.

19. Other Essential Concepts:

● Quotas: Constraints applied to resources like Pods, Persistent


Volumes.
● Annotations: Attach arbitrary non-identifying metadata to objects.
● Labels and Selectors: Labels are key/value pairs attached to
objects and selectors are used to select objects based on labels.
● Liveness and Readiness Probes: Health checks for running
applications.

20. Kubernetes Failure Handling:

● Pod Disruption Budgets (PDBs): Provides constraints that limit


voluntary disruptions for Pods.

21. Kubernetes Architecture Concepts:

● Cloud Controller Manager: Embeds cloud-specific control logic for


the cloud provider.
● Kube-Proxy: Maintains network rules and enables connection
forwarding.
● Container Runtime: The software used to run containers, e.g.,
Docker, containerd.

By: Waleed Mousa


22. Kubernetes Community and Development:

● Special Interest Groups (SIGs): The Kubernetes project is divided


into several Special Interest Groups or SIGs.
● Contributing to Kubernetes: Guide to becoming an active
contributor to the Kubernetes project.

23. Kubernetes Best Practices:

● Logging Best Practices: Guidelines for logging in Kubernetes.


● Monitoring Best Practices: Guidelines for monitoring in
Kubernetes.
● Security Best Practices: Guidelines for securing your applications
in Kubernetes.
● Performance Best Practices: Guidelines for ensuring optimal
performance in Kubernetes.

24. Kubernetes Automation and Autoscaling:

● Cluster Autoscaler: Automatically adjusts the size of the cluster,


scaling it up or down as necessary.
● Vertical Pod Autoscaler: Automatically adjusts the amount of CPU
and memory requested by containers in a Pod.
● Horizontal Pod Autoscaler (HPA): Automatically scales the number
of Pods in a deployment or replica set based on observed CPU or
memory utilization.

25. Kubernetes Development Tools:

● Minikube: Runs a single-node Kubernetes cluster inside a VM on


your laptop for users looking to try out Kubernetes or develop
with it day-to-day.
● Skaffold: Command line tool that facilitates continuous
development for Kubernetes applications.
● Kompose: Conversion tool for all Docker Compose users to help them
move to Kubernetes.
● Kubeadm: Tool for bootstrapping a best-practice Kubernetes
cluster.

By: Waleed Mousa


26. Advanced Kubernetes Networking:

● Network Plugins: Extend Kubernetes networking.


● CNI (Container Network Interface): Standard for writing plugins to
configure network interfaces in Linux containers.
● Flannel: Overlay network provider.
● Calico: Provides secure network connectivity.

27. Kubernetes Performance Tuning:

● Kubelet Garbage Collection: Cleanup of unused images or


containers.
● Kernel Tuning: Adjusting Linux kernel parameters to optimize
performance.

28. Kubernetes Service Mesh:

● Istio: Open platform to connect, manage, and secure microservices.


● Linkerd: Another popular service mesh for Kubernetes.

29. Kubernetes Mobile Integration:

● Kubernetes on Edge: Running Kubernetes in edge computing


environments.

30. Additional Kubernetes Ecosystem Tools:

● Cilium: Security and networking for cloud-native applications.


● Knative: Kubernetes-based platform to build, deploy, and manage
modern serverless workloads.
● OpenFaas: Open-source Function as a Service (FaaS) platform built
on Kubernetes.
● Metacontroller: Creates custom controllers using simple JavaScript
(or other scripting languages).

By: Waleed Mousa


Kubernetes Commands & Usages:

1- Basic Cluster Information:

○ kubectl cluster-info: Display information about the cluster.


○ kubectl version: Display version info.

2- Working with Nodes and Cluster:

○ kubectl get nodes: List nodes in a cluster.


○ kubectl describe node <node-name>: Show details of a specific
node.

3- Working with Pods:

○ kubectl get pods: List all pods in all namespaces.


○ kubectl run <name> --image=<image>: Deploy a new Pod with a
given image.
○ kubectl describe pod <pod-name>: Describe a specific pod.
○ kubectl logs <pod-name>: Fetch the logs from a pod.
○ kubectl delete pod <pod-name>: Delete a specific pod.

4- Working with Deployments:

○ kubectl create deployment <name> --image=<image>: Create a new


deployment.
○ kubectl get deployments: List all deployments.
○ kubectl describe deployment <deployment-name>: Describe a
specific deployment.
○ kubectl scale deployment <deployment-name> --replicas=<num>:
Scale up/down a deployment.

5- Working with Services:

○ kubectl expose deployment <name> --type=LoadBalancer


--port=8080: Expose a deployment as a service.
○ kubectl get services: List all services.
○ kubectl describe service <service-name>: Describe a specific
service.

By: Waleed Mousa


6- Config and Storage:

○ kubectl get configmaps: List all config maps.


○ kubectl create configmap <name> --from-file=<path>: Create a
config map from a file.
○ kubectl get secrets: List all secrets.
○ kubectl create secret: Create a secret.
○ kubectl get pv: List all persistent volumes.
○ kubectl get pvc: List all persistent volume claims.

7- Namespaces and Context:

○ kubectl get namespaces: List all namespaces.


○ kubectl config get-contexts: Show all contexts.
○ kubectl config use-context <context-name>: Switch to a
different context.

8- Others:

○ kubectl apply -f <filename>: Apply a configuration from a file.


○ kubectl delete -f <filename>: Delete resources defined in a
file.
○ kubectl exec -it <pod-name> -- /bin/sh: Execute a command
inside a running pod.
○ kubectl port-forward <pod-name> <local-port>:<pod-port>:
Forward a port from a running pod to a local port.

9- Advanced:

○ kubectl get all: List all resources.


○ kubectl rollout status deployment/<deployment-name>: View the
rollout status of a deployment.
○ kubectl rollout history deployment/<deployment-name>: View the
history of a deployment.
○ kubectl rollout undo deployment/<deployment-name>: Rollback to
a previous version of a deployment.

By: Waleed Mousa


10- Monitoring & Logging:

● kubectl top nodes: Display resource (CPU/Memory/Storage) usage of


nodes.
● kubectl top pods: Display resource (CPU/Memory/Storage) usage of
pods.

11- Autoscaling:

● kubectl autoscale deployment <deployment-name> --min=<min-pods>


--max=<max-pods> --cpu-percent=<cpu-util-percentage>: Auto scale a
deployment based on CPU utilization.

12- Working with Helm:

● helm list: List releases.


● helm install <chart>: Install a helm chart.
● helm uninstall <release-name>: Uninstall a helm release.

13- Using Network Policies:

● kubectl get networkpolicies: List all network policies.


● kubectl describe networkpolicy <policy-name>: Describe a specific
network policy.

14- Using CronJobs and Jobs:

● kubectl get cronjobs: List all cronjobs.


● kubectl get jobs: List all jobs.
● kubectl logs job/<job-name>: Fetch logs from a job.

15- Working with RBAC:

● kubectl get roles: List all roles in the current namespace.


● kubectl get clusterroles: List all cluster roles.

16- Using kubectl Plugins:

● kubectl krew search: Search plugins available for kubectl.


● kubectl krew install <plugin-name>: Install a kubectl plugin.

By: Waleed Mousa

You might also like