openshift / cluster-autoscaler-operator Goto Github PK
View Code? Open in Web Editor NEWManage Kubernetes cluster-autoscaler deployments
License: Apache License 2.0
Manage Kubernetes cluster-autoscaler deployments
License: Apache License 2.0
There is an example to set the following option:
However, when setting this option to false
nothing happens. The deployment is not getting updated.
This is because the configuration logic is flawed:
But you want the autoscaler to run with --skip-nodes-with-local-storage=false
if you want to scale down nodes with pods using emptyDir.
Priority classes docs:
https://docs.openshift.com/container-platform/3.11/admin_guide/scheduling/priority_preemption.html#admin-guide-priority-preemption-priority-class
Example: https://github.com/openshift/cluster-monitoring-operator/search?q=priority&unscoped_q=priority
Notes: The pre-configured system priority classes (system-node-critical
and system-cluster-critical
) can only be assigned to pods in kube-system
or openshift-*
namespaces. Most likely, core operators and their pods should be assigned system-cluster-critical
. Please do not assign system-node-critical
(the highest priority) unless you are really sure about it.
$ oc get clusteroperator cluster-autoscaler -o yaml
apiVersion: config.openshift.io/v1
kind: ClusterOperator
metadata:
creationTimestamp: 2019-02-25T20:10:10Z
generation: 1
name: cluster-autoscaler
resourceVersion: "8185"
selfLink: /apis/config.openshift.io/v1/clusteroperators/cluster-autoscaler
uid: 5a92b388-3939-11e9-ac79-06529dbe11fc
spec: {}
cluster-autoscaler-operator
pod is Running
>>> 2019-02-25 14:10:04.45925468 -0600 CST m=+1078.985419586 (created) -> ContainerCreating
>>> 2019-02-25 14:10:06.070423667 -0600 CST m=+1080.596588583 ContainerCreating -> Running
****************************************************************
Pod openshift-machine-api/cluster-autoscaler-operator-6888c5b57b-fcjg7 started
****************************************************************
I0225 20:10:07.902042 1 main.go:14] Go Version: go1.10.3
I0225 20:10:08.099820 1 main.go:15] Go OS/Arch: linux/amd64
I0225 20:10:08.099844 1 main.go:16] Version: cluster-autoscaler-operator v0.0.0-60-gda772db-dirty
W0225 20:10:10.300302 1 machineautoscaler_controller.go:107] Removing support for unregistered target type: cluster.k8s.io/v1alpha1, Kind=MachineDeployment
I0225 20:10:10.400064 1 main.go:30] Starting cluster-autoscaler-operator
I0225 20:10:10.400219 1 leaderelection.go:185] attempting to acquire leader lease openshift-machine-api/cluster-autoscaler-operator-leader...
I0225 20:10:10.600183 1 leaderelection.go:194] successfully acquired lease openshift-machine-api/cluster-autoscaler-operator-leader
E0225 20:10:10.999872 1 reflector.go:205] github.com/openshift/cluster-autoscaler-operator/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go:126: Failed to list *v1.Deployment: an error on the server ("apiserver is shutting down.") has prevented the request from succeeding (get deployments.apps)
E0225 20:10:10.999940 1 reflector.go:205] github.com/openshift/cluster-autoscaler-operator/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go:126: Failed to list *v1alpha1.MachineAutoscaler: an error on the server ("apiserver is shutting down.") has prevented the request from succeeding (get machineautoscalers.autoscaling.openshift.io)
E0225 20:10:11.000058 1 reflector.go:205] github.com/openshift/cluster-autoscaler-operator/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go:126: Failed to list *v1alpha1.ClusterAutoscaler: an error on the server ("apiserver is shutting down.") has prevented the request from succeeding (get clusterautoscalers.autoscaling.openshift.io)
W0225 20:10:11.015258 1 reflector.go:341] github.com/openshift/cluster-autoscaler-operator/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go:126: watch of *unstructured.Unstructured ended with: very short watch: github.com/openshift/cluster-autoscaler-operator/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go:126: Unexpected watch close - watch lasted less than a second and no items received
W0225 20:10:11.015372 1 reflector.go:341] github.com/openshift/cluster-autoscaler-operator/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go:126: watch of *unstructured.Unstructured ended with: very short watch: github.com/openshift/cluster-autoscaler-operator/vendor/sigs.k8s.io/controller-runtime/pkg/cache/internal/informers_map.go:126: Unexpected watch close - watch lasted less than a second and no items received
The situation never resolves (at least not within 30m) and results in failed installation.
The Prometheus Rules for this operator are being applied in the hosted use case. The exclude annotation needs to be added. This leads to an invalid alert.
https://github.com/openshift/cluster-autoscaler-operator/blob/master/install/09_alertrules.yaml
annotations:
exclude.release.openshift.io/internal-openshift-hosted: "true"
There are several alerts that can be generated by the cluster autoscaler, we should create a document to highlight them and give guidance on user actions where possible. This PR from machine-api-operator gives an example of how we can start crafting this document and where to place it.
Default install, see the following status:
apiVersion: config.openshift.io/v1
kind: ClusterOperator
metadata:
creationTimestamp: '2019-01-07T19:24:54Z'
generation: 1
name: cluster-autoscaler-operator
resourceVersion: '42230'
selfLink: /apis/config.openshift.io/v1/clusteroperators/cluster-autoscaler-operator
uid: e95572fd-12b1-11e9-8f4e-0243bc135e96
spec: {}
status:
conditions:
- lastTransitionTime: '2019-01-07T19:53:55Z'
status: 'True'
type: Available
- lastTransitionTime: '2019-01-07T19:53:55Z'
status: 'False'
type: Progressing
- lastTransitionTime: '2019-01-07T19:53:55Z'
message: machine-api-operator not ready
reason: MissingDependency
status: 'True'
type: Failing
extension: null
version: v0.0.0-12-ge17a761-dirty
The types.go for resource limits should match vanilla kubernetes type definition for resource limits.
// ResourceList is a set of (resource name, quantity) pairs.
type ResourceList map[ResourceName]resource.Quantity
We can express a range for particular resources by just having a min/max similar to LimitRange
Max ResourceList `json:"max,omitempty" protobuf:"bytes,2,rep,name=max,casttype=ResourceList,castkey=ResourceName"`
// Min usage constraints on this kind by resource name.
// +optional
Min ResourceList `json:"min,omitempty" protobuf:"bytes,3,rep,name=min,casttype=ResourceList,castkey=ResourceName"`
The following branches are being fast-forwarded from the current development branch (master) as placeholders for future releases. No merging is allowed into these release branches until they are unfrozen for production release.
release-4.10
release-4.9
Contact the Test Platform or Automated Release teams for more information.
current operator is allowing deployment to worker nodes.
this appears to cause problems on scale down.
Reading in the documentation I saw that the cluster-autoscaler works only in clusters where the machine API is operational.
Does it mean that it's not possible to use it on user-provisioned infrastructure?
Thanks for the help
The following branches are being fast-forwarded from the current development branch (master) as placeholders for future releases. No merging is allowed into these release branches until they are unfrozen for production release.
release-4.16
release-4.17
For more information, see the branching documentation.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.