Guía para reparar, optimizar y analizar bases de datos con mysqlcheck
7 de enero de 2021El valor de la información, securizando nuestras empresas
13 de febrero de 2021PASOS INSTALACION
apt-get install docker.io
Cambiar el driver cgroup por systemd
mkdir /etc/docker
cat >> EOF | sudo tee /etc/docker/daemon.json
{ “exec-opts”: [“native.cgroupdriver=systemd”],
“log-driver”: “json-file”,
“log-opts”:{ “max-size”: “100m” },
“storage-driver”: “overlay2” }
EOF
systemctl enable docker
systemctl status docker
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add
apt-add-repository “deb http://apt.kubernetes.io/ kubernetes-xenial main”
apt-get install kubeadm kubelet kubectl
swapoff –a
ufw allow 6443
ufw allow 6443/tcp
Asignar nombre de hostname único a cada nodo y master.
Instalar driver de red flannel y dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
ARRANCAR EL CLUSTER
Como root en el nodo master ejecutar:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $[id -u]:$[id -g] $HOME/.kube/config
kubeadm init –pod-network-cidr=10.244.0.0/16
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl proxy –address=’192.168.1.X’ –disable-filter=true <- Arranca el proxy para acceder al dashboard
Acceso al dashboard
http://192.168.1.X:8001/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/#/deployment?namespace=_all
COMANDOS
minikube start <- Arrancar el cluster
minikube stop <- Parar el cluster
kubectl config view
kubectl config get-contexts
kubectl get all –all-namespaces
kubectl delete namespace <nombre_namespace>
kubectl get services
kubeadm version
kubectl get pod –namespace=kube-system
kubectl get nodes
kubeadm reset
kubectl get componentstatus
kubectl get pods –all-namespaces
kubectl config get-contexts
kubectl get ns
kubectl -n kube-system get pods <- Listar los pods dentro del namespace kube-system
kubectl apply -f deploy.yaml <- Crea pods/contenedores a traves de un deployment,
kubectl describe svc <nombre_servicio>
kubectl get endpoints <- Obtener el punto (url) de acceso de los servicios
kubectl get replicaset
kubectl create deployment nginx-deploy –image=nginx <- Crea un deploy y crea automaticamente el fichero de configuración
kubectl edit deployment nginx-deploy
kubectl logs <name_pod> <- Ver los logs de un pod
kubectl exec -it <pod_name> — /bin/bash <- Entra en el contenedor
kubectl delete deployment <nombre_deploy>
kubectl get service <- Lista los servicios
minikube service <nombre_servicio> <- Asigna IP externa al cluster, el tipo nodeport es el que permite
acceder desde el exterior (puerto > 30000), o bien con el servicio ingress.
kubectl edit deployment <- Genera la plantilla del deploy
kubectl get service <- Muestra los servicios y tipo de red
minikube service mongo-express-service <- Muestra el endpoint del servicio y lo lanza.
minikube addons enable ingress <- Descarga y activa un addon
CAPAS DE ABSTRACCIÓN
Deployment
Replicaset
Pod
Container
kubernetes-cni <- Componente common network interface, comunica todo el cluster a traves de un driver (calico, flume…)
Los deployments pueden ser:
– deployment (replicaset)
– daemonset (crea 1 pod en cada nodo, no replicas)
– statefulset (crea pods con volúmenes persistentes para los datos)
Kubelet interactua con el nodo y con el contenedor
Kubelet inicializa el pod con el contenedor dentro
Cada master corre 4 procesos:
– API server (actua como un gateway, punto de entrada y de salida)
– Scheduler (inicializa los pods en los workers/nodos, mira la carga de trabajo de cada uno)
– Controller manager.
– Etcd, este servicio es el cerebro del cluster, como una base de datos.
Cada nodo worker corre 3 procesos:
– Kubelet
– Kube proxy
– Container runtime
DASHBOARD Y ACCESO
kubectl create serviceaccount dashboard-admin-sa
TOKEN: XXXXXXXXXXXXXXXXXXXX
kubectl create clusterrolebinding dashboard-admin-sa –clusterrole=cluster-admin –serviceaccount=default:dashboard-admin-sa
kubectl get secrets
NAME TYPE DATA AGE
dashboard-admin-sa-token-vt2rv kubernetes.io/service-account-token 3 47s
default-token-rrpqc kubernetes.io/service-account-token 350m
kubectl describe secret dashboard-admin-sa-token-vt2rv
kubectl proxy
Acceso-ui desde web:
http://192.168.1.X:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
JOIN DE UN NODO
Ejecutar este comando en el nodo con el token proporcionado por el master, la IP del join es la del master.
kubeadm join 192.168.1.X:6443 –token i5kn0c.k499t5c2xho6n5i2 –discovery-token-ca-cert-hash sha256:112501c7634de62c485ac95de80715c440e214d02a62d1e009b9b4b0352271a7
VIDEO TUTORIALES
Pelado Nerd (Basico 1h30m): https://www.youtube.com/watch?v=DCoBcpOA7W4
Nana (Avanzado 4h): https://www.youtube.com/watch?v=X48VuDVv0do
Canal Nana Tech: https://www.youtube.com/c/techworld-with-nana
MANUALES DASHBOARD
https://computingforgeeks.com/how-to-install-kubernetes-dashboard-with-nodeport
https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard
https://snapcraft.io/install/kontena-lens/ubuntu
INGRESS
https://kubernetes.github.io/ingress-nginx/deploy
HOW-TO
https://phoenixnap.com/kb/kubernetes-mysql
https://www.cloudsigma.com/how-to-install-and-use-kubernetes-on-ubuntu-20-04
https://ubunlog.com/como-instalar-kubernetes-en-ubuntu-y-derivados-y-crear-dos-nodos
https://phoenixnap.com/kb/install-kubernetes-on-ubuntu
https://computingforgeeks.com/deploy-kubernetes-cluster-on-ubuntu-with-kubeadm