Skip to content

Commit aa27de5

Browse files
author
Tim Bannister
committed
Tweak wording for Workloads overview
1 parent caa05b9 commit aa27de5

File tree

1 file changed

+54
-30
lines changed

1 file changed

+54
-30
lines changed

content/en/docs/concepts/workloads/_index.md

Lines changed: 54 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,50 +8,74 @@ no_list: true
88

99
{{< glossary_definition term_id="workload" length="short" >}}
1010
Whether your workload is a single component or several that work together, on Kubernetes you run
11-
it inside a set of [Pods](/docs/concepts/workloads/pods).
12-
In Kubernetes, a Pod represents a set of running {{< glossary_tooltip text="containers" term_id="container" >}}
13-
on your cluster.
11+
it inside a set of [_pods_](/docs/concepts/workloads/pods).
12+
In Kubernetes, a `Pod` represents a set of running
13+
{{< glossary_tooltip text="containers" term_id="container" >}} on your cluster.
1414

15-
A Pod has a defined lifecycle. For example, once a Pod is running in your cluster then
16-
a critical failure on the {{< glossary_tooltip text="node" term_id="node" >}} where that
17-
Pod is running means that all the Pods on that node fail. Kubernetes treats that level
18-
of failure as final: you would need to create a new Pod even if the node later recovers.
15+
Kubernetes pods have a [defined lifecycle](/docs/concepts/workloads/pods/pod-lifecycle/).
16+
For example, once a pod is running in your cluster then a critical fault on the
17+
{{< glossary_tooltip text="node" term_id="node" >}} where that pod is running means that
18+
all the pods on that node fail. Kubernetes treats that level of failure as final: you
19+
would need to create a new `Pod` to recover, even if the node later becomes healthy.
1920

20-
However, to make life considerably easier, you don't need to manage each Pod directly.
21-
Instead, you can use _workload resources_ that manage a set of Pods on your behalf.
21+
However, to make life considerably easier, you don't need to manage each `Pod` directly.
22+
Instead, you can use _workload resources_ that manage a set of pods on your behalf.
2223
These resources configure {{< glossary_tooltip term_id="controller" text="controllers" >}}
23-
that make sure the right number of the right kind of Pod are running, to match the state
24+
that make sure the right number of the right kind of pod are running, to match the state
2425
you specified.
2526

26-
Those workload resources include:
27+
Kubernetes provides several built-in workload resources:
2728

28-
* [Deployment](/docs/concepts/workloads/controllers/deployment/) and [ReplicaSet](/docs/concepts/workloads/controllers/replicaset/)
29-
(replacing the legacy resource {{< glossary_tooltip text="ReplicationController" term_id="replication-controller" >}});
30-
* [StatefulSet](/docs/concepts/workloads/controllers/statefulset/);
31-
* [DaemonSet](/docs/concepts/workloads/controllers/daemonset/) for running Pods that provide
32-
node-local facilities, such as a storage driver or network plugin;
33-
* [Job](/docs/concepts/workloads/controllers/job/) and
34-
[CronJob](/docs/concepts/workloads/controllers/cron-jobs/)
35-
for tasks that run to completion.
29+
* [`Deployment`](/docs/concepts/workloads/controllers/deployment/) and [`ReplicaSet`](/docs/concepts/workloads/controllers/replicaset/)
30+
(replacing the legacy resource
31+
{{< glossary_tooltip text="ReplicationController" term_id="replication-controller" >}}).
32+
`Deployment` is a good fit for managing a stateless application workload on your cluster,
33+
where any `Pod` in the `Deployment` is interchangeable and can be replaced if needed.
34+
* [`StatefulSet`](/docs/concepts/workloads/controllers/statefulset/) lets you
35+
run one or more related Pods that do track state somehow. For example, if your workload
36+
records data persistently, you can run a `StatefulSet` that matches each `Pod` with a
37+
[`PersistentVolume`](/docs/concepts/storage/persistent-volumes/). Your code, running in the
38+
`Pods` for that `StatefulSet`, can replicate data to other `Pods` in the same `StatefulSet`
39+
to improve overall resilience.
40+
* [`DaemonSet`](/docs/concepts/workloads/controllers/daemonset/) defines `Pods` that provide
41+
node-local facilities. These might be fundamental to the operation of your cluster, such
42+
as a networking helper tool, or be part of an
43+
{{< glossary_tooltip text="add-on" term_id="addons" >}}.
44+
Every time you add a node to your cluster that matches the specification in a `DaemonSet`,
45+
the control plane schedules a `Pod` for that `DaemonSet` onto the new node.
46+
* [`Job`](/docs/concepts/workloads/controllers/job/) and
47+
[`CronJob`](/docs/concepts/workloads/controllers/cron-jobs/)
48+
define tasks that run to completion and then stop. Jobs represent one-off tasks, whereas
49+
`CronJobs` recur according to a schedule.
3650

37-
There are also two supporting concepts that you might find relevant:
38-
* [Garbage collection](/docs/concepts/workloads/controllers/garbage-collection/) tidies up objects
39-
from your cluster after their _owning resource_ has been removed.
40-
* The [_time-to-live after finished_ controller](/docs/concepts/workloads/controllers/ttlafterfinished/)
41-
removes Jobs once a defined time has passed since they completed.
51+
In the wider Kubernetes ecosystem, you can find third-party workload resources that provide
52+
additional behaviors. Using a
53+
[custom resource definition](/docs/concepts/extend-kubernetes/api-extension/custom-resources/),
54+
you can add in a third-party workload resource if you want a specific behavior that's not part
55+
of Kubernetes' core. For example, if you wanted to run a group of `Pods` for your application but
56+
stop work unless _all_ the Pods are available (perhaps for some high-throughput distributed task),
57+
then you can implement or install an extension that does provide that feature.
4258

4359
## {{% heading "whatsnext" %}}
4460

4561
As well as reading about each resource, you can learn about specific tasks that relate to them:
4662

47-
* [Run a stateless application using a Deployment](/docs/tasks/run-application/run-stateless-application-deployment/)
63+
* [Run a stateless application using a `Deployment`](/docs/tasks/run-application/run-stateless-application-deployment/)
4864
* Run a stateful application either as a [single instance](/docs/tasks/run-application/run-single-instance-stateful-application/)
4965
or as a [replicated set](/docs/tasks/run-application/run-replicated-stateful-application/)
50-
* [Run Automated Tasks with a CronJob](/docs/tasks/job/automated-tasks-with-cron-jobs/)
66+
* [Run automated tasks with a `CronJob`](/docs/tasks/job/automated-tasks-with-cron-jobs/)
67+
68+
To learn about Kubernetes' mechanisms for separating code from configuration,
69+
visit [Configuration](/docs/concepts/configuration/).
70+
71+
There are two supporting concepts that provide backgrounds about how Kubernetes manages pods
72+
for applications:
73+
* [Garbage collection](/docs/concepts/workloads/controllers/garbage-collection/) tidies up objects
74+
from your cluster after their _owning resource_ has been removed.
75+
* The [_time-to-live after finished_ controller](/docs/concepts/workloads/controllers/ttlafterfinished/)
76+
removes Jobs once a defined time has passed since they completed.
5177

5278
Once your application is running, you might want to make it available on the internet as
53-
a [Service](/docs/concepts/services-networking/service/) or, for web application only,
54-
using an [Ingress](/docs/concepts/services-networking/ingress).
79+
a [`Service`](/docs/concepts/services-networking/service/) or, for web application only,
80+
using an [`Ingress`](/docs/concepts/services-networking/ingress).
5581

56-
You can also visit [Configuration](/docs/concepts/configuration/) to learn about Kubernetes'
57-
mechanisms for separating code from configuration.

0 commit comments

Comments
 (0)