Skip to content

Commit

Permalink
ch08:
Browse files Browse the repository at this point in the history
	new file:   07-05_cleanup.sh
	new file:   08-01_creating_a_ReplicaSet.sh
	new file:   08-01_kuard-rs.yaml
	new file:   08-02_inspecting_a_ReplicaSet.sh
	new file:   08-03_kuard-rs_scale_replicas_3.yaml
	new file:   08-03_scaling_ReplicaSet.sh
	new file:   08-04_autoscaling_a_replicaset_install_heapster.sh
	new file:   08-05_autoscaling_a_replicaset.sh
	new file:   08-05_autoscaling_a_replicaset_request.yaml
	new file:   heapster/deploy/kube-config/influxdb/grafana.yaml
	new file:   heapster/deploy/kube-config/influxdb/heapster.yaml
	new file:   heapster/deploy/kube-config/influxdb/influxdb.yaml
	new file:   heapster/deploy/kube-config/rbac/heapster-rbac.yaml
	new file:   metrics-server/deploy/auth-delegator.yaml
	new file:   metrics-server/deploy/auth-reader.yaml
	new file:   metrics-server/deploy/docker/Dockerfile
	new file:   metrics-server/deploy/metrics-apiservice.yaml
	new file:   metrics-server/deploy/metrics-server-deployment.yaml
	new file:   metrics-server/deploy/metrics-server-service.yaml
	new file:   metrics-server/deploy/resource-reader.yaml
  • Loading branch information
ttarczynski committed Feb 16, 2018
1 parent eada934 commit 2c61cd2
Show file tree
Hide file tree
Showing 20 changed files with 463 additions and 0 deletions.
6 changes: 6 additions & 0 deletions manifests/07-05_cleanup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/bin/bash

set -x

# Delete everything from this chapter
kubectl delete services,deployments -l app
9 changes: 9 additions & 0 deletions manifests/08-01_creating_a_ReplicaSet.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

set -x

# create ReplicaSet
kubectl apply -f 08-01_kuard-rs.yaml

# list pods, ReplicaSets
kubectl get pods,rs --show-labels -o wide
15 changes: 15 additions & 0 deletions manifests/08-01_kuard-rs.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: kuard
spec:
replicas: 1
template:
metadata:
labels:
app: kuard
version: "2"
spec:
containers:
- name: kuard
image: "gcr.io/kuar-demo/kuard-amd64:2"
18 changes: 18 additions & 0 deletions manifests/08-02_inspecting_a_ReplicaSet.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#!/bin/bash

set -x

# describe
kubectl describe rs kuard

read -p "Continue?"

# Find a ReplicaSet from a Pod
KUARD_POD=$(kubectl get pods -l app=kuard -o jsonpath='{.items[0].metadata.name}')
kubectl get pods $KUARD_POD -o yaml

read -p "Continue?"

# Find a Set of Pods for a ReplicaSet

kubectl get pods -l app=kuard,version=2 --show-labels
15 changes: 15 additions & 0 deletions manifests/08-03_kuard-rs_scale_replicas_3.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: kuard
spec:
replicas: 3
template:
metadata:
labels:
app: kuard
version: "2"
spec:
containers:
- name: kuard
image: "gcr.io/kuar-demo/kuard-amd64:2"
24 changes: 24 additions & 0 deletions manifests/08-03_scaling_ReplicaSet.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/bash

set -x

# Imperative Scaling
kubectl scale rs/kuard --replicas=4
kubectl get rs -o wide
read -p "Continue?"

kubectl describe rs kuard
read -p "Continue?"

kubectl get pods -l app=kuard,version=2 --show-labels -o wide
read -p "Continue?"

# Declarative Scale
kubectl apply -f 08-03_kuard-rs_scale_replicas_3.yaml
kubectl get rs -o wide
read -p "Continue?"

kubectl describe rs kuard
read -p "Continue?"

kubectl get pods -l app=kuard,version=2 --show-labels -o wide
22 changes: 22 additions & 0 deletions manifests/08-04_autoscaling_a_replicaset_install_heapster.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/bin/bash

set -x

# install heapster (v1.5.1) as detailed in docs:
# https://github.com/kubernetes/heapster/blob/v1.5.1/docs/influxdb.md
kubectl create -f heapster/deploy/kube-config/influxdb/
kubectl create -f heapster/deploy/kube-config/rbac/heapster-rbac.yaml

# verify installation

sleep 10
kubectl get pods --namespace=kube-system

sleep 30
kubectl top nodes

# install metrics-server (v0.2.1) as detailed in docs:
# https://github.com/kubernetes-incubator/metrics-server/tree/v0.2.1
# https://kubernetes.io/docs/tasks/debug-application-cluster/core-metrics-pipeline/

kubectl create -f metrics-server/deploy/
40 changes: 40 additions & 0 deletions manifests/08-05_autoscaling_a_replicaset.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash

set -x

# set requested resources
kubectl apply -f 08-05_autoscaling_a_replicaset_request.yaml

# anable hpa
kubectl autoscale rs kuard --min=1 --max=5 --cpu-percent=80

# Observe HPA:
kubectl get hpa -w &
sleep 120

read -p "Continue?"

kubectl describe hpa kuard

read -p "Continue?"

# observe autoscaling:

kubectl proxy &
echo "Open grafana via: http://localhost:8001/api/v1/proxy/namespaces/kube-system/services/monitoring-grafana:80/?orgId=1"

read -p "Continue?"

## generate load
KUARD_POD=$(kubectl get pods -l app=kuard -o jsonpath='{.items[0].metadata.name}')
kubectl port-forward $KUARD_POD 48858:8080 &
sleep 10
echo "Open in browser: http://localhost:48858/-/keygen"
echo "And generate some CPU load"

read -p "Continue?"

kubectl describe hpa kuard

jobs
read -p "Exit?"
19 changes: 19 additions & 0 deletions manifests/08-05_autoscaling_a_replicaset_request.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: extensions/v1beta1
kind: ReplicaSet
metadata:
name: kuard
spec:
replicas: 3
template:
metadata:
labels:
app: kuard
version: "2"
spec:
containers:
- name: kuard
image: "gcr.io/kuar-demo/kuard-amd64:2"
resources:
requests:
cpu: "500m"
memory: "128Mi"
72 changes: 72 additions & 0 deletions manifests/heapster/deploy/kube-config/influxdb/grafana.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: monitoring-grafana
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
task: monitoring
k8s-app: grafana
spec:
containers:
- name: grafana
image: gcr.io/google_containers/heapster-grafana-amd64:v4.4.3
ports:
- containerPort: 3000
protocol: TCP
volumeMounts:
- mountPath: /etc/ssl/certs
name: ca-certificates
readOnly: true
- mountPath: /var
name: grafana-storage
env:
- name: INFLUXDB_HOST
value: monitoring-influxdb
- name: GF_SERVER_HTTP_PORT
value: "3000"
# The following env variables are required to make Grafana accessible via
# the kubernetes api-server proxy. On production clusters, we recommend
# removing these env variables, setup auth for grafana, and expose the grafana
# service using a LoadBalancer or a public IP.
- name: GF_AUTH_BASIC_ENABLED
value: "false"
- name: GF_AUTH_ANONYMOUS_ENABLED
value: "true"
- name: GF_AUTH_ANONYMOUS_ORG_ROLE
value: Admin
- name: GF_SERVER_ROOT_URL
# If you're only using the API Server proxy, set this value instead:
# value: /api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
value: /
volumes:
- name: ca-certificates
hostPath:
path: /etc/ssl/certs
- name: grafana-storage
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
# For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)
# If you are NOT using this as an addon, you should comment out this line.
kubernetes.io/cluster-service: 'true'
kubernetes.io/name: monitoring-grafana
name: monitoring-grafana
namespace: kube-system
spec:
# In a production setup, we recommend accessing Grafana through an external Loadbalancer
# or through a public IP.
# type: LoadBalancer
# You could also use NodePort to expose the service at a randomly-generated port
type: NodePort
ports:
- port: 80
targetPort: 3000
selector:
k8s-app: grafana
46 changes: 46 additions & 0 deletions manifests/heapster/deploy/kube-config/influxdb/heapster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: heapster
namespace: kube-system
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: heapster
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
task: monitoring
k8s-app: heapster
spec:
serviceAccountName: heapster
containers:
- name: heapster
image: gcr.io/google_containers/heapster-amd64:v1.5.1
imagePullPolicy: IfNotPresent
command:
- /heapster
- --source=kubernetes:https://kubernetes.default
- --sink=influxdb:http://monitoring-influxdb.kube-system.svc:8086
---
apiVersion: v1
kind: Service
metadata:
labels:
task: monitoring
# For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)
# If you are NOT using this as an addon, you should comment out this line.
kubernetes.io/cluster-service: 'true'
kubernetes.io/name: Heapster
name: heapster
namespace: kube-system
spec:
ports:
- port: 80
targetPort: 8082
selector:
k8s-app: heapster
40 changes: 40 additions & 0 deletions manifests/heapster/deploy/kube-config/influxdb/influxdb.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: monitoring-influxdb
namespace: kube-system
spec:
replicas: 1
template:
metadata:
labels:
task: monitoring
k8s-app: influxdb
spec:
containers:
- name: influxdb
image: gcr.io/google_containers/heapster-influxdb-amd64:v1.3.3
volumeMounts:
- mountPath: /data
name: influxdb-storage
volumes:
- name: influxdb-storage
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
labels:
task: monitoring
# For use as a Cluster add-on (https://github.com/kubernetes/kubernetes/tree/master/cluster/addons)
# If you are NOT using this as an addon, you should comment out this line.
kubernetes.io/cluster-service: 'true'
kubernetes.io/name: monitoring-influxdb
name: monitoring-influxdb
namespace: kube-system
spec:
ports:
- port: 8086
targetPort: 8086
selector:
k8s-app: influxdb
12 changes: 12 additions & 0 deletions manifests/heapster/deploy/kube-config/rbac/heapster-rbac.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: heapster
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:heapster
subjects:
- kind: ServiceAccount
name: heapster
namespace: kube-system
12 changes: 12 additions & 0 deletions manifests/metrics-server/deploy/auth-delegator.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: metrics-server:system:auth-delegator
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: system:auth-delegator
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system
13 changes: 13 additions & 0 deletions manifests/metrics-server/deploy/auth-reader.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
name: metrics-server-auth-reader
namespace: kube-system
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: extension-apiserver-authentication-reader
subjects:
- kind: ServiceAccount
name: metrics-server
namespace: kube-system
6 changes: 6 additions & 0 deletions manifests/metrics-server/deploy/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
FROM BASEIMAGE

COPY metrics-server /
COPY ca-certificates.crt /etc/ssl/certs/

ENTRYPOINT ["/metrics-server"]
13 changes: 13 additions & 0 deletions manifests/metrics-server/deploy/metrics-apiservice.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
apiVersion: apiregistration.k8s.io/v1beta1
kind: APIService
metadata:
name: v1beta1.metrics.k8s.io
spec:
service:
name: metrics-server
namespace: kube-system
group: metrics.k8s.io
version: v1beta1
insecureSkipTLSVerify: true
groupPriorityMinimum: 100
versionPriority: 100
Loading

0 comments on commit 2c61cd2

Please sign in to comment.