base on Get Started with Kubernetes # Get Started with Kubernetes | Ultimate Hands-on Labs and Tutorials ![stars](https://img.shields.io/github/stars/collabnix/kubelabs) ![forks](https://img.shields.io/github/forks/collabnix/kubelabs) ![issues](https://img.shields.io/github/issues/collabnix/kubelabs) ![GitHub contributors](https://img.shields.io/github/contributors/collabnix/kubelabs) ![Twitter](https://img.shields.io/twitter/follow/collabnix?style=social) A Curated List of Kubernetes Labs and Tutorials - A $0 Learning Platform for All Levels - from the ground Up - Over 500+ Highly Interactive Docker Tutorials and Guides - Well tested on Kubernetes Cluster and can be run on Browser (no Infrastructure required) # 📝 Join our Community - Join 11000+ DevOps Engineers today via [Community Slack](https://launchpass.com/collabnix) - Join our [Discord Server](https://discord.gg/QEkCXAXYSe) - Fork, Contribute & Share via [Kubelabs GITHUB Repository](https://github.com/collabnix/kubelabs) - Click and Follow us over Twitter [![Twitter URL](https://img.shields.io/twitter/url/https/twitter.com/fold_left.svg?style=social&label=Follow%20%40collabnix)](https://twitter.com/collabnix) - Access [500+ blogs](https://collabnix.com) on Docker, Kubernetes and Cloud-Native Technology # Featured Articles - [Kubernetes CrashLoopBackOff Error: What It Is and How to Fix It?](https://collabnix.com/kubernetes-crashloopbackoff-error-what-it-is-and-how-to-fix-it/) - [Top 5 Kubernetes Backup and Storage Solutions: Velero and More](https://collabnix.com/top-5-kubernetes-backup-tools-you-should-be-aware-of/) - [Top 5 Storage Provider Tools for Kubernetes](https://collabnix.com/top-5-storage-provider-tools-for-kubernetes/) - [Top 5 Alert and Monitoring Tools for Kubernetes](https://collabnix.com/top-5-alert-and-monitoring-tools-for-kubernetes/) - [Top 5 Machine Learning Tools For Kubernetes](https://collabnix.com/top-5-machine-learning-tools-for-kubernetes/) - [Top 5 Cluster Management Tools for Kubernetes in 2023](https://collabnix.com/top-5-cluster-management-tools-for-kubernetes-in-2023/) - [10 Tips for Right Sizing Your Kubernetes Cluster](https://collabnix.com/10-tips-for-right-sizing-your-kubernetes-cluster/) - [Step-by-Step Guide to Deploying and Managing Redis on Kubernetes](https://collabnix.com/deploying-and-managing-redis-on-kubernetes/) - [Update Your Kubernetes App Configuration Dynamically using ConfigMap](https://collabnix.com/update-your-kubernetes-app-configuration-dynamically-using-configmap/) - [Streamline Your Deployment Workflow: Utilizing Docker Desktop for Local Development and OpenShift for Production Deployment](https://collabnix.com/streamline-your-deployment-workflow-utilizing-docker-desktop-for-local-development-and-openshift-for-production-deployment/) - [The Impact of Kube-proxy Downtime on Kubernetes Clusters](https://collabnix.com/the-impact-of-kube-proxy-downtime-on-kubernetes-clusters/) - [How to add a Secret to a Deployment in Kubernetes using Kubectl patch](https://collabnix.com/how-to-add-a-secret-to-a-deployment-in-kubernetes-using-kubectl-patch/) ## Pre-requisite: - [Introductory Slides](https://collabnix.github.io/kubelabs/Kubernetes_Intro_slides-1/Kubernetes_Intro_slides-1.html) - [Deep Dive into Kubernetes Architecture](./Kubernetes_Architecture.md) ## Preparing 5-Node Kubernetes Cluster ### PWK: - [Preparing 5-Node Kubernetes Cluster](./kube101.md) - [Running Portainer on 5 Node Kubernetes Cluster](https://github.com/collabnix/kubelabs/tree/master/portainer#running-portainer-on-5-node-kubernetes-cluster) ### GKE - [Setting up GKE Cluster](./gke-setup.md) - [Setting up Weavescope for Visualization on GKE](./weave.md) ### Docker Desktop for Mac - [Setting up Kubernetes Cluster on AWS using Kops running on Docker Desktop for Mac](./dockerdesktopformac/README.md) ### Ubuntu - [Setting up Kubernetes on Ubuntu](https://github.com/collabnix/kubelabs/blob/master/install/ubuntu/README.md) ## Using Kubectl - [Kubectl for Docker Beginners](./kubectl-for-docker.md) - [Accessing Kubernetes API](./api.md) - [How to know if Kubernetes is using Docker or Containerd as a runtime](detect.md) ## Kubernetes CRUD - [Using Python](python/README.md) - [Using Go](golang/README.md) ## Using AI - [Deploying Kubernetes via AI](./ai/README.md) ## Pods101 - [Introductory Slides](https://collabnix.github.io/kubelabs/Pods101_slides/Pods101.html) - [Deploying Your First Nginx Pod](./pods101/deploy-your-first-nginx-pod.md) - [Viewing Your Pod](./pods101/deploy-your-first-nginx-pod.md#viewing-your-pods) - [Where is your Pod running on?](./pods101/deploy-your-first-nginx-pod.md#which-node-is-this-pod-running-on) - [Pod Output in JSON](./pods101/deploy-your-first-nginx-pod.md#output-in-json) - [Executing Commands against Pod](./pods101/deploy-your-first-nginx-pod.md#executing-commands-against-pods) - [Terminating a Pod](./pods101/deploy-your-first-nginx-pod.md#deleting-the-pod) - [Adding a 2nd container to a Pod](./pods101/deploy-your-first-nginx-pod.md#ading-a-2nd-container-to-a-pod) - [Labels and Selectors in a Pod](./pods101/labels-and-selectors/README.md) ### Kubernetes Tools for Pods - [Kubetail](https://github.com/collabnix/kubelabs/blob/master/pods101/tools/kubetail.md) ## ReplicaSet101 - [Introductory Slides](https://collabnix.github.io/kubelabs/SlidesReplicaSet101/ReplicaSet101.html) - [Creating Your First ReplicaSet - 4 Pods serving Nginx](./replicaset101/README.md#how-does-replicaset-manage-pods) - [Removing a Pod from ReplicaSet](./replicaset101/README.md#removing-a-pod-from-a-replicaset) - [Scaling & Autoscaling a ReplicaSet](./replicaset101/README.md#scaling-and-autoscaling-replicasets) - [Best Practices](./replicaset101/README.md#best-practices) - [Deleting ReplicaSets](./replicaset101/README.md#deleting-replicaset) ## Deployment101 - [Introductory Slides](https://collabnix.github.io/kubelabs/Deployment101_slides/Deployment101.html) - [Creating Your First Deployment](./Deployment101/README.md) - [Checking the list of application deployment](./Deployment101/README.md#checking-the-list-of-application-deployment) - [Scale up/down application deployment](./Deployment101/README.md#step-2-scale-updown-application-deployment) - [Scaling the service to 2 Replicas](./Deployment101/README.md#scaling-the-service-to-2-replicas) - [Perform rolling updates to application deployment](./Deployment101/README.md#step-3-perform-rolling-updates-to-application-deployment) - [Rollback updates to application deployment](./Deployment101/README.md#step-4-rollback-updates-to-application-deployment) - [Cleaning Up](./Deployment101/README.md#step-5-cleanup) ## ConfigMaps101 - [What are ConfigMaps?](./ConfigMaps101/what-are-configmaps.md) ## Scheduler101 - [How Kubernetes Selects the Right node?](./Scheduler101/README.md) - [Node Affinity](./Scheduler101/node_affinity.md) - [Anti-Node Affinity](./Scheduler101/Anti-Node-Affinity.md) - [Nodes taints and tolerations](./Scheduler101/Nodes_taints_and_tolerations.md) ## Services101 - [Introductory Slides](https://collabnix.github.io/kubelabs/Slides_Services101/Services101.html) - [Deploy a Kubernetes Service?](./Services101/README.md#deploying--a-kubernetes-service) - [Labels and Selectors](https://github.com/collabnix/kubelabs/blob/master/Labels-and-Selectors/README.MD) - [Service Exposing More Than One Port](./Services101/README.md#service-exposing-more-than-one-port) - [Kubernetes Service Without Pods?](./Services101/README.md#kubernetes-service-without-pods) - [Service Discovery](./Services101/README.md#service-discovery) - [Connectivity Methods](./Services101/README.md#connectivity-methods) - [Headless Service In Kubernetes?](./Services101/README.md#headless-service-in-kubernetes) ## StatefulSets101 - [The difference between a Statefulset and a Deployment](./StatefulSets101/README.md#what-is-statefulset-and-how-is-it-different-from-deployment) - [Deploying a Stateful Application Using Kubernetes Statefulset?](./StatefulSets101/README.md#deploying-a-stateful-application-using-kubernetes-statefulset) - [Deploying NFS Server](./StatefulSets101#deploying-nfs-server) - [Deploying PV](./StatefulSets101#deploying-persistent-volume) - [Deploying PVC](./StatefulSets101#deploying-persistent-volume-claim) - [Using Volume](./StatefulSets101#using-volume) - [Recreate Pod](./StatefulSets101#recreate-pod) ## DaemonSet101 - [Why DaemonSets in Kubernetes?](./DaemonSet101/README.md) - [Creating your first DeamonSet Deployment](./DaemonSet101/README.md#creating-your-first-deamonset-deployment) - [Restrict DaemonSets To Run On Specific Nodes](./DaemonSet101/README.md#restrict-daemonsets-to-run-on-specific-nodes) - [How To Reach a DaemonSet Pod](./DaemonSet101/README.md#how-to-reach-a-daemonset-pod) ## Jobs101 - [Creating Your First Kubernetes Job](./Jobs101/README.md#creating-your-first-kubernetes-job) - [Multiple Parallel Jobs (Work Queue)](./Jobs101/README.md#multiple-parallel-jobs-work-queue) ## Ingress101 - [What is Kubernetes ingress?](./Ingress101/README.md) - [NodePort](./Ingress101#nodeport) - [Load Balancer](./Ingress101#loadbalancer) - [Ingress](./Ingress101#ingress) - [How to Use Nginx Ingress Controller](./Ingress101#how-to-use-nginx-ingress-controller) - [Ingress Controllers and Ingress Resources](./Ingress101#ingress-controllers-and-ingress-resources) - [Ingress with EKS](./Ingress101/ingress-eks.md) ## RBAC101 - [Role-Based Access Control (RBAC) Overview](./RBAC101/#role-based-access-control-rbac) - [Creating a Kubernetes User Account Using X509 Client Certificate](./RBAC101/#creating-a-kubernetes-user-account-using-x509-client-certificate) ## Service Catalog101 - [What is Kubernetes Service Catalog?](./ServiceCatalog101/what-is-service-catalog.md) - [Creating a sample Service Catalog](./ServiceCatalog101/Create-Service-Catalog.md) - [Installing Service Catalog Helm Chart](./ServiceCatalog101/Install-Service-Catalog-Helm.md) ## Cluster Networking101 - [What Is Cluster Networking In Kubernetes Sense?](./ClusterNetworking101/README.md/#Cluster-Networking) - [Kubernetes Networking Rules](./ClusterNetworking101/README.md/#Kubernetes-Networking-Rules) - [Types of Networks](./ClusterNetworking101/README.md/#Types-of-Networks) - [Underlay Network](./ClusterNetworking101/README.md/#Underlay-Network) - [Overlay Network](./ClusterNetworking101/README.md/#Overlay-Network) - [What is a Container Network Interface (CNI)?](./ClusterNetworking101/README.md/#What-is-a-Container-Network-Interface-(CNI)) - [AWS VPC CNI for Kubernetes](./ClusterNetworking101/README.md/#AWS-VPC-CNI-for-Kubernetes) - [AZURE CNI for Kubernetes](./ClusterNetworking101/README.md/#Azure-CNI-for-Kubernetes) - [Calico](./ClusterNetworking101/README.md/#Calico) - [Cilium](./ClusterNetworking101/README.md/#Cilium) - [Weave Net from WeaveWorks](./ClusterNetworking101/README.md/#Weave-Net-from-WeaveWorks) - [Flannel](./ClusterNetworking101/README.md/#Flannel) - [LAB- Weave Net Implementation](./ClusterNetworking101/README.md/#LAB-Weave-Net-Implementation) ## Network Policies101 - [What is a Kubernetes Network Policy?](./Network_Policies101/README.md) - [Creating Your First NetworkPolicy Definition](./Network_Policies101/First_Network_Policy.md) - [How can we fine-tune Network Policy using selectors?](./Network_Policies101/how_can_we_fine-tune_network_policy_using_selectors.md) - [Deny Ingress Traffic That Has No Rules](./Network_Policies101/Deny_ingress_traffic_that_has_no_rules.md) - [Deny Egress Traffic That Has No Rules](./Network_Policies101/Deny_egress_traffic_that_has_no_rules.md) - [Allow All Ingress Traffic Exclusively](./Network_Policies101/allow_all_ingress_traffic_exclusively.md) - [Allow All Egress Traffic Exclusively](./Network_Policies101/allow_all_egress_traffic_exclusively.md) ## Monitoring101 - [Monitoring in Kubernetes](./Monitoring101/README.md/#Monitoring-in-Kubernetes) - [Core Monitoring Pipeline](./Monitoring101/README.md/#Core-Monitoring-Pipeline) - [Services Monitoring Pipeline](./Monitoring101/README.md/#Service-Monitoring-Pipeline) - [What should you consider in Kubernetes Services Pipeline?](./Monitoring101/README.md/#What-should-you-consider-in-Kubernetes-Services-Pipeline) - [What about Metrics Visualization?](./Monitoring101/README.md/#Metrics-Visulization) - [Changes To Watch For](./Monitoring101/README.md/#Changes-To-Watch-For) - [Heapster is Going Away](./Monitoring101/README.md/#Heapster-is-going-away) - [Metrics Server Will Get More Cool Features](./Monitoring101/README.md/#Metrics-Server-Will-Get-More-Cool-Features) ## Logging101 - [Logging introduction](./Logging101/logging-intro.md) - [Elasticsearch](./Logging101/what-is-elasticsearch.md) - [Fluentd](./Logging101/fluentd.md) - [Fluentd on Kubernetes](./Logging101/fluentd-kube.md) - [Fluent Bit](./Logging101/fluentdbit.md) - [ELK on Kubernetes](./Logging101/elk-on-kubernetes.md) ## Autoscalers101 - [What are autoscalers](./Autoscaler101/what-are-autoscalers.md) - [Autoscaler lab](./Autoscaler101/autoscaler-lab.md) - [Autoscaler helpers](./Autoscaler101/helpers.md) ## Helm101 - [What is Helm?](./Helm101/what-is-helm.md) - [Installing a Helm Chart](./Helm101/installing-a-chart.md) - [Helm Charts](./Helm101/helm-charts.md) - [Helm Chart Hooks](./Helm101/chart-hooks.md) - [Helm Chart Testing](./Helm101/test-charts.md) - [Helm Chart Repository](./Helm101/chart-repos.md) ## AKS101 - [What is AKS?](./AKS101/what-is-aks.md) - [AKS Networking](./AKS101/aks-networking.md) - [AKS IAM](./AKS101/aks-iam.md) - [AKS Storage](./AKS101/aks-storage.md) - [AKS Service Mesh](./AKS101/aks-service-mesh.md) - [AKS KEDA](./AKS101/aks-keda.md) ## Security101 - [What is DevSecOps?](./Security101/devsecops.md) - [Securing your cluster](./Security101/kubernetes-security.md) - [OIDC auth with Keycloak](./Security101/auth-intro.md) ## GitOps101 - [What is GitOps](./GitOps101/what-is-gitops.md) - [ArgoCD](./GitOps101/argocd.md) - [ArgoCD with EKS](./GitOps101/argocd-eks.md) ## Managed Kubernetes Service - [Managed Kubernetes Service Intro](./ManagedKubernetes/readme.md) ## EKS101 - [What is EKS](./EKS101/what-is-eks.md) ## LKE101 - [What is LKE](./LKE101/what-is-lke.md) ## GKE101 - [What is GKE](./GKE101/what-is-gke.md) - [Google Cloud Run](./GKE101/cloud-run.md) - [GKE Service Mesh](./GKE101/gke-service-mesh.md) ## Loft101 - [What is Loft](./Loft101/what-is-loft.md) - [Loft Lab](./Loft101/loft-lab.md) ## Shipa101 - [What is Shipa](./Shipa101/what-is-shipa.md) - [Shipa Lab](./Shipa101/shipa-lab.md) ## DevSpace101 - [What is DevSpace](./DevSpace101/what-is-devspace.md) - [DevSpace Lab](./DevSpace101/devspace-lab.md) ## KubeSphere101 - [What is KubeSphere](./KubeSphere/what-is-kubesphere.md) - [KubeSphere lab](./KubeSphere/kubesphere-lab.md) ## Kubernetes with GitLab 101 - [What is GitLab](./GitLab101/what-is-gitlab.md) - [Kubernetes with GitLab](./GitLab101/kubernetes-with-gitlab.md) - [GitLab runner on Kubernetes](./GitLab101/runner-on-kubernetes.md) ## Kubernetes with Jenkins - [Jenkins on Kubernetes](./Jenkins101/jenkins-on-kubernetes.md) - [Using Jenkins on Kubernetes](./Jenkins101/jenkins-ci.md) ## Strimzi (Kafka on Kubernetes) - [What is Kafka](./Strimzi101/kafka.md) - [Running Kafka on Kubernetes](./Strimzi101/kafka-on-kubernetes.md) ## Java client for Kubernetes - [Introduction](./JavaClient101/intro.md) ## KEDA - [What is KEDA](./Keda101/what-is-keda.md) - [KEDA lab](./Keda101/keda-lab.md) - [Scaling with KEDA and Prometheus](./Keda101/keda-prometheus.md) - [Scaling profiles](./Keda101/scaling-profiles.md) - [Scaling modifiers](./Keda101/scaling-modifiers.md) - [Scaling options](./Keda101/scaling-options.md) ## Terraform EKS - [What is Terraform](./Terraform101/what-is-terraform.md) - [Terraform EKS Lab](./Terraform101/terraform-eks-lab.md) ## Disaster Recover - [What is Disaster Recovery](./DisasterRecovery101/what-is-dr.md) - [DR Lab](./DisasterRecovery101/dr-lab.md) ## Kubezoo - [What is Kubezoo](./Kubezoo/what-is-kubezoo.md) - [Kubezoo lab](./Kubezoo/kubezoo-lab.md) ## Karpenter - [What is Karpenter](./Karpenter101/what-is-karpenter.md) - [Karpenter Lab](./Karpenter101/karpenter-lab.md) - [Fine tuning Karpenter](./Karpenter101/fine-tuning.md) - [Upgrading Karpenter](./Karpenter101/karpenter-upgrade.md) ## Observability & Operations - [Observability tools](./Observability101/observability.md) ## Chaos testing - [What is Chaos testing](./Chaos101/what-is-chaos-testing.md) - [Chaos lab with Chaos Mesh](./Chaos101/chaos-lab.md) ## Rollouts - [What are rollouts](./Rollouts101/what-are-rollouts.md) - [Rollouts lab](./Rollouts101/rollouts-lab.md) # Kyverno - [What is Kyverno](./Kyverno101/what-is-kyverno.md) - [Kyverno policy types](./Kyverno101/policy-types.md) - [Kyverno samples](./Kyverno101/kyverno-sample.md) ## For Node Developers - [Kubernetes for Node Developers](./nodejs.md) ## Cheat Sheets - [Kubernetes Cheat Sheet](./Cheat%20Sheets/Kubernetes%20Cheat%20Sheet.md) - [Helm Cheat Sheet](./Cheat%20Sheets/Helm%20Cheat%20Sheet.md) # Contributors - [Ajeet Singh Raina](https://twitter.com/ajeetsraina) - [Sangam Biradar](https://twitter.com/BiradarSangam) - [Mewantha Bandara](http://linkedin.com/in/mewantha-bandara) - [Rachit Mehrotra](https://www.linkedin.com/in/rachit-mehrotra-08a92819/?originalSubdomain=in) - [Saiyam Pathak](https://twitter.com/SaiyamPathak) - [Divyajeet Singh](https://www.linkedin.com/in/divyajeet-singh) - [Apurva Bhandari](https://www.linkedin.com/in/apurvabhandari-linux) ## Workshop Video [![YouTube](https://github.com/collabnix/kubelabs/blob/master/k8sworkshop.png)](https://www.youtube.com/embed/i0d5ta83c-k) [Click Here](https://www.youtube.com/embed/i0d5ta83c-k) if the link is not working for you. ## Contribution Guidelines ## Step 1. Clone the repository ``` git clone https://github.com/collabnix/kubelabs ``` ## Step 2. Add _config_dev.yml Add the following entry for local access ``` url: http://127.0.0.1:4000 ``` ## Step 3. Run the container ``` docker run --rm \ -v "$PWD:/srv/jekyll" \ -e BUNDLE_PATH="/srv/jekyll/.bundles_cache" \ -p 4000:4000 \ jekyll/builder:3.8 \ bash -c "gem install bundler && bundle install && bundle exec jekyll serve --host 0.0.0.0 --verbose --config _config.yml,_config_dev.yml" ``` # Further References: - [Kubetools](https://kubetools.collabnix.com) [Next: Kubernetes201](https://github.com/collabnix/kubelabs/blob/master/201/README.md) ", Assign "at most 3 tags" to the expected json: {"id":"5091","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"