万本电子书0元读

万本电子书0元读

顶部广告

The Complete Kubernetes Guide电子书

售       价:¥

5人正在读 | 0人评论 6.2

作       者:Jonathan Baier

出  版  社:Packt Publishing

出版时间:2019-05-20

字       数:73.2万

所属分类: 进口书 > 外文原版书 > 电脑/网络

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
Design, deploy, and manage large-scale containers using Kubernetes Key Features * Gain insight into the latest features of Kubernetes, including Prometheus and API aggregation * Discover ways to keep your clusters always available, scalable, and up-to-date * Master the skills of designing and deploying large clusters on various cloud platforms Book Description If you are running a number of containers and want to be able to automate the way they’re managed, it can be helpful to have Kubernetes at your disposal. This Learning Path guides you through core Kubernetes constructs, such as pods, services, replica sets, replication controllers, and labels. You'll get started by learning how to integrate your build pipeline and deployments in a Kubernetes cluster. As you cover more chapters in the Learning Path, you'll get up to speed with orchestrating updates behind the scenes, avoiding downtime on your cluster, and dealing with underlying cloud provider instability in your cluster. With the help of real-world use cases, you'll also explore options for network configuration, and understand how to set up, operate, and troubleshoot various Kubernetes networking plugins. In addition to this, you'll gain insights into custom resource development and utilization in automation and maintenance workflows. By the end of this Learning Path, you'll have the expertise you need to progress from an intermediate to an advanced level of understanding Kubernetes. This Learning Path includes content from the following Packt products: * Getting Started with Kubernetes - Third Edition by Jonathan Baier and Jesse White * Mastering Kubernetes - Second Edition by Gigi Sayfan What you will learn * Download, install, and configure the Kubernetes code base * Create and configure custom Kubernetes resources * Use third-party resources in your automation workflows * Deliver applications as standard packages * Set up and access monitoring and logging for Kubernetes clusters * Set up external access to applications running in the cluster * Manage and scale Kubernetes with hosted platforms on Amazon Web Services (AWS), Azure, and Google Cloud Platform (GCP) * Run multiple clusters and manage them from a single control plane Who this book is for If you are a developer or a system administrator with an intermediate understanding of Kubernetes and want to master its advanced features, then this book is for you. Basic knowledge of networking is required to easily understand the concepts explained.
目录展开

About Packt

Why subscribe?

Packt.com

Contributors

About the authors

Packt is searching for authors like you

Preface

Who this book is for

What this book covers

To get the most out of this book

Download the example code files

Conventions used

Get in touch

Reviews

Introduction to Kubernetes

Technical requirements

A brief overview of containers

What is a container?

cgroups

Namespaces

Union filesystems

Why are containers so cool?

The advantages of Continuous Integration/Continuous Deployment

Resource utilization

Microservices and orchestration

Future challenges

Our first clusters

Running Kubernetes on GCE

Kubernetes UI

Grafana

Command line

Services running on the master

Services running on the minions

Tearing down a cluster

Working with other providers

CLI setup

IAM setup

Cluster state storage

Creating your cluster

Other modes

Resetting the cluster

Investigating other deployment automation

Local alternatives

Starting from scratch

Cluster setup

Installing Kubernetes components (kubelet and kubeadm)

Setting up a master

Joining nodes

Networking

Joining the cluster

Summary

Understanding Kubernetes Architecture

What is Kubernetes?

What Kubernetes is not

Understanding container orchestration

Physical machines, virtual machines, and containers

The benefits of containers

Containers in the cloud

Cattle versus pets

Kubernetes concepts

Cluster

Node

Master

Pod

Label

Annotations

Label selectors

Replication controllers and replica sets

Services

Volume

StatefulSet

Secrets

Names

Namespaces

Diving into Kubernetes architecture in-depth

Distributed systems design patterns

Sidecar pattern

Ambassador pattern

Adapter pattern

Multinode patterns

The Kubernetes APIs

Resource categories

Workloads API

Discovery and load balancing

Config and storage

Metadata

Cluster

Kubernetes components

Master components

API server

Etcd

Kube controller manager

Cloud controller manager

Kube-scheduler

DNS

Node components

Proxy

Kubelet

Kubernetes runtimes

The Container Runtime Interface (CRI)

Docker

Rkt

App container

Cri-O

Rktnetes

Is rkt ready for use in production?

Hyper containers

Stackube

Continuous integration and deployment

What is a CI/CD pipeline?

Designing a CI/CD pipeline for Kubernetes

Summary

Building a Foundation with Core Kubernetes Constructs

Technical requirements

The Kubernetes system

Nucleus

Application layer

Governance layer

Interface layer

Ecosystem

The architecture

The Master

Cluster state

Cluster nodes

Master

Nodes (formerly minions)

Core constructs

Pods

Pod example

Labels

The container's afterlife

Services

Replication controllers and replica sets

Our first Kubernetes application

More on labels

Replica sets

Health checks

TCP checks

Life cycle hooks or graceful shutdown

Application scheduling

Scheduling example

Summary

Working with Networking, Load Balancers, and Ingress

Technical requirements

Container networking

The Docker approach

Docker default networks

Docker user-defined networks

The Kubernetes approach

Networking options

Networking comparisons

Weave

Flannel

Project Calico

Canal

Kube-router

Balanced design

Advanced services

External services

Internal services

Custom load balancing

Cross-node proxy

Custom ports

Multiple ports

Ingress

Types of ingress

Migrations, multicluster, and more

Custom addressing

Service discovery

DNS

Multitenancy

Limits

A note on resource usage

Summary

Using Critical Kubernetes Resources

Designing the Hue platform

Defining the scope of Hue

Hue components

Hue microservices

Planning workflows

Automatic workflows

Human workflows

Budget-aware workflows

Using Kubernetes to build the Hue platform

Using Kubectl effectively

Understanding Kubectl resource configuration files

Deploying long-running microservices in pods

Creating pods

Decorating pods with labels

Deploying long-running processes with deployments

Updating a deployment

Separating internal and external services

Deploying an internal service

Creating the hue-reminders service

Exposing a service externally

Ingress

Using namespace to limit access

Launching jobs

Running jobs in parallel

Cleaning up completed jobs

Scheduling cron jobs

Mixing non-cluster components

Outside-the-cluster-network components

Inside-the-cluster-network components

Managing the Hue platform with Kubernetes

Using liveness probes to ensure your containers are alive

Using readiness probes to manage dependencies

Employing Init Containers for orderly pod bring-up

Sharing with DaemonSet pods

Evolving the Hue platform with Kubernetes

Utilizing Hue in enterprises

Advancing science with Hue

Educating the kids of the future with Hue

Summary

Exploring Kubernetes Storage Concepts

Technical requirements

Persistent storage

Temporary disks

Cloud volumes

GCE Persistent Disks

AWS Elastic Block Store

Other storage options

PersistentVolumes and Storage Classes

Dynamic volume provisioning

StatefulSets

A stateful example

Summary

Monitoring and Logging

Technical requirements

Monitoring operations

Built-in monitoring

Exploring Heapster

Customizing our dashboards

FluentD and Google Cloud Logging

FluentD

Maturing our monitoring operations

GCE (Stackdriver)

Signing up for GCE monitoring

Alerts

Beyond system monitoring with Sysdig

Sysdig Cloud

Detailed views

Topology views

Metrics

Alerting

The Sysdig command line

The Csysdig command-line UI

Prometheus

Prometheus summary

Prometheus installation choices

Tips for creating an Operator

Installing Prometheus

Summary

Monitoring, Logging, and Troubleshooting

Monitoring Kubernetes with Heapster

cAdvisor

Installing Heapster

InfluxDB backend

The storage schema

CPU

Filesystem

Memory

Network

Uptime

Grafana visualization

Performance analysis with the dashboard

Top-level view

Cluster

Workloads

Discovery and load balancing

Adding central logging

Planning central logging

Fluentd

Elasticsearch

Kibana

Detecting node problems

Node problem detector

DaemonSet

Problem daemons

Troubleshooting scenarios

Designing robust systems

Hardware failure

Quotas, shares, and limits

Bad configuration

Cost versus performance

Managing cost on the cloud

Managing cost on bare metal

Managing cost on hybrid clusters

Using Prometheus

What are operators?

The Prometheus Operator

Installing Prometheus with kube-prometheus

Monitoring your cluster with Prometheus

Summary

Operating Systems, Platforms, and Cloud and Local Providers

Technical requirements

The importance of standards

The OCI Charter

The OCI

Container Runtime Interface

Trying out CRI-O

More on container runtimes

CNCF

Standard container specification

CoreOS

rkt

etcd

Kubernetes with CoreOS

Tectonic

Dashboard highlights

Hosted platforms

Amazon Web Services

Microsoft Azure

Google Kubernetes Engine

Summary

Creating Kubernetes Clusters

A quick single-node cluster with Minikube

Getting ready

On Windows

On macOS

Creating the cluster

Troubleshooting

Checking out the cluster

Doing work

Examining the cluster with the dashboard

Creating a multinode cluster using kubeadm

Setting expectations

Getting ready

Preparing a cluster of vagrant VMs

Installing the required software

The host file

The vars.yml file

The playbook.yml file

Creating the cluster

Initializing the master

Setting up the pod network

Adding the worker nodes

Creating clusters in the cloud (GCP, AWS, and Azure)

The cloud-provider interface

Google Cloud Platform (GCP)

Amazon Web Services (AWS)

Amazon Elastic Container Service for Kubernetes (EKS)

Fargate

Azure

Alibaba Cloud

Creating a bare-metal cluster from scratch

Use cases for bare metal

When should you consider creating a bare-metal cluster?

The process

Using virtual private cloud infrastructure

Bootkube

Summary

Cluster Federation and Multi-Tenancy

Technical requirements

Introduction to federation

Why federation?

The building blocks of federation

Key components

Federated services

Setting up federation

Contexts

New clusters for federation

Initializing the federation control plane

Adding clusters to the federation system

Federated resources

Federated configurations

Federated horizontal pod autoscalers

How to use federated HPAs

Other federated resources

Events

Jobs

True multi-cloud

Getting to multi-cloud

Deleting the cluster

Summary

Cluster Authentication, Authorization, and Container Security

Basics of container security

Keeping containers contained

Resource exhaustion and orchestration security

Image repositories

Continuous vulnerability scanning

Image signing and verification

Kubernetes cluster security

Secure API calls

Secure node communication

Authorization and authentication plugins

Admission controllers

RBAC

Pod security policies and context

Enabling PodSecurityPolicies

Additional considerations

Securing sensitive application data (secrets)

Summary

Running Stateful Applications with Kubernetes

Stateful versus stateless applications in Kubernetes

Understanding the nature of distributed data-intensive apps

Why manage state in Kubernetes?

Why manage state outside of Kubernetes?

Shared environment variables versus DNS records for discovery

Accessing external data stores via DNS

Accessing external data stores via environment variables

Creating a ConfigMap

Consuming a ConfigMap as an environment variable

Using a redundant in-memory state

Using DaemonSet for redundant persistent storage

Applying persistent volume claims

Utilizing StatefulSet

When to use StatefulSet

The components of StatefulSet

Running a Cassandra cluster in Kubernetes

Quick introduction to Cassandra

The Cassandra Docker image

Exploring the run.sh script

Hooking up Kubernetes and Cassandra

Digging into the Cassandra configuration

The custom seed provider

Creating a Cassandra headless service

Using StatefulSet to create the Cassandra cluster

Dissecting the stateful set configuration file

Using a replication controller to distribute Cassandra

Dissecting the replication controller configuration file

Assigning pods to nodes

Using DaemonSet to distribute Cassandra

Summary

Rolling Updates, Scalability, and Quotas

Horizontal pod autoscaling

Declaring horizontal pod autoscaler

Custom metrics

Using custom metrics

Autoscaling with kubectl

Performing rolling updates with autoscaling

Handling scarce resources with limits and quotas

Enabling resource quotas

Resource quota types

Compute resource quota

Storage resource quota

Object count quota

Quota scopes

Requests and limits

Working with quotas

Using namespace-specific context

Creating quotas

Using limit ranges for default compute quotas

Choosing and managing the cluster capacity

Choosing your node types

Choosing your storage solutions

Trading off cost and response time

Using effectively multiple node configurations

Benefiting from elastic cloud resources

Autoscaling instances

Mind your cloud quotas

Manage regions carefully

Considering Hyper.sh (and AWS Fargate)

Pushing the envelope with Kubernetes

Improving the performance and scalability of Kubernetes

Caching reads in the API server

The pod life cycle event generator

Serializing API objects with protocol buffers

etcd3

Other optimizations

Measuring the performance and scalability of Kubernetes

The Kubernetes SLOs

Measuring API responsiveness

Measuring end-to-end pod startup time

Testing Kubernetes at scale

Introducing the Kubemark tool

Setting up a Kubemark cluster

Comparing a Kubemark cluster to a real-world cluster

Summary

Advanced Kubernetes Networking

Understanding the Kubernetes networking model

Intra-pod communication (container to container)

Inter-pod communication (pod to pod)

Pod-to-service communication

External access

Kubernetes networking versus Docker networking

Lookup and discovery

Self-registration

Services and endpoints

Loosely coupled connectivity with queues

Loosely coupled connectivity with data stores

Kubernetes ingress

Kubernetes network plugins

Basic Linux networking

IP addresses and ports

Network namespaces

Subnets, netmasks, and CIDRs

Virtual Ethernet devices

Bridges

Routing

Maximum transmission unit

Pod networking

Kubenet

Requirements

Setting the MTU

Container Networking Interface (CNI)

Container runtime

CNI plugin

Kubernetes networking solutions

Bridging on bare metal clusters

Contiv

Open vSwitch

Nuage networks VCS

Canal

Flannel

Calico project

Romana

Weave net

Using network policies effectively

Understanding the Kubernetes network policy design

Network policies and CNI plugins

Configuring network policies

Implementing network policies

Load balancing options

External load balancer

Configuring an external load balancer

Via configuration file

Via Kubectl

Finding the load balancer IP addresses

Preserving client IP addresses

Specifying original client IP address preservation

Understanding potential in even external load balancing

Service load balancer

Ingress

HAProxy

Utilizing the NodePort

Custom load balancer provider using HAProxy

Running HAProxy Inside the Kubernetes cluster

Keepalived VIP

Træfic

Writing your own CNI plugin

First look at the loopback plugin

Building on the CNI plugin skeleton

Reviewing the bridge plugin

Summary

Kubernetes Infrastructure Management

Technical requirements

Planning a cluster

Picking what's right

Securing the cluster

Tuning examples

Upgrading the cluster

Upgrading PaaS clusters

Scaling the cluster

On GKE and AKS

DIY clusters

Node maintenance

Additional configuration options

Summary

Customizing Kubernetes - API and Plugins

Working with the Kubernetes API

Understanding OpenAPI

Setting up a proxy

Exploring the Kubernetes API directly

Using Postman to explore the Kubernetes API

Filtering the output with httpie and jq

Creating a pod via the Kubernetes API

Accessing the Kubernetes API via the Python client

Dissecting the CoreV1API group

Listing objects

Creating objects

Watching objects

Invoking Kubectl programmatically

Using Python subprocess to run Kubectl

Extending the Kubernetes API

Understanding the structure of a custom resource

Developing custom resource definitions

Integrating custom resources

Finalizing custom resources

Validating custom resources

Understanding API server aggregation

Utilizing the service catalog

Writing Kubernetes plugins

Writing a custom scheduler plugin

Understanding the design of the Kubernetes scheduler

The scheduler

Registering an algorithm provider

Configuring the scheduler

Packaging the scheduler

Deploying the custom scheduler

Running another custom scheduler in the cluster

Assigning pods to the custom scheduler

Verifying that the pods were scheduled using the custom scheduler

Employing access control webhooks

Using an authentication webhook

Using an authorization webhook

Using an admission control webhook

Configuring webhook admission controller on the fly

Providing custom metrics for horizontal pod autoscaling

Extending Kubernetes with custom storage

Taking advantage of FlexVolume

Benefitting from CSI

Summary

Handling the Kubernetes Package Manager

Understanding Helm

The motivation for Helm

The Helm architecture

Helm components

The Tiller server

The Helm client

Using Helm

Installing Helm

Installing the Helm client

Installing the Tiller server

Installing Tiller in-cluster

Installing Tiller locally

Using Alternative Storage Backend

Finding charts

Installing packages

Checking installation status

Customizing a chart

Additional installation options

Upgrading and rolling back a release

Deleting a release

Working with repositories

Managing charts with Helm

Taking advantage of starter packs

Creating your own charts

The Chart.yaml file

Versioning charts

The appVersion field

Deprecating charts

Chart metadata files

Managing chart dependencies

Managing dependencies with requirements.yaml

Using special fields in requirements.yaml

Using templates and values

Writing template files

Using pipelines and functions

Embedding predefined values

Feeding values from a file

Scope, dependencies, and values

Summary

The Future of Kubernetes

The road ahead

Kubernetes releases and milestones

Kubernetes special interest and working groups

Competition

The value of bundling

Docker Swarm

Mesos/Mesosphere

Cloud platforms

AWS

Azure

Alibaba Cloud

The Kubernetes momentum

Community

GitHub

Conferences and meetups

Mindshare

Ecosystem

Public cloud providers

OpenShift

OpenStack

Other players

Education and training

Modularization and out-of-tree plugins

Service meshes and serverless frameworks

Service meshes

Serverless frameworks

Summary

Other Books You May Enjoy

Leave a review - let other readers know what you think

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部