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

Managing Kubernetes

Book Description

While Kubernetes has greatly simplified the task of deploying containerized applications, managing this orchestration framework on a daily basis can still be a complex undertaking. With this practical book, site reliability and DevOps engineers will learn how to build, operate, manage, and upgrade a Kubernetes cluster—whether it resides on cloud infrastructure or on-premises.

Brendan Burns, cofounder of Kubernetes, and Craig Tracey, staff field engineer at Heptio, dissect how Kubernetes works internally and demonstrate ways to maintain, adjust, and improve the cluster to suit your particular use case. You’ll learn how to make architectural choices for designing a cluster, managing access control, monitoring and alerting, and upgrading Kubernetes. Dive in and discover how to take full advantage of this orchestration framework’s capabilities.

  • Learn how your cluster operates, how developers use it to deploy applications, and how Kubernetes can facilitate a developer’s job
  • Adjust, secure, and tune your cluster by understanding Kubernetes APIs and configuration options
  • Detect cluster-level problems early and learn the steps necessary to respond and recover quickly
  • Determine how and when to add libraries, tools, and platforms that build on, extend, or otherwise improve a Kubernetes cluster

Table of Contents

  1. Preface
    1. Who should read This Book
    2. Why we wrote This Book
    3. Navigating This Book
    4. Conventions Used in This Book
    5. Using Code Examples
    6. O’Reilly Safari
    7. How to Contact Us
    8. Acknowledgments
  2. 1. Introduction
    1. How the Cluster Operates
    2. Adjust, Secure, and Tune the Cluster
    3. Responding When Things Go Wrong
    4. Extending the System with New and Custom Functionality
    5. Summary
  3. 2. An Overview of Kubernetes
    1. Containers
    2. Container Orchestration
    3. The Kubernetes API
      1. Basic Objects: Pods, ReplicaSets, and Services
      2. Organizing Your Cluster with Namespaces, Labels, and Annotations
      3. Advanced Concepts: Deployments, Ingress, and StatefulSets
      4. Batch Workloads: Job and ScheduledJob
      5. Cluster Agents and Utilities: DaemonSets
    4. Summary
  4. 3. Kubernetes Architecture
    1. Concepts
      1. Declarative Configuration
      2. Reconciliation or Controllers
      3. Implicit or Dynamic Grouping
    2. Structure
      1. Unix Philosophy of Many Components
      2. API-Driven Interactions
    3. Components
      1. Head Node Components
      2. Components On All Nodes
      3. Scheduled Components
    4. Summary
  5. 4. The Kubernetes API Server
    1. Basic Characteristics for Manageability
    2. Pieces of the API Server
      1. API Management
      2. API Paths
      3. API Discovery
      4. OpenAPI Spec Serving
      5. API Translation
    3. Request Management
      1. Types of Requests
      2. Life of a Request
    4. API Server Internals
      1. CRD Control Loop
    5. Debugging the API Server
      1. Basic Logs
      2. Audit Logs
      3. Activating Additional Logs
      4. Debugging kubectl Requests
    6. Summary
  6. 5. Scheduler
    1. An Overview of Scheduling
    2. Scheduling Process
      1. Predicates
      2. Priorities
      3. High-Level Algorithm
      4. Conflicts
    3. Controlling Scheduling with Labels, Affinity, Taints, and Tolerations
      1. Node Selectors
      2. Node Affinity
      3. Taints and Tolerations
    4. Summary
  7. 6. Installing Kubernetes
    1. kubeadm
      1. Requirements
      2. kubelet
    2. Installing the Control Plane
      1. kubeadm Configuration
      2. Preflight Checks
      3. Certificates
      4. etcd
      5. kubeconfig
      6. Taints
    3. Installing Worker Nodes
    4. Add-Ons
    5. Phases
    6. High Availability
    7. Upgrades
    8. Summary
  8. 7. Authentication and User Management
    1. Users
    2. Authentication
    3. kubeconfig
    4. Service Accounts
    5. Summary
  9. 8. Authorization
    1. REST
    2. Authorization
    3. Role-Based Access Control
      1. Role and ClusterRole
      2. RoleBinding and ClusterRoleBinding
      3. Testing Authorization
    4. Summary
  10. 9. Admission Control
    1. Configuration
    2. Common Controllers
      1. PodSecurityPolicies
      2. ResourceQuota
      3. LimitRange
    3. Dynamic Admission Controllers
      1. Validating Admission Controllers
      2. Mutating Admission Controllers
    4. Summary
  11. 10. Networking
    1. Container Network Interface
      1. Choosing a Plug-in
    2. kube-proxy
    3. Service Discovery
      1. DNS
      2. Environment Variables
    4. Network Policy
    5. Service Mesh
    6. Summary
  12. 11. Monitoring Kubernetes
    1. Goals for Monitoring
    2. Differences Between Logging and Monitoring
    3. Building a Monitoring Stack
      1. Getting Data from Your Cluster and Applications
      2. Aggregating Metrics and Logs from Multiple Sources
      3. Storing Data for Retrieval and Querying
      4. Visualizing and Interacting with Your Data
    4. What to Monitor?
      1. Monitoring Machines
      2. Monitoring Kubernetes
      3. Monitoring Applications
      4. Blackbox Monitoring
      5. Streaming Logs
      6. Alerting
      7. Summary
  13. 12. Disaster Recovery
    1. High Availability
    2. State
    3. Application Data
      1. Persistent Volumes
      2. Local Data
    4. Worker Nodes
    5. etcd
    6. Ark
    7. Summary
  14. 13. Extending Kubernetes
    1. Kubernetes Extension Points
    2. Cluster Daemons
      1. Use Cases for Cluster Daemons
      2. Installing a Cluster Daemon
      3. Operational Considerations for Cluster Daemons
      4. Hands-On: Example of Creating a Cluster Daemon
    3. Cluster Assistants
      1. Use Cases for Cluster Assistants
      2. Installing a Cluster Assistant
      3. Operational Considerations for Cluster Assistants
      4. Hands-On: Example of Cluster Assistants
    4. Extending the Life Cycle of the API Server
      1. Use Cases for Extending the API Life Cycle
      2. Installing API Life Cycle Extensions
      3. Operational Considerations for Life Cycle Extensions
      4. Hands-On: Example of Life Cycle Extensions
    5. Adding Custom APIs to Kubernetes
      1. Use Cases for Adding New APIs
      2. Custom Resource Definitions and Aggregated API Servers
      3. Architecture for Custom Resource Definitions
      4. Installing Custom Resource Definitions
      5. Operational Considerations for Custom Resources
    6. Summary
  15. 14. Conclusions
  16. Index