@@ -8,50 +8,74 @@ no_list: true
8
8
9
9
{{< glossary_definition term_id="workload" length="short" >}}
10
10
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.
14
14
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.
19
20
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.
22
23
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
24
25
you specified.
25
26
26
- Those workload resources include :
27
+ Kubernetes provides several built-in workload resources:
27
28
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.
36
50
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.
42
58
43
59
## {{% heading "whatsnext" %}}
44
60
45
61
As well as reading about each resource, you can learn about specific tasks that relate to them:
46
62
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/ )
48
64
* Run a stateful application either as a [ single instance] ( /docs/tasks/run-application/run-single-instance-stateful-application/ )
49
65
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.
51
77
52
78
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 ) .
55
81
56
- You can also visit [ Configuration] ( /docs/concepts/configuration/ ) to learn about Kubernetes'
57
- mechanisms for separating code from configuration.
0 commit comments