- Understanding Containers
- Kubernetes Basics
- Services and Networking
- Storage in Kubernetes
- Configuration Management
- Helm
- Application Observability
- Advanced Kubernetes Concepts
- Kubernetes Security
- Multi-Cluster and Federation
- CI/CD with Kubernetes
- Kubernetes in the Cloud
- Troubleshooting
- Best Practices
- Kubernetes Community and Resources
- Hands-On Projects
-
Open Source Plateform for
managing containerized workloads
. -
Kubernetes originates from Greek, meaning
helmsman or pilot
. -
Containers are a good way to bundle and run your applications
-
Kubernetes provides you with a
framework to run distributed systems
resiliently. Ittakes care of scaling and failover
for your application,provides deployment patterns
, and more. -
It provides some generally applicable features common to
PaaS offerings
, such asdeployment
,scaling
,load balancing
, and lets usersintegrate their logging, monitoring, and alerting solutions
. -
It eliminates the need for orchestration.
-
Kubernetes comprises a set of independent, composable control processes that continuously drive the current state towards the provided desired state.
-
Service discovery and load balancing
- if traffic high kubenetes is able to load balanceStorage orchestration
- Allows mounting of storage system of choiceAutomated rollouts and rollbacks
- Can automate kubernetes to create new containerSelf healing
- Kubernetes restarts containers that fail.Secrete and configuration mangement
- lets you store and manage sensitive informationHorizontal Scaling
- Scale your application up or down with simple command or UI
-
-
Node
- Kubernetes cluster consist of set of nodes. Nodes are set of worker machines.
- Components
kublet
- agent that runs on each node in the cluster. Make sures containers are runnning in Pod.kube-proxy
- a network proxy that runs on each node in your cluster.container runtime
- It is responsible for managing the execution and lifecycle of containers within the Kubernetes environment.addons
- Addons use Kubernetes resources (DaemonSet, Deployment, etc) to implement cluster features.DNS
- Cluster DNS is a DNS server.- Web UI Dashboard - web-based UI for Kubernetes clusters.
Container Resource Monitoring
- records generic time-series metricsCluster-level Logging
- is responsible for saving container logs to a central log store with search/browsing interface.Network Pluggins
- are responsible for allocating IP addresses to pods and enabling them to communicate with each other within the cluster.
-
Pod
- Component of the application workload.
-
Control Plane
- manages the worker nodes and the Pods in the cluster
- Control plane's components make global decisions about the cluster.
- Control plane components can be run on any machine in the cluster.
- Components
kubi-apiserver
- exposes Kubernetes APIetcd
- Key value store for storing cluster datakubi-scheduler
- watches newly created pod which has no assigned node and selects them node.kube-controller-manager
- runs controller process - like node controller, Service controller, Job controller, EndpointSlice controllercloud-controller-manager
- lets you link your cluster into your cloud provider's API
-
---
apiVersion: v1
kind: Namespace
metadata:
name: development
Basic structure
---
apiVersion:
kind:
metadata:
name:
namespace:
labels:
app:
spec:
replicas:
selector:
template:
metadata:
spec:
containers:
- name:
image:
ports:
- containerPort:
env:
- name:
valueFrom:
fieldRef:
fieldPath:
- Example
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: pod-info-deployment
namespace: development
labels:
app: pod-info
spec:
replicas: 2
selector:
matchLabels:
app: pod-info
template:
metadata:
labels:
app: pod-info
spec:
containers:
- name: pod-info-container
image: kimschles/pod-info-app:latest
ports:
- containerPort: 3000
# Get Cluster Info
$ kubectl clutser-info
# Get Nodes List
$ kubectl get nodes
# Get Namespace List
$ kubectl get namespace
# Create Resource
$ kubectl apply -f yaml_file_name.yaml
# Create Resource from link
kubectl apply -f https://git.io/vPieo
# Create Multiple resource
kubectl apply -f ./my1.yaml -f ./my2.yaml
# Get Pods List within specific pod
$ kubectl get pods -n namespace_name
# List Out Service
$ kubectl get services
# Get pods from all namspaces
$ kubectl get pods --all-namspaces
# List out deployment
$ kubectl get deployments deployement_name
# Get pods YAML
$ kubectl get pod pod_name -o yaml
# Deleting with YAML or json
$ kubectl delete -f ./pod.json
Kubernetes Services: Learn how to expose your applications to the network and how to configure different types of services (e.g., ClusterIP, NodePort, LoadBalancer).
Ingress Controllers: Understand how to manage and route external traffic to your services using Ingress controllers.
Network Policies: Explore network policies to control and secure communication between pods.
Persistent Volumes (PVs) and Persistent Volume Claims (PVCs): Learn how to manage storage in Kubernetes, including volume provisioning and mounting.
ConfigMaps and Secrets: Discover how to manage configuration data and sensitive information securely.
Helm Package Manager: Learn how to use Helm for packaging and deploying applications to Kubernetes.
Logging and Monitoring: Explore tools like Prometheus and Grafana for monitoring and logging in Kubernetes clusters.
StatefulSets: Understand how to manage stateful applications in Kubernetes.
Custom Resource Definitions (CRDs): Learn how to define custom resources to extend Kubernetes functionality.
Operators: Explore Kubernetes operators for automating complex, application-specific tasks.
RBAC (Role-Based Access Control): Learn how to set up fine-grained access control in Kubernetes.
Pod Security Policies: Understand how to implement security policies for pods.
Multi-Cluster Management: Learn how to manage multiple Kubernetes clusters.
CI/CD Pipelines: Integrate Kubernetes into your CI/CD pipelines using tools like Jenkins, GitLab CI/CD, or ArgoCD.
Managed Kubernetes Services: Explore managed Kubernetes offerings from cloud providers like AWS EKS, Google GKE, and Azure AKS.
Debugging and Troubleshooting: Develop skills for diagnosing and resolving issues in Kubernetes clusters.
Kubernetes Best Practices: Learn best practices for optimizing performance, security, and scalability in Kubernetes.
Kubernetes Documentation: Continuously refer to the official Kubernetes documentation for in-depth information.
Kubernetes Community: Engage with the Kubernetes community through forums, mailing lists, and social media.
Kubernetes Conferences and Meetups: Attend Kubernetes-related events and conferences to network and stay updated on the latest trends.
Online Courses and Tutorials: Explore online courses and tutorials on platforms like Udemy, Coursera, and edX.
Books: Consider reading books dedicated to Kubernetes, such as "Kubernetes Up & Running" and "The Kubernetes Book."