Table Of Contents
1. Introducing Docker and Kubernetes
- Understanding Docker Containers and Images
- Building your own Docker images
- Sharing images with other Registries
- Using Docker Volumes for persistent storage
- Understanding how Docker runs containers
- Run multi-container apps with Docker Compose
- Introducing Kubernetes
- Understanding Kubernetes Architecture
- Running an application in Kubernetes
- Understanding the benifits of using Kubernetes
2. Core concepts
- Pods: running containers in Kubernetes
- Introducing pods
- Creating pods from YAML or JSON descriptiors
- Orginizing Pods with labes
- Listing subsets of Pods through label selectors
- Using labels and selectors to constrain Pod
- Annotating Pods
- Using namespace to group resources
- Stopping and removing Pods
- Replication and other controllers: deploying managed pods
- Keeping Pods healthy
- Introducing Replication Controllers
- Using ReplicaSets instead of Replication Controllers
- Running exactly one Pod on each Pod with DaemonSets
- Running Pods that perform a single completable task
- Scheduling Jobs to run periodically or once in the future
- Services: enabling clients to discover and talk to Pods
- Introducing services
- Connecting to services living outside the cluster
- Exposing services to external clients
- Exposing services externally through an Ingress resource
- Signaling when a pod is ready is accept connections
- Using a headless service for discovering individual Pods
- Troubleshooting services
- Volumes: attaching disk storage to containers
- Introducing volumes
- Using volumes to share data between containers
- Accessing files on the worker node's Filesystem
- Using persistent storage
- Decoupling Pods from the underlying storage technology
- Dynamic provisioning of PersistentVolumes
- ConfigMaps and Secrets: configuring applications
- Configuring containerized applications
- Passing command-line arguments to containers
- Setting environment variables for a container
- Decoupling configuration with a ConfigMap
- Using Secrets to pass sensitive data to containers
- Accessing Pod metadata and other resource from applications
- Passing metadata through the Downward API
- Talking to the Kubernetes API Server
- Deployments: updating applications declaratively
- Updating applications running in Pods
- Performing an automatic rolling update with ReplicationController
- Using Deployments for updating apps declaratively
- StatefulSets: deploying replicated stateful applications
- Replicating stateful pods
- Understanding StatefulSets
- Using a StatefulSet
- Discovering peers in a StatefulSet
- Understanding how StatefulSets deal with node failures
3. Advanced Kubernetes
- Networking
- Communication between containers in the same pod
- Communication between pods on the same node
- Communication between pods on different nodes
- Communication between pods and services
- How does DNS work? How do we discover IP addresses?
- Securing the Kubernetes API server
- Understanding authentication
- Securing the cluster with role-based access control
- Securing cluster nodes and the network
- Using the host node's namespaces in a pod
- Configuring the container's security context
- Restricting the use of security-related features
- Isolating the pod network
- Managing pod's computational resources
- Requesting resources for a pod's containers
- Limiting resources available to a container
- Understanding pod QoS classes
- Namespaces
- Setting default requests and limits for pods per namespace
- Limiting the total resources available in a namespace
- Monitoring pod resource usage
- Automatic Scaling of pods and cluster nodes
- Horizontal pod autoscaling
- Vertical pod autoscaling
- Horizontal scaling of cluster nodes
- Advanced scheduling
- Using taints and tolerations to repel pods from certain nodes
- Using node affinity to attract pods to certain nodes
- Co-locating pods with pod affinity and anti-affinity
- Monitoring and Logging
- Accessing the Logs of a Container
- Working with Kubernetes logs
- Working with etcd log
- Monitoring master and node
- Extending Kubernetes
- Defining custom API objects
- Extending Kubernetes with the Kubernetes Service Catalog
- Platforms built on top of Kubernetes