From a66dfb5faf14766c807c3947f32d3c42bc079f06 Mon Sep 17 00:00:00 2001 From: Jerome Petazzoni Date: Sun, 8 Apr 2018 09:57:51 -0500 Subject: [PATCH 1/2] Clarify control plane Explain better that the control plane can run outside of the cluster, and that the word master can be confusing (does it designate the control plane, or the node running the control plane? What if there is no node running the control plane, because the control plane is external?) --- slides/kube/concepts-k8s.md | 83 +++++++++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 23 deletions(-) diff --git a/slides/kube/concepts-k8s.md b/slides/kube/concepts-k8s.md index eea033ae..a2c91fcd 100644 --- a/slides/kube/concepts-k8s.md +++ b/slides/kube/concepts-k8s.md @@ -98,39 +98,76 @@ class: pic --- -## Kubernetes architecture: the master - -- The Kubernetes logic (its "brains") is a collection of services: - - - the API server (our point of entry to everything!) - - core services like the scheduler and controller manager - - `etcd` (a highly available key/value store; the "database" of Kubernetes) - -- Together, these services form what is called the "master" - -- These services can run straight on a host, or in containers -
- (that's an implementation detail) - -- `etcd` can be run on separate machines (first schema) or co-located (second schema) - -- We need at least one master, but we can have more (for high availability) - ---- - ## Kubernetes architecture: the nodes -- The nodes executing our containers run another collection of services: +- The nodes executing our containers run a collection of services: - a container Engine (typically Docker) + - kubelet (the "node agent") + - kube-proxy (a necessary but not sufficient network component) - Nodes were formerly called "minions" -- It is customary to *not* run apps on the node(s) running master components + (You might see that word in older articles or documentation) - (Except when using small development clusters) +--- + +## Kubernetes architecture: the control plane + +- The Kubernetes logic (its "brains") is a collection of services: + + - the API server (our point of entry to everything!) + + - core services like the scheduler and controller manager + + - `etcd` (a highly available key/value store; the "database" of Kubernetes) + +- Together, these services form the control plane of our cluster + +- The control plane is also called the "master" + +--- + +## Running the control plane on special nodes + +- It is common to reserve a dedicated node for the control plane + + (Except of single-node development clusters, like when using minikube) + +- This node is then called a "master" + + (Yes, this is amibiguous: is the "master" a node, or the whole control plane?) + +- Normal applications are restricted from running on this node + + (By using a mechanism called ["taints"](https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/)) + +- When high availability is required, each service of the control plane must be resilient + +- The control plane is then replicated on multiple nodes + + (This is sometimes called a "multi-master" setup) + +--- + +## Running the control plane outside + +- The services of the control plane can run in or out of containers + +- For instance: since `etcd` is a critical service, some people + deploy it directly on a dedicated cluster (without containers) + + (This is illustrated on the first "super complicated" schema) + +- In some hosted Kubernetes offerings (e.g. GKE), the control plane is invisible + + (We only "see" a Kubernetes API endpoint) + +- In that case, there is no "master node" + +*For this reason, it is more accurate to say "control plane" rather than "master".* --- From e038797875146eb761cd2d92ee8fe04ec8b76626 Mon Sep 17 00:00:00 2001 From: Bridget Kromhout Date: Sun, 8 Apr 2018 15:16:42 -0500 Subject: [PATCH 2/2] Update concepts-k8s.md A few suggested clarifications to your (excellent) clarifications --- slides/kube/concepts-k8s.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/slides/kube/concepts-k8s.md b/slides/kube/concepts-k8s.md index a2c91fcd..1cd2e93a 100644 --- a/slides/kube/concepts-k8s.md +++ b/slides/kube/concepts-k8s.md @@ -134,11 +134,11 @@ class: pic - It is common to reserve a dedicated node for the control plane - (Except of single-node development clusters, like when using minikube) + (Except for single-node development clusters, like when using minikube) - This node is then called a "master" - (Yes, this is amibiguous: is the "master" a node, or the whole control plane?) + (Yes, this is ambiguous: is the "master" a node, or the whole control plane?) - Normal applications are restricted from running on this node @@ -152,7 +152,7 @@ class: pic --- -## Running the control plane outside +## Running the control plane outside containers - The services of the control plane can run in or out of containers