Add 'kubectl set limit'
Add a way to set resource limits/requests on running pods Ref: https://github.com/kubernetes/kubernetes/issues/21648 I squashed the commits to make rebasing easier Change log: - fixed a typo that caused the command to be run with kubectl set set instead of the correct kubectl set limit - added a ResourcesWithPodTemplates to pkg/kubectl/cmd/util/factory.go instead of hardcoding these resources move there description all in one place - Fixing some of the flow control in kubectl set limit - update the help info - changed the name of ResourcesWithPodTemplates to ResourcesWithPodSpecs to more accuratly describe what it is doing and changed the variable names to lower case to conform to go's variable naming convention - changing the name of the command from 'set limit' to 'set resources' - Adding the new file pkg/kubectl/cmd/set/set_resources.go - changes to the test cases to reflect the change from 'kubectl set limit' to 'kubectl set resources' - comment removed - adding the man page to the git repository attempting to fix Jenkins tests - adding the user guide - fixed a few typos - typo in hack/cmd-test.sh - implamenting suggestions for command help text - adding the dry-run flag - removing the "remove" option in favor of zeroing out request/limits in order to remove them - changed limits/requests to requests/limit - changing ResourcesWithPodSpec - updated generated docs and removed whitespace - change priint on success message from "resource limits/requests updated" to "resource requirements updated" - minor rebasing issues - 'hack/test-cmd.sh' now passes - cmdutil.PrintSuccess added another argument - fixing mungedocs failure - removed whitespace from hack/make-rules/test-cmd.sh and an erroneous entry from pkg/cloudprovider/providers/openstack/MAINTAINERS.md - fixed typo in Short: field of the cobra command - rebased - Creating a new factory in the ResourcesWithPodSpecs() so that the testing will pass - changing ResourcesWithPodSpecs, it doesn't need to be a method of factory
This commit is contained in:
@@ -2115,6 +2115,37 @@ __EOF__
|
||||
# Clean up
|
||||
kubectl delete rc frontend "${kube_flags[@]}"
|
||||
|
||||
## Set resource limits/request of a deployment
|
||||
# Pre-condition: no deployment exists
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{$id_field}}:{{end}}" ''
|
||||
# Create a deployment
|
||||
kubectl create -f hack/testdata/deployment-multicontainer.yaml "${kube_flags[@]}"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{$id_field}}:{{end}}" 'nginx-deployment:'
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{$deployment_image_field}}:{{end}}" "${IMAGE_DEPLOYMENT_R1}:"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{$deployment_second_image_field}}:{{end}}" "${IMAGE_PERL}:"
|
||||
# Set the deployment's cpu limits
|
||||
kubectl set resources deployment nginx-deployment --limits=cpu=100m "${kube_flags[@]}"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 0).resources.limits.cpu}}:{{end}}" "100m:"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 1).resources.limits.cpu}}:{{end}}" "100m:"
|
||||
# Set a non-existing container should fail
|
||||
! kubectl set resources deployment nginx-deployment -c=redis --limits=cpu=100m
|
||||
# Set the limit of a specific container in deployment
|
||||
kubectl set resources deployment nginx-deployment -c=nginx --limits=cpu=200m "${kube_flags[@]}"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 0).resources.limits.cpu}}:{{end}}" "200m:"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 1).resources.limits.cpu}}:{{end}}" "100m:"
|
||||
# Set limits/requests of a deployment specified by a file
|
||||
kubectl set resources -f hack/testdata/deployment-multicontainer.yaml -c=perl --limits=cpu=300m --requests=cpu=300m "${kube_flags[@]}"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 0).resources.limits.cpu}}:{{end}}" "200m:"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 1).resources.limits.cpu}}:{{end}}" "300m:"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 1).resources.requests.cpu}}:{{end}}" "300m:"
|
||||
# Set limits on a local file without talking to the server
|
||||
kubectl set resources deployment -f hack/testdata/deployment-multicontainer.yaml -c=perl --limits=cpu=300m --requests=cpu=300m --dry-run -o yaml "${kube_flags[@]}"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 0).resources.limits.cpu}}:{{end}}" "200m:"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 1).resources.limits.cpu}}:{{end}}" "300m:"
|
||||
kube::test::get_object_assert deployment "{{range.items}}{{(index .spec.template.spec.containers 1).resources.requests.cpu}}:{{end}}" "300m:"
|
||||
# Clean up
|
||||
kubectl delete deployment nginx-deployment "${kube_flags[@]}"
|
||||
|
||||
|
||||
######################
|
||||
# Deployments #
|
||||
|
Reference in New Issue
Block a user