Ported OIR tasks to use Extended Resources.

This commit is contained in:
Connor Doyle
2017-12-01 09:46:04 -08:00
parent a99a42fcd3
commit c2a554ff82
6 changed files with 67 additions and 65 deletions
@@ -1,11 +1,11 @@
apiVersion: v1
kind: Pod
metadata:
name: oir-demo
name: extended-resource-demo-2
spec:
containers:
- name: oir-demo-ctr
- name: extended-resource-demo-2-ctr
image: nginx
resources:
requests:
pod.alpha.kubernetes.io/opaque-int-resource-dongle: 3
example.com/dongle: 2
@@ -0,0 +1,11 @@
apiVersion: v1
kind: Pod
metadata:
name: extended-resource-demo
spec:
containers:
- name: extended-resource-demo-ctr
image: nginx
resources:
requests:
example.com/dongle: 3
@@ -1,12 +1,12 @@
---
title: Assign Opaque Integer Resources to a Container
title: Assign Extended Resources to a Container
---
{% capture overview %}
This page shows how to assign opaque integer resources to a Container.
This page shows how to assign extended resources to a Container.
{% include feature-state-deprecated.md %}
{% include feature-state-stable.md %}
{% endcapture %}
@@ -16,7 +16,7 @@ This page shows how to assign opaque integer resources to a Container.
{% include task-tutorial-prereqs.md %}
Before you do this exercise, do the exercise in
[Advertise Opaque Integer Resources for a Node](/docs/tasks/administer-cluster/opaque-integer-resource-node/).
[Advertise Extended Resources for a Node](/docs/tasks/administer-cluster/extended-resource-node/).
That will configure one of your Nodes to advertise a dongle resource.
{% endcapture %}
@@ -24,40 +24,43 @@ That will configure one of your Nodes to advertise a dongle resource.
{% capture steps %}
## Assign an opaque integer resource to a Pod
## Assign an extended resource to a Pod
To request an opaque integer resource, include the `resources:requests` field in your
Container manifest. Opaque integer resources have the prefix `pod.alpha.kubernetes.io/opaque-int-resource-`.
To request an extended resource, include the `resources:requests` field in your
Container manifest. Extended resources are fully qualified with any domain outside of
`*.kubernetes.io/`. Valid extended resource names have the form `example.com/foo` where
`example.com` is replaced with your organization's domain and `foo` is a
descriptive resource name.
Here is the configuration file for a Pod that has one Container:
{% include code.html language="yaml" file="oir-pod.yaml" ghlink="/docs/tasks/configure-pod-container/oir-pod.yaml" %}
{% include code.html language="yaml" file="extended-resource-pod.yaml" ghlink="/docs/tasks/configure-pod-container/extended-resource-pod.yaml" %}
In the configuration file, you can see that the Container requests 3 dongles.
Create a Pod:
```shell
kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/oir-pod.yaml
kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/extended-resource-pod.yaml
```
Verify that the Pod is running:
```shell
kubectl get pod oir-demo
kubectl get pod extended-resource-demo
```
Describe the Pod:
```shell
kubectl describe pod oir-demo
kubectl describe pod extended-resource-demo
```
The output shows dongle requests:
```yaml
Requests:
pod.alpha.kubernetes.io/opaque-int-resource-dongle: 3
example.com/dongle: 3
```
## Attempt to create a second Pod
@@ -65,7 +68,7 @@ Requests:
Here is the configuration file for a Pod that has one Container. The Container requests
two dongles.
{% include code.html language="yaml" file="oir-pod-2.yaml" ghlink="/docs/tasks/configure-pod-container/oir-pod-2.yaml" %}
{% include code.html language="yaml" file="extended-resource-pod-2.yaml" ghlink="/docs/tasks/configure-pod-container/extended-resource-pod-2.yaml" %}
Kubernetes will not be able to satisfy the request for two dongles, because the first Pod
used three of the four available dongles.
@@ -73,13 +76,13 @@ used three of the four available dongles.
Attempt to create a Pod:
```shell
kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/oir-pod-2.yaml
kubectl create -f https://k8s.io/docs/tasks/configure-pod-container/extended-resource-pod-2.yaml
```
Describe the Pod
```shell
kubectl describe pod oir-demo-2
kubectl describe pod extended-resource-demo-2
```
The output shows that the Pod cannot be scheduled, because there is no Node that has
@@ -93,22 +96,22 @@ Conditions:
...
Events:
...
... Warning FailedScheduling pod (oir-demo-2) failed to fit in any node
fit failure summary on nodes : Insufficient pod.alpha.kubernetes.io/opaque-int-resource-dongle (1)
... Warning FailedScheduling pod (extended-resource-demo-2) failed to fit in any node
fit failure summary on nodes : Insufficient example.com/dongle (1)
```
View the Pod status:
```shell
kubectl get pod oir-demo-2
kubectl get pod extended-resource-demo-2
```
The output shows that the Pod was created, but not scheduled to run on a Node.
It has a status of Pending:
```yaml
NAME READY STATUS RESTARTS AGE
oir-demo-2 0/1 Pending 0 6m
NAME READY STATUS RESTARTS AGE
extended-resource-demo-2 0/1 Pending 0 6m
```
## Clean up
@@ -116,7 +119,7 @@ oir-demo-2 0/1 Pending 0 6m
Delete the Pod that you created for this exercise:
```shell
kubectl delete pod oir-demo-2
kubectl delete pod extended-resource-demo-2
```
{% endcapture %}
@@ -130,7 +133,7 @@ kubectl delete pod oir-demo-2
### For cluster administrators
* [Advertise Opaque Integer Resources for a Node](/docs/tasks/administer-cluster/opaque-integer-resource-node/)
* [Advertise Extended Resources for a Node](/docs/tasks/administer-cluster/extended-resource-node/)
{% endcapture %}
@@ -1,11 +0,0 @@
apiVersion: v1
kind: Pod
metadata:
name: oir-demo-2
spec:
containers:
- name: oir-demo-2-ctr
image: nginx
resources:
requests:
pod.alpha.kubernetes.io/opaque-int-resource-dongle: 2