After this course I should be able to know how to:
- Deploy a single or a multiple container application to K8s
- Configure Service Discovery
- Expose applications to the public internet (well, if applicable)
- Deploy probes to monitor containers
- Bootstrap applications with init containers
- Manage Secrets
- Configure persistent storage for a database
- Prepare K8s for production
- Automated rollout & rollback
- Secret management
- Service discovery & load balancing
- Log collection
- Statefull application support
- persistent volume management
- CPU/Memory quotas
- Batch job processing
- RBAC
- K8s if your ecosystem is almost entirely built on top of containarized applications (serverless may or may not compose your ecosystem… see: https://kubeless.io/ and https://winderresearch.com/a-comparison-of-serverless-frameworks-for-kubernetes-openfaas-openwhisk-fission-kubeless-and-more/)
- DataCenter OS (DCOS) is goo dif you have a mix of containarized and notive applications that you want to manage through a single software, DCOS in this case
- ECS is awesome if you already have a vendor lock-in with AWS and/or if you want to levarage first party integrations such as AWS Networking, Security, Logging, etc
- Docker SWARM is nice if you want to have a single development / deployment tool chain. I mean, docker-compose and Dockerfile is the only thing you need to have to get the app up and running locally and in the production environments
Term | Description |
---|---|
Cluster | a group of nodes configured to run a functioning Kubernetes system. Nodes can be a mix of physical or virtual machines running on public or private clouds, or even in on-premise data centers. This term refers to the aggregate of all nodes and not individual nodes |
Pod | a group of one or more containers running on a single node |
Service | a networking abstraction that defines rules on how to access pods determined by a selector. Do not confuse this concept with things like back-end service or application. Kubernetes services are about networking |
Selector | a set of rules to match resources based on metadata |
Label | key/value pairs attached to objects such as pods. Labels specify identifying attributes meaningful to users, but do not imply semantics to Kubernetes. Here's an example: your environment may be set to production |
Annotations | arbitrary, non-identifying metadata for retrieval by API clients such as tools and libraries. Beta API functionality may be activated by setting specific annotations |
Deployment | a declarative template for creating and scaling pods |
Replica Set | coordinates pod creation, deletion, and updates during deployments |
Volume | a stateful block store for use with ephemeral pods. Volumes may have multiple back-ends such as on-disk, GCE, persistence disks, or other third party systems. Do not confuse this with a database. A volume is simply a place to write persisted data to |
Secret | sensitive information, such as passwords, OAuth tokens, and ssh keys |
StatefulSet | a pod with guarantees on deployment and scaling order |
Request | the desired amount of CPU or memory for a container in a pod |
Resource | any individual Kubernetes item such as deployment, pod, service, or secret etc. Going forward, you'll hear me repeating the term resource to refer to any type of Kubernetes item |
Name | a unique identifier for a particular resource |
Namespace | a group of unique names. You may also hear this referred to as a virtual cluster |