Skip to content

Latest commit

 

History

History
67 lines (57 loc) · 4.71 KB

File metadata and controls

67 lines (57 loc) · 4.71 KB

Kubernetes

Kubernetes (also known by its synonym k8s) is an open source container cluster manager. Kubernetes' primary goal is to provide a platform for automating deployment, scaling, and operations of application containers across a cluster of hosts. Kubernetes was released by Google on July 2015.

Latest stable release: v1.11.1 (2018-08-17)

Get the latest stable release with:

$ curl -sSL https://dl.k8s.io/release/stable.txt

Kubernetes is built through the definition of a set of components (building blocks or "primitives") which, when used collectively, provide a method for the deployment, maintenance, and scalability of container-based application clusters.

These "primitives" are designed to be loosely coupled (i.e., where little to no knowledge of the other component definitions is needed to use) as well as easily extensible through an API. Both the internal components of Kubernetes as well as the extensions and containers make use of this API.

Managed Kubernetes (GKE)

In this workshop, we will discuss how to setup Kubernetes clusters via the Google Kubernetes Engine (GKE). In a managed cluster, many of the control-plane components are abstracted from the end-user. This means that Google provides an SLA for the control-plane and leaves you to focus on deploying and managing your workloads.

Because you won't have access to the nodes running etcd and the api, there are some customizations that may not be possible, at that level.

Table of Contents

  1. Overview / Moving Parts
    1. ETCD
    2. Kubernetes API
    3. Controller Manager / Scheduler / Kubelet / Proxy
    4. Networking (Flannel/Calico)
    5. Primitives (Deployments / Services / Pods / etc)
    6. RBAC / Service Accounts
    7. Cloud Provider
  2. Environment Strategies (NonProd/Prod vs Dev/Test/Cert/Prod)
    1. Namespaces
    2. Environments
    3. Service Discovery / KubeDNS
    4. Workloads
  3. Standing up your First Cluster
    1. Minikube (Local)
    2. Docker Desktop
    3. GKE
    4. kubectl
    5. Labels, Selectors, and Annotations
    6. Private Repo Image Pull Secrets
  4. Deploying Stateless Applications
    1. Deployments
    2. Jobs
    3. DaemonSets
    4. ConfigMaps and Secrets
  5. Deploying Stateful Applications
    1. Volume Management
    2. Stateful Sets
  6. System Services
    1. Standard Kube-System Pods
    2. Third Party Add-Ons (Datadog, Helm)
  7. Ingress / Traffic Routing
    1. Defining Services (ClusterIP / NodePort / LoadBalancer)
    2. Ingress Controllers / Rules
    3. Considerations for gRPC
  8. Auto-Scaling / SRE
    1. Resources (Limits / Requests)
    2. NodeSelector/Affinity/Anti-Affinity
    3. Liveness / Readiness Probes
    4. Horizontal Pod Autoscaling
    5. Cluster Scaling
  9. Revisiting Section 2.3.4 .NET Core - ReactJS
    1. Setting Up Redis
    2. Setting Up Our Web App