From beb0919676cb8208bac88954423d63c02ed9a5d8 Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Fri, 24 Jul 2020 20:06:03 +0900 Subject: [PATCH] Copy tasks/administer-cluster/extended-resource-node.md from en/ directory. --- .../extended-resource-node.md | 209 ++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 content/ja/docs/tasks/administer-cluster/extended-resource-node.md diff --git a/content/ja/docs/tasks/administer-cluster/extended-resource-node.md b/content/ja/docs/tasks/administer-cluster/extended-resource-node.md new file mode 100644 index 0000000000..07d8fea616 --- /dev/null +++ b/content/ja/docs/tasks/administer-cluster/extended-resource-node.md @@ -0,0 +1,209 @@ +--- +title: Advertise Extended Resources for a Node +content_type: task +--- + + + + +This page shows how to specify extended resources for a Node. +Extended resources allow cluster administrators to advertise node-level +resources that would otherwise be unknown to Kubernetes. + + + + +## {{% heading "prerequisites" %}} + + +{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}} + + + + + + +## Get the names of your Nodes + +```shell +kubectl get nodes +``` + +Choose one of your Nodes to use for this exercise. + +## Advertise a new extended resource on one of your Nodes + +To advertise a new extended resource on a Node, send an HTTP PATCH request to +the Kubernetes API server. For example, suppose one of your Nodes has four dongles +attached. Here's an example of a PATCH request that advertises four dongle resources +for your Node. + +```shell +PATCH /api/v1/nodes//status HTTP/1.1 +Accept: application/json +Content-Type: application/json-patch+json +Host: k8s-master:8080 + +[ + { + "op": "add", + "path": "/status/capacity/example.com~1dongle", + "value": "4" + } +] +``` + +Note that Kubernetes does not need to know what a dongle is or what a dongle is for. +The preceding PATCH request just tells Kubernetes that your Node has four things that +you call dongles. + +Start a proxy, so that you can easily send requests to the Kubernetes API server: + +```shell +kubectl proxy +``` + +In another command window, send the HTTP PATCH request. +Replace `` with the name of your Node: + +```shell +curl --header "Content-Type: application/json-patch+json" \ +--request PATCH \ +--data '[{"op": "add", "path": "/status/capacity/example.com~1dongle", "value": "4"}]' \ +http://localhost:8001/api/v1/nodes//status +``` + +{{< note >}} +In the preceding request, `~1` is the encoding for the character / in +the patch path. The operation path value in JSON-Patch is interpreted as a +JSON-Pointer. For more details, see +[IETF RFC 6901](https://tools.ietf.org/html/rfc6901), section 3. +{{< /note >}} + +The output shows that the Node has a capacity of 4 dongles: + +``` +"capacity": { + "cpu": "2", + "memory": "2049008Ki", + "example.com/dongle": "4", +``` + +Describe your Node: + +``` +kubectl describe node +``` + +Once again, the output shows the dongle resource: + +```yaml +Capacity: + cpu: 2 + memory: 2049008Ki + example.com/dongle: 4 +``` + +Now, application developers can create Pods that request a certain +number of dongles. See +[Assign Extended Resources to a Container](/docs/tasks/configure-pod-container/extended-resource/). + +## Discussion + +Extended resources are similar to memory and CPU resources. For example, +just as a Node has a certain amount of memory and CPU to be shared by all components +running on the Node, it can have a certain number of dongles to be shared +by all components running on the Node. And just as application developers +can create Pods that request a certain amount of memory and CPU, they can +create Pods that request a certain number of dongles. + +Extended resources are opaque to Kubernetes; Kubernetes does not +know anything about what they are. Kubernetes knows only that a Node +has a certain number of them. Extended resources must be advertised in integer +amounts. For example, a Node can advertise four dongles, but not 4.5 dongles. + +### Storage example + +Suppose a Node has 800 GiB of a special kind of disk storage. You could +create a name for the special storage, say example.com/special-storage. +Then you could advertise it in chunks of a certain size, say 100 GiB. In that case, +your Node would advertise that it has eight resources of type +example.com/special-storage. + +```yaml +Capacity: + ... + example.com/special-storage: 8 +``` + +If you want to allow arbitrary requests for special storage, you +could advertise special storage in chunks of size 1 byte. In that case, you would advertise +800Gi resources of type example.com/special-storage. + +```yaml +Capacity: + ... + example.com/special-storage: 800Gi +``` + +Then a Container could request any number of bytes of special storage, up to 800Gi. + +## Clean up + +Here is a PATCH request that removes the dongle advertisement from a Node. + +``` +PATCH /api/v1/nodes//status HTTP/1.1 +Accept: application/json +Content-Type: application/json-patch+json +Host: k8s-master:8080 + +[ + { + "op": "remove", + "path": "/status/capacity/example.com~1dongle", + } +] +``` + +Start a proxy, so that you can easily send requests to the Kubernetes API server: + +```shell +kubectl proxy +``` + +In another command window, send the HTTP PATCH request. +Replace `` with the name of your Node: + +```shell +curl --header "Content-Type: application/json-patch+json" \ +--request PATCH \ +--data '[{"op": "remove", "path": "/status/capacity/example.com~1dongle"}]' \ +http://localhost:8001/api/v1/nodes//status +``` + +Verify that the dongle advertisement has been removed: + +``` +kubectl describe node | grep dongle +``` + +(you should not see any output) + + + + +## {{% heading "whatsnext" %}} + + +### For application developers + +* [Assign Extended Resources to a Container](/docs/tasks/configure-pod-container/extended-resource/) + +### For cluster administrators + +* [Configure Minimum and Maximum Memory Constraints for a Namespace](/docs/tasks/administer-cluster/memory-constraint-namespace/) +* [Configure Minimum and Maximum CPU Constraints for a Namespace](/docs/tasks/administer-cluster/cpu-constraint-namespace/) + + +