Instalación y primeros pasos de un Cluster Kubernetes

Guía para reparar, optimizar y analizar bases de datos con mysqlcheck
7 de enero de 2021
El valor de la información, securizando nuestras empresas
13 de febrero de 2021
Guía para reparar, optimizar y analizar bases de datos con mysqlcheck
7 de enero de 2021
El valor de la información, securizando nuestras empresas
13 de febrero de 2021

PASOS 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://www.replex.io/blog/how-to-install-access-and-add-heapster-metrics-to-the-kubernetes-dashboard

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Instalación y primeros pasos de un Cluster Kubernetes
Este sitio web utiliza cookies para mejorar su experiencia. Al utilizar este sitio web, usted acepta nuestra Política de privacidad.
Leer más