Multi-Host Container Scheduling:
- Done by the kube-scheduler
- Assigns pods to nodes at runtime
- Checks resources, quality of service, policies, and user specifications before scheduling
Scalability and Availability:
- K8s master can be deployed in a highly available configuration
- Multi-region deployments are available
- 5000 node cluster/150,000 total pods
- Pods can be horizontally scaled via API
Flexibility and Modularization:
- Plug-and-play architecture
- Extend architecture when needed
- Add-ons: network drivers, service discovery, container runtime, visualization, and command
Features that allow Kubernetes to scale:
- Registration: nodes register themselves with master
- Service Discovery: automatic detection of services and endopoints via DNS or environment variables
Persistent Storage:
- Pods can use persistent volumes to store data
- Data retained across pod restarts and crashes
Application Upgrades and Rollbacks are supported out of the box
Kubernetes Maintenance and Upgrades:
- Features are always backward-compatible
- APIs are versioned
- Turn off/on host during maintenance (unschedulable)
Logging and Monitoring:
- Application monitoring built in
- TCP, HTTP, or container execution health check
- Node health check:
- Failures monitored by node controller
- Kubernetes status:
- Add-ons: Heapster and cAdvisor
- Using existing logging framework or extend out and use your own
Secrets Management
- Secrets are mounted as data volumes or env variables
- Spacific to namespace - not shared accross all the applications
Master Node: overall management of the kubernetes cluster and consists of 3 components:
Worker Nodes: where the applications are operating
Kube-Proxy:
Summary:
Node:
Each node has to have the following:
In production setting, it is recommended to have at least a 3 node cluster
Minikube:
Pods: the most basic unit needed to run the kubernetes cluster
More About Pods:
Benefits of Conrollers:
Kinds of Controllers:
Labels:
Selectors: By themselves, labels aren't really that powerful. But when you add selectors, you introduce a very powerful feature. With labels and selectors, you can identify a specific set of objects. There are two kinds of selectors: equality-based and set-based:
Namespaces: And finally, we have namespaces. Unlike labels and selectors, the namespace concept is a feature of Kubernetes that allows you to have multiple virtual clusters backed by the same physical cluster. Namespaces are a great concept to use for large enterprises where there are many users and teams and you want to give access to different teams but at the same time have a rough idea of who owns what in the Kubernetes environment. For example, if you have a big e commerce company, you might have a namespace for your catalog team, card team and order status team to run their different applications. It's also a great way to divide cluster resources between multiple users and this can be done using resource quotas. Namespaces provide scope for names. Names of resources, like deployments and pods, must be unique within the namespace, but not necessarily across separate namespaces. So in our example, the catalog team and the card team can have an application name authentication in their own namespaces. When you launch Kubernetes, there is a default namespace where all our objects get placed, but you are allowed to create new namespaces as and when you wish. Also you'll notice that when you install newer application Kubernetes, they'll typically install in a brand new namespace, so that they don't interfere with your existing cluster and cause confusion. In this section, we've gone over ways to organize your applications. Join me in the next section to go cover the Kubelet and Kube-proxy topics.
Kubelet - Kubernetes node agent:
kube-proxy - The network proxy:
In [ ]: