Last active
June 25, 2018 11:56
-
-
Save alexandervantrijffel/ed70e36eeabe65254fcd79572a430cab to your computer and use it in GitHub Desktop.
Kubernetes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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