O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Kubernetes Cookbook

Book Description

If your organization is preparing to move toward a cloud-native computing architecture, this cookbook shows you how to successfully use Kubernetes, the de-facto standard for automating the deployment, scaling, and management of containerized applications. With more than 80 proven recipes, developers, system administrators, and architects will quickly learn how to get started with Kubernetes and understand its powerful API.

Through the course of the book, authors Sébastien Goasguen and Michael Hausenblas provide several detailed solutions for installing, interacting with, and using Kubernetes in development and production. You’ll learn how to adapt the system to your particular needs and become familiar with the wider Kubernetes ecosystem. Each standalone chapter features recipes written in O’Reilly’s popular problem-solution-discussion format.

Recipes in this cookbook focus on:

  • Creating a Kubernetes cluster
  • Using the Kubernetes command-line interface
  • Managing fundamental workload types
  • Working with services
  • Exploring the Kubernetes API
  • Managing stateful and non-cloud native apps
  • Working with volumes and configuration data
  • Cluster-level and application-level scaling
  • Securing your applications
  • Monitoring and logging
  • Maintenance and troubleshooting

Table of Contents

  1. Preface
    1. Who Should Read This Book
    2. Why We Wrote This Book
    3. Navigating This Book
    4. A Note on Kubernetes Releases
    5. Technology You Need to Understand
    6. Online Resources
    7. Conventions Used in This Book
    8. Using Code Examples
    9. O’Reilly Safari
    10. How to Contact Us
    11. Acknowledgments
  2. Getting Started with Kubernetes
    1. 1.1. Using Kubernetes Without Installation
    2. 1.2. Installing the Kubernetes CLI, kubectl
    3. 1.3. Installing Minikube to Run a Local Kubernetes Instance
    4. 1.4. Using Minikube Locally for Development
    5. 1.5. Starting Your First Application on Minikube
    6. 1.6. Accessing the Dashboard in Minikube
  3. Creating a Kubernetes Cluster
    1. 2.1. Installing kubeadm to Create a Kubernetes Cluster
    2. 2.2. Bootstrapping a Kubernetes Cluster Using kubeadm
    3. 2.3. Downloading a Kubernetes Release from GitHub
    4. 2.4. Downloading Client and Server Binaries
    5. 2.5. Using a hyperkube Image to Run a Kubernetes Master Node with Docker
    6. 2.6. Writing a systemd Unit File to Run Kubernetes Components
    7. 2.7. Creating a Kubernetes Cluster on Google Kubernetes Engine (GKE)
    8. 2.8. Creating a Kubernetes Cluster on Azure Container Service (ACS)
  4. Learning to Use the Kubernetes Client
    1. 3.1. Listing Resources
    2. 3.2. Deleting Resources
    3. 3.3. Watching Resource Changes with kubectl
    4. 3.4. Editing Resources with kubectl
    5. 3.5. Asking kubectl to Explain Resources and Fields
  5. Creating and Modifying Fundamental Workloads
    1. 4.1. Creating a Deployment Using kubectl run
    2. 4.2. Creating Objects from File Manifests
    3. 4.3. Writing a Pod Manifest from Scratch
    4. 4.4. Launching a Deployment Using a Manifest
    5. 4.5. Updating a Deployment
  6. Working with Services
    1. 5.1. Creating a Service to Expose Your Application
    2. 5.2. Verifying the DNS Entry of a Service
    3. 5.3. Changing the Type of a Service
    4. 5.4. Deploying an Ingress Controller on Minikube
    5. 5.5. Making Services Accessible from Outside the Cluster
  7. Exploring the Kubernetes API and Key Metadata
    1. 6.1. Discovering API Endpoints of the Kubernetes API Server
    2. 6.2. Understanding the Structure of a Kubernetes Manifest
    3. 6.3. Creating Namespaces to Avoid Name Collisions
    4. 6.4. Setting Quotas Within a Namespace
    5. 6.5. Labeling an Object
    6. 6.6. Using Labels for Queries
    7. 6.7. Annotating a Resource with One Command
  8. Managing Specialized Workloads
    1. 7.1. Running a Batch Job
    2. 7.2. Running a Task on a Schedule Within a Pod
    3. 7.3. Running Infrastructure Daemons per Node
    4. 7.4. Managing Stateful and Leader/Follower Apps
    5. 7.5. Influencing Pods’ Startup Behavior
  9. Volumes and Configuration Data
    1. 8.1. Exchanging Data Between Containers via a Local Volume
    2. 8.2. Passing an API Access Key to a Pod Using a Secret
    3. 8.3. Providing Configuration Data to an Application
    4. 8.4. Using a Persistent Volume with Minikube
    5. 8.5. Understanding Data Persistency on Minikube
    6. 8.6. Dynamically Provisioning Persistent Storage on GKE
  10. Scaling
    1. 9.1. Scaling a Deployment
    2. 9.2. Automatically Resizing a Cluster in GKE
    3. 9.3. Automatically Resizing a Cluster in AWS
    4. 9.4. Using Horizontal Pod Autoscaling on GKE
  11. Security
    1. 10.1. Providing a Unique Identity for an Application
    2. 10.2. Listing and Viewing Access Control Information
    3. 10.3. Controlling Access to Resources
    4. 10.4. Securing Pods
  12. Monitoring and Logging
    1. 11.1. Accessing the Logs of a Container
    2. 11.2. Recover from a Broken State with a Liveness Probe
    3. 11.3. Controlling Traffic Flow to a Pod Using a Readiness Probe
    4. 11.4. Adding Liveness and Readiness Probes to Your Deployments
    5. 11.5. Enabling Heapster on Minikube to Monitor Resources
    6. 11.6. Using Prometheus on Minikube
    7. 11.7. Using Elasticsearch–Fluentd–Kibana (EFK) on Minikube
  13. Maintenance and Troubleshooting
    1. 12.1. Enabling Autocomplete for kubectl
    2. 12.2. Removing a Pod from a Service
    3. 12.3. Accessing a ClusterIP Service Outside the Cluster
    4. 12.4. Understanding and Parsing Resource Statuses
    5. 12.5. Debugging Pods
    6. 12.6. Getting a Detailed Snapshot of the Cluster State
    7. 12.7. Adding Kubernetes Worker Nodes
    8. 12.8. Draining Kubernetes Nodes for Maintenance
    9. 12.9. Managing etcd
  14. Developing Kubernetes
    1. 13.1. Compiling from Source
    2. 13.2. Compiling a Specific Component
    3. 13.3. Using a Python Client to Interact with the Kubernetes API
    4. 13.4. Extending the API Using Custom Resource Definitions (CRDs)
  15. The Ecosystem
    1. 14.1. Installing Helm, the Kubernetes Package Manager
    2. 14.2. Using Helm to Install Applications
    3. 14.3. Creating Your Own Chart to Package Your Application with Helm
    4. 14.4. Converting Your Docker Compose Files to Kubernetes Manifests
    5. 14.5. Creating a Kubernetes Cluster with kubicorn
    6. 14.6. Storing Encrypted Secrets in Version Control
    7. 14.7. Deploying Functions with kubeless
  16. Resources
    1. General
    2. Tutorials and Examples
  17. Index