You can download a ZIP file of all the demos for easy local use; otherwise you will have to download all the files individually and recreate the directory structure. The ZIP file link should always point to the server copy, while other links in this document are relative so they should work if browsing this index locally.
(Note, these are not exactly the same as the files used in the KubeCon 2017 demo -- I cleaned them up a bit for greater clarity.)
Each of these demos has two directories: "broken" which you can use to deploy the initial broken configuration, and "fixed" which when applied should result in a working deployment. The install is as easy as:
kubectl apply -f [demo directory, e.g. crashloopbackoff]/broken
You can then investigate the failure with various kubectl commands. To fix it:
kubectl apply -f [demo directory]/fixed
To clean up:
kubectl delete -f [demo directory]/fixed -f [demo directory]/broken
You can also (and I encourage you to) try to fix the broken components yourself, then compare to my fixed versions.
Prerequisites: a working Kubernetes cluster in a relatively untouched state (with RBAC enabled if you want to try the RBAC demo) that you aren't doing anything important or sensitive on (some of these demos spawn busybox containers, display data gathered from the API server, etc. -- don't do these demos in production!)
Things that may interfere with the demos functioning as desired:
Demos:
kubectl port-forward $(kubectl get po -o jsonpath={.items..metadata.name} -l app=discoveryfailure,component=frontend) 4040
After starting the port forward, browse to http://localhost:4040/ and you should see the Weave Scope UI.
kubectl port-forward $(kubectl get po -o jsonpath={.items..metadata.name} -l app=rbacissue,component=frontend) 4040
Note that in the "broken" status you will see items gathered from the hosts directly, but not things that require access to the API server like pod and service listings (until you fix the RBAC issue). Once you fix RBAC, the agent pods may still be in a backed-off status (they will not restart since you did not change the DaemonSet itself); either wait, or simply delete them and let them be recreated.
Happy debugging, and if you have questions about these demos, feel free to contact me on Kubernetes Slack (@kensey), Twitter (@caffeinepresent), or through e-mail (kc2017@orion-com.com).
Joe Thompson