diff --git a/clr-k8s-examples/1-core-metrics/aggregated-metrics-reader.yaml b/clr-k8s-examples/1-core-metrics/aggregated-metrics-reader.yaml new file mode 100644 index 0000000..cdf3415 --- /dev/null +++ b/clr-k8s-examples/1-core-metrics/aggregated-metrics-reader.yaml @@ -0,0 +1,12 @@ +kind: ClusterRole +apiVersion: rbac.authorization.k8s.io/v1 +metadata: + name: system:aggregated-metrics-reader + labels: + rbac.authorization.k8s.io/aggregate-to-view: "true" + rbac.authorization.k8s.io/aggregate-to-edit: "true" + rbac.authorization.k8s.io/aggregate-to-admin: "true" +rules: +- apiGroups: ["metrics.k8s.io"] + resources: ["pods"] + verbs: ["get", "list", "watch"] diff --git a/clr-k8s-examples/1-core-metrics/auth-delegator.yaml b/clr-k8s-examples/1-core-metrics/auth-delegator.yaml index 04826ae..e3442c5 100644 --- a/clr-k8s-examples/1-core-metrics/auth-delegator.yaml +++ b/clr-k8s-examples/1-core-metrics/auth-delegator.yaml @@ -1,3 +1,4 @@ +--- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: diff --git a/clr-k8s-examples/1-core-metrics/auth-reader.yaml b/clr-k8s-examples/1-core-metrics/auth-reader.yaml index 1ab6a6a..f0616e1 100644 --- a/clr-k8s-examples/1-core-metrics/auth-reader.yaml +++ b/clr-k8s-examples/1-core-metrics/auth-reader.yaml @@ -1,3 +1,4 @@ +--- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: RoleBinding metadata: diff --git a/clr-k8s-examples/1-core-metrics/metrics-apiservice.yaml b/clr-k8s-examples/1-core-metrics/metrics-apiservice.yaml index a8860fb..08b0530 100644 --- a/clr-k8s-examples/1-core-metrics/metrics-apiservice.yaml +++ b/clr-k8s-examples/1-core-metrics/metrics-apiservice.yaml @@ -1,3 +1,4 @@ +--- apiVersion: apiregistration.k8s.io/v1beta1 kind: APIService metadata: diff --git a/clr-k8s-examples/1-core-metrics/metrics-server-deployment.yaml b/clr-k8s-examples/1-core-metrics/metrics-server-deployment.yaml index 354dc17..2129614 100644 --- a/clr-k8s-examples/1-core-metrics/metrics-server-deployment.yaml +++ b/clr-k8s-examples/1-core-metrics/metrics-server-deployment.yaml @@ -1,3 +1,4 @@ +--- apiVersion: v1 kind: ServiceAccount metadata: @@ -22,10 +23,19 @@ spec: k8s-app: metrics-server spec: serviceAccountName: metrics-server + volumes: + # mount in tmp so we can safely use from-scratch images and/or read-only containers + - name: tmp-dir + emptyDir: {} containers: - name: metrics-server - image: gcr.io/google_containers/metrics-server-amd64:v0.2.0 + image: k8s.gcr.io/metrics-server-amd64:v0.3.1 imagePullPolicy: Always - command: - - /metrics-server - - --source=kubernetes.summary_api:https://kubernetes.default.svc?kubeletHttps=true&kubeletPort=10250&useServiceAccount=true&insecure=true + args: + - --logtostderr + - --kubelet-insecure-tls + - --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP + volumeMounts: + - name: tmp-dir + mountPath: /tmp + diff --git a/clr-k8s-examples/1-core-metrics/metrics-server-service.yaml b/clr-k8s-examples/1-core-metrics/metrics-server-service.yaml index 974628e..082b00c 100644 --- a/clr-k8s-examples/1-core-metrics/metrics-server-service.yaml +++ b/clr-k8s-examples/1-core-metrics/metrics-server-service.yaml @@ -1,3 +1,4 @@ +--- apiVersion: v1 kind: Service metadata: diff --git a/clr-k8s-examples/1-core-metrics/resource-reader.yaml b/clr-k8s-examples/1-core-metrics/resource-reader.yaml index 4173841..4f98772 100644 --- a/clr-k8s-examples/1-core-metrics/resource-reader.yaml +++ b/clr-k8s-examples/1-core-metrics/resource-reader.yaml @@ -1,3 +1,4 @@ +--- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: @@ -9,15 +10,6 @@ rules: - pods - nodes - nodes/stats - - namespaces - verbs: - - get - - list - - watch -- apiGroups: - - "extensions" - resources: - - deployments verbs: - get - list diff --git a/clr-k8s-examples/1-core-metrics/versions b/clr-k8s-examples/1-core-metrics/versions index 6a76d7a..e0c0da0 100644 --- a/clr-k8s-examples/1-core-metrics/versions +++ b/clr-k8s-examples/1-core-metrics/versions @@ -1 +1 @@ -f90c6705d2381ea2db1a6343da6c400bd2ef4cb2 +92d8412788e27ee669d38f21f20bad5342211884 diff --git a/clr-k8s-examples/tests/autoscale/load-gen.yaml b/clr-k8s-examples/tests/autoscale/load-gen.yaml new file mode 100644 index 0000000..335d62f --- /dev/null +++ b/clr-k8s-examples/tests/autoscale/load-gen.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: Pod +metadata: + name: load-generator +spec: + containers: + - command: ["/bin/sh", "-c"] + args: + - while true; do wget -q -O- http://php-apache-test; done; + image: busybox + imagePullPolicy: Always + name: load-generator diff --git a/clr-k8s-examples/tests/autoscale/php.yaml b/clr-k8s-examples/tests/autoscale/php.yaml new file mode 100644 index 0000000..33a8270 --- /dev/null +++ b/clr-k8s-examples/tests/autoscale/php.yaml @@ -0,0 +1,54 @@ +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + labels: + run: php-apache-test + name: php-apache-test +spec: + selector: + matchLabels: + run: php-apache-test + template: + metadata: + labels: + run: php-apache-test + spec: + containers: + - image: k8s.gcr.io/hpa-example + name: php-apache-test + ports: + - containerPort: 80 + protocol: TCP + resources: + requests: + cpu: 200m + restartPolicy: Always +--- +apiVersion: v1 +kind: Service +metadata: + name: php-apache-test +spec: + ports: + - port: 80 + protocol: TCP + targetPort: 80 + selector: + run: php-apache-test + sessionAffinity: None + type: ClusterIP +--- +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + name: php-apache-test +spec: + maxReplicas: 10 + minReplicas: 1 + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: php-apache-test + targetCPUUtilizationPercentage: 50 + diff --git a/clr-k8s-examples/tests/autoscale/test-autoscale.sh b/clr-k8s-examples/tests/autoscale/test-autoscale.sh index e0f8c77..33c6929 100755 --- a/clr-k8s-examples/tests/autoscale/test-autoscale.sh +++ b/clr-k8s-examples/tests/autoscale/test-autoscale.sh @@ -1,8 +1,5 @@ #!/bin/bash -kubectl run php-apache-test --image=k8s.gcr.io/hpa-example --requests=cpu=200m --expose --port=80 -kubectl autoscale deployment php-apache-test --cpu-percent=50 --min=1 --max=10 -kubectl get hpa - -#kubectl run --generator=run-pod/v1 -i --tty load-generator --image=busybox /bin/sh -# while true; do wget -q -O- http://php-apache-test.default.svc.cluster.local; done +SCRIPT_DIR="$(dirname "${BASH_SOURCE[0]}")" +kubectl apply -f $SCRIPT_DIR +watch kubectl describe hpa