Skip to content

Instantly share code, notes, and snippets.

@alexandervantrijffel
Last active June 25, 2018 11:56
Show Gist options
  • Save alexandervantrijffel/ed70e36eeabe65254fcd79572a430cab to your computer and use it in GitHub Desktop.
Save alexandervantrijffel/ed70e36eeabe65254fcd79572a430cab to your computer and use it in GitHub Desktop.
Kubernetes
Leermomenten Kubernetes + Azure:
Webapp in docker op poort 80 hosten en dan in kube onderbrengen op azure werkt niet!
Wel als je een hogere poort gebruikt, 5000 bv
Backend port van de cluster ip poort wordt door azure niet goed ingevuld bij de load balancer als je een nieuwe service aanmaakt. Je moet dan handmatig de backend poort invullen.
kubectl get nodes -o yaml
# open a shell to a container
kubectl exec -it <PODNAME> -- /bin/sh
# change namespace
kubectl config set-context $(kubectl config current-context) --namespace=<insert-namespace-name-here>
# assign label
kubectl label nodes <node-name> <label-key>=<label-value>
# delete label
kubectl label nodes 10.xx.xx.xx key1-
# assign pods to nodes with nodeSelector:
https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
# kubernetes definitions- alle tags met uitleg
https://kubernetes.io/docs/api-reference/extensions/v1beta1/definitions/
# force delete a pod
kubectl delete pods <pod> --grace-period=0 --force
# recreate a dysfunctioning daemonset
kubectl get -o yaml ds NAME > ds.yml
kubectl delete --cascade=false ds NAME
kubectl apply -f ds.yml
# view CPU requests, CPU limits, memory requests and memory limits of deployments on nodes:
kubectl describe nodes
kubectl get replicasets
kubectl describe replicasets
kubectl cluster-info
# To delete a pod completely, the underlying deployment object must be deleted
kubectl delete deployment redis
# run dashboard
kubectl proxy # run on desktop
# open http://localhost:8001/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard/
# all contexts
kubectl config get-contexts
# view kubelet logs
sudo journalctl -r -u kubelet
# more debugging tips
# https://github.com/kubernetes/kubernetes/wiki/Debugging-FAQ
# auto completion
source <(kubectl completion bash)
source <(kubectl completion zsh)
# on-premise VM solutions: cloudstack+coreos or vagrant+coreos
# https://kubernetes.io/docs/setup/pick-right-solution/
# https://github.com/Langhalsdino/Kubernetes-GPU-Guide (used this one for virtual box cluster)
# https://medium.com/@SystemMining/setup-kubenetes-cluster-on-ubuntu-16-04-with-kubeadm-336f4061d929
# http://docs.catalystcloud.io/tutorials/kubernetes-getting-started-kubeadm-guide-on-the-catalyst-cloud.html
# install kubernetes on raspberry pi
# https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/
# cheat sheet
# https://kubernetes.io/docs/user-guide/kubectl-cheatsheet/
### MINIKUBE ###
# always start with
minikube start
# credentials for logging into the VM, user: docker, password: tcuser
# get public url of service
minikube service hello-minikube --url
# ssh into minikube VM
minikube ssh
# or
ssh -i ~/.minikube/machines/minikube/id_rsa docker@$(minikube ip)
# select minikube context
kubectl config use-context minikube
# In https://github.com/alexandervantrijffel/kubernetes-tools
# install kubernetes with kubeadm
# Install the master node by running this script:
# https://github.com/Langhalsdino/Kubernetes-GPU-Guide/blob/master/scripts/init-master.sh
# fork: https://github.com/alexandervantrijffel/Kubernetes-GPU-Guide/blob/master/scripts/init-master.sh
sudo ./init-master.sh <IP-of-master>
mkdir -pv ~/.kube/
cp ~/admin.conf ~/.kube/config
kubectl apply -f https://git.io/weave-kube-1.6
# check everything is working with
kubectl get pods --all-namespaces
# install worker node with this script:
# https://github.com/alexandervantrijffel/Kubernetes-GPU-Guide/blob/master/scripts/init-worker.sh
sudo ./init-worker.sh <Token-of-Master> <IP-of-master>:<Port>
# install a docker private registry in your kubernetes cluster
https://github.com/ContainerSolutions/registry-tooling
./reg-tool.sh install-k8s-reg
# registry addon:
https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/registry
# connect to private registry
https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
openssl req -config in.req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -x509 -days 265 -out certs/ca.crt
kubectl create secret generic registry-cert --from-file=./certs/ca.crt
kubectl create --namespace=kube-system secret generic registry-cert --from-file=./certs/ca.crt
kubectl create --namespace=kube-system secret generic registry-key --from-file=./certs/domain.key
run https://github.com/ContainerSolutions/registry-tooling/blob/master/images/copy_certs/copy_certs.sh on all master and worker nodes (replace /hostfile with /etc/hosts)
run reg-tool.sh install-k8s-reg # (with steps for create-cert and copy-cert commented out)
# install certificate of docker registry with:
sudo ./reg-tool.sh install-cert --add-host 192.168.1.10
# install registry deployment and service
kubectl apply -f registry-tooling/k8s/reg_controller.yaml --record
kubectl apply -f registry-tooling/k8s/reg_service.yaml --record
# install traefik ingress controller for load balancing HTTP requests
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik-rbac.yaml
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/traefik.yaml
# checks: is the traefik-ingress-controller running
kubectl --namespace=kube-system get pods
# and it be accessed on port 80?
curl <public ip of master node>
# describe the traefik daemonset
kubectl describe ds traefik-ingress-controller --namespace=kube-system
# web app with ingress routing rules example
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/master/examples/k8s/ui.yaml
### MEMORY USAGE KUBERNETES ###
Bare ubuntu 16.04 server: 197MB in use
Ubuntu 16.04 server with kubernetes masternode: 656MB in use (459MB for kubernetes+docker)
Ubuntu 16.04 server with kubernetes worksernode: 520MB in use (323MB for kubernetes+docker)
start minikube on windows
minikube.exe start --kubernetes-version v1.8.0 --vm-driver=hyperv --memory=1536 --hyperv-virtual-switch="New Virtual Switch" --v=7 --alsologtostderr
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment