From 6942f1d5e3f453e4eecf81ad4706cf616a1a238b Mon Sep 17 00:00:00 2001 From: Steve Coffman Date: Thu, 8 Feb 2018 06:49:24 -0500 Subject: [PATCH] Reduce the Delta between this and the Autoscaler AWS documentation --- addons/cluster-autoscaler/README.md | 8 +- addons/cluster-autoscaler/addon.yml | 4 + addons/cluster-autoscaler/v1.8.0.yaml | 217 ++++++++++++++++++++++++++ 3 files changed, 226 insertions(+), 3 deletions(-) create mode 100644 addons/cluster-autoscaler/v1.8.0.yaml diff --git a/addons/cluster-autoscaler/README.md b/addons/cluster-autoscaler/README.md index 74bf6f6563..0477526c5e 100644 --- a/addons/cluster-autoscaler/README.md +++ b/addons/cluster-autoscaler/README.md @@ -1,10 +1,12 @@ # Cluster Autoscaler Addon -Note that you likely want to change `AWS_REGION` and `GROUP_NAME`, and probably `MIN_NODES` and `MAX_NODES` +We strongly recommend using Cluster Autoscaler with the kubernetes version for which it was meant. Refer to the [Cluster Autoscaler documentation compatibility matrix]( https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/README.md#releases) + +Note that you likely want to change `AWS_REGION` and `GROUP_NAME`, and probably `MIN_NODES` and `MAX_NODES`. Here is an example of how you may wish to do so: ```bash CLOUD_PROVIDER=aws -IMAGE=gcr.io/google_containers/cluster-autoscaler:v0.6.0 +IMAGE=gcr.io/google_containers/cluster-autoscaler:v1.1.0 MIN_NODES=1 MAX_NODES=5 AWS_REGION=us-east-1 @@ -12,7 +14,7 @@ GROUP_NAME="nodes.k8s.example.com" SSL_CERT_PATH="/etc/ssl/certs/ca-certificates.crt" # (/etc/ssl/certs for gce) addon=cluster-autoscaler.yml -wget -O ${addon} https://raw.githubusercontent.com/kubernetes/kops/master/addons/cluster-autoscaler/v1.6.0.yaml +wget -O ${addon} https://raw.githubusercontent.com/kubernetes/kops/master/addons/cluster-autoscaler/v1.8.0.yaml sed -i -e "s@{{CLOUD_PROVIDER}}@${CLOUD_PROVIDER}@g" "${addon}" sed -i -e "s@{{IMAGE}}@${IMAGE}@g" "${addon}" diff --git a/addons/cluster-autoscaler/addon.yml b/addons/cluster-autoscaler/addon.yml index c04ca44bde..9145b45c4c 100644 --- a/addons/cluster-autoscaler/addon.yml +++ b/addons/cluster-autoscaler/addon.yml @@ -11,3 +11,7 @@ spec: selector: k8s-addon: cluster-autoscaler.addons.k8s.io manifest: v1.6.0.yaml + - version: 1.8.0 + selector: + k8s-addon: cluster-autoscaler.addons.k8s.io + manifest: v1.8.0.yaml diff --git a/addons/cluster-autoscaler/v1.8.0.yaml b/addons/cluster-autoscaler/v1.8.0.yaml new file mode 100644 index 0000000000..9a2ac4b542 --- /dev/null +++ b/addons/cluster-autoscaler/v1.8.0.yaml @@ -0,0 +1,217 @@ +--- +apiVersion: v1 +kind: ServiceAccount +metadata: + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + app: cluster-autoscaler + name: cluster-autoscaler + namespace: kube-system +--- +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRole +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + app: cluster-autoscaler +rules: +- apiGroups: + - "" + resources: + - events + - endpoints + verbs: + - create + - patch +- apiGroups: + - "" + resources: + - pods/eviction + verbs: + - create +- apiGroups: + - "" + resources: + - pods/status + verbs: + - update +- apiGroups: + - "" + resources: + - endpoints + resourceNames: + - cluster-autoscaler + verbs: + - get + - update +- apiGroups: + - "" + resources: + - nodes + verbs: + - watch + - list + - get + - update +- apiGroups: + - "" + resources: + - pods + - services + - replicationcontrollers + - persistentvolumeclaims + - persistentvolumes + verbs: + - watch + - list + - get +- apiGroups: + - extensions + resources: + - replicasets + - daemonsets + verbs: + - watch + - list + - get +- apiGroups: + - policy + resources: + - poddisruptionbudgets + verbs: + - watch + - list +- apiGroups: + - apps + resources: + - statefulsets + verbs: + - watch + - list + - get + +--- + +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: Role +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + app: cluster-autoscaler +rules: +- apiGroups: + - "" + resources: + - configmaps + verbs: + - create +- apiGroups: + - "" + resources: + - configmaps + resourceNames: + - cluster-autoscaler-status + verbs: + - delete + - get + - update + +--- + +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: ClusterRoleBinding +metadata: + name: cluster-autoscaler + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- + +apiVersion: rbac.authorization.k8s.io/v1beta1 +kind: RoleBinding +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + app: cluster-autoscaler +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: cluster-autoscaler +subjects: + - kind: ServiceAccount + name: cluster-autoscaler + namespace: kube-system + +--- + +apiVersion: extensions/v1beta1 +kind: Deployment +metadata: + name: cluster-autoscaler + namespace: kube-system + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + app: cluster-autoscaler +spec: + replicas: 1 + selector: + matchLabels: + app: cluster-autoscaler + template: + metadata: + labels: + k8s-addon: cluster-autoscaler.addons.k8s.io + app: cluster-autoscaler + annotations: + # For 1.6, we keep the old tolerations in case of a downgrade to 1.5 + scheduler.alpha.kubernetes.io/tolerations: '[{"key":"dedicated", "value":"master"}]' + spec: + tolerations: + - effect: NoSchedule + key: node-role.kubernetes.io/master + nodeSelector: + kubernetes.io/role: master + serviceAccountName: cluster-autoscaler + containers: + - name: cluster-autoscaler + image: {{IMAGE}} + resources: + limits: + cpu: 100m + memory: 300Mi + requests: + cpu: 100m + memory: 300Mi + command: + - ./cluster-autoscaler + - --v=4 + - --stderrthreshold=info + - --cloud-provider={{CLOUD_PROVIDER}} + - --skip-nodes-with-local-storage=false + - --nodes={{MIN_NODES}}:{{MAX_NODES}}:{{GROUP_NAME}} + env: + - name: AWS_REGION + value: {{AWS_REGION}} + volumeMounts: + - name: ssl-certs + mountPath: {{SSL_CERT_PATH}} + readOnly: true + volumes: + - name: ssl-certs + hostPath: + path: {{SSL_CERT_PATH}} + dnsPolicy: "Default"