Last active
March 1, 2021 00:37
-
-
Save erikrs92/b90dff0858f6445c759e4e4ba3ce4539 to your computer and use it in GitHub Desktop.
montar cluster k8s con kueadm
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
3-servidores linux (1 master, 2 nodos): | |
minimo 3 GB RAM , 2 cpu minimo | |
################# MASTER Y TODOS LOS NODOS ################# | |
#Cambiar ip estatica : | |
#sudo nano /etc/netplan/00-installer-config.yaml | |
#ejemplo: asumiendo que mi rango de IP es 192.168.174.x | |
#network: | |
# ethernets: | |
# ens33: | |
# addresses: | |
# - 192.168.174.50/24 #cambiar IP | |
# gateway4: 192.168.174.2 | |
# nameservers: | |
# addresses: | |
# - 8.8.8.8 | |
# - 8.8.4.4 | |
# version: 2 | |
#crear usuario kubernetes: | |
#entrar como root | |
$ adduser kubernetes | |
$ usermod -aG sudo kubernetes | |
#Desactivar Swap: | |
$ swapoff -a | |
#Eliminar linea de swap | |
$ nano /etc/fstab | |
#Editar: sudo vi /etc/sysctl.conf y agregar | |
vi /etc/sysctl.conf #esc + wq: para salir y guardar | |
net/bridge/bridge-nf-call-ip6tables = 1 | |
net/bridge/bridge-nf-call-iptables = 1 | |
net/bridge/bridge-nf-call-arptables = 1 | |
#Instalar paquetes : | |
$ apt-get update | |
$ apt-get install ebtables ethtool | |
#reiniciar y entrar con usuario kubernetes | |
#Instaalr docker: | |
$ sudo apt update | |
$ sudo apt install docker.io | |
$ sudo systemctl enable --now docker | |
$ sudo usermod -aG docker $USER | |
$ docker --version | |
#volver a root | |
#Instalamos soporte para HTTPS | |
$ apt-get update | |
$ apt-get install -y apt-transport-https | |
#Instalar curl: | |
$ apt-get install curl | |
#Recuperamos la clave para el repositorio de Kubernetes y lo añadimos con apt-key, debemos estar con root: | |
$ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - | |
#Añadimos el repositorio a nuestro sistes: | |
$ cat <<EOF >/etc/apt/sources.list.d/kubernetes.list | |
deb http://apt.kubernetes.io/ kubernetes-xenial main | |
EOF | |
################# FIN MASTER Y TODOS LOS NODOS ################# | |
###########HASTA AQUI SE PUEDE CREAR IMAGEN BASE ################ | |
################# MASTER ################# | |
#Cambiar nombre de nodo | |
$ hostnamectl set-hostname k8s-master01 | |
$ nano /etc/hosts | |
#reiniciar: | |
#Instalamos los 3 componentes necesarios: kubeadm, kubelet, y kubectl, como root: | |
#en principio kubeadm debes instalarlo en todos los nodos, Kubectl también conviene, | |
#aunque realmente deberías instalarlo en la máquina que usarás para gestionar el cluster. | |
#Si lo tienes en todas podrás hacerlo en cualquiera | |
$ apt-get update | |
$ apt-get install -y kubelet kubeadm kubectl | |
#Crear el cluster:: | |
#configuracion de red, con calico: entrar con root: | |
$ kubeadm config images pull | |
$ kubeadm init --pod-network-cidr=192.168.0.0/16 | |
#Agregar lo que indica la salida del comando anterior: | |
#entrar como usuario kubernetes: lo siguiente es la salida del comando: kubeadm init.. | |
$ sudo mkdir -p $HOME/.kube | |
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config | |
$ sudo chown $(id -u):$(id -g) $HOME/.kube/config | |
#Instalamos el plugin de calico: | |
#https://docs.projectcalico.org/getting-started/kubernetes/self-managed-onprem/onpremises | |
#seguimos con usuario kubernetes: | |
$ curl https://docs.projectcalico.org/manifests/calico.yaml -O | |
$ sudo kubectl apply -f calico.yaml | |
#Esperar unos minutos: | |
#Hacemos un “untaint” del nodo para que puede realizar scheduling de | |
#los workloads: en entorno real no se deberia hacer esto: | |
#kubectl taint nodes --all node-role.kubernetes.io/master- | |
##Volver aquitarlo: ejecutar en el master a quitar | |
#kubectl patch nodes $(hostname) -p '{"spec":{"taints":[]}}' | |
#revisar cluster:... | |
kubectl get nodes | |
################# MASTER TERMINADO ################# | |
################# NODOS ################# | |
#Cambiar IP en: | |
$ sudo nano /etc/netplan/00-*.yaml | |
#Cambiar nombre de nodo: como root | |
$ hostnamectl set-hostname k8s-node01 | |
$ nano /etc/hosts | |
#reiniciar: | |
#Instalamos los componentes necesarios: kubeadm, kubelet, como root: | |
$ apt-get update | |
$ apt-get install -y kubelet kubeadm | |
################# FIN NODOS ################# | |
################# MASTER ################# | |
##### uniendo nodos al master##### | |
#Master: | |
kubeadm token list | |
#imprimir comando join para añadir nodo | |
kubeadm token create --print-join-command | |
#El comando resultante, agregar en la temrinal de los nodos. | |
################# FIN MASTER ################# | |
################# NODOS ################# | |
#EJECUTAR (EN LOS NODOS) RESULTADO DE COMANDO INIT REALIZADO EN MASTER. | |
################# FIN NODOS ################# | |
####ACCEDER AL CLUSTER########################## | |
#En una maquina independiente instalamos kubectl: | |
Copiamos el siguiente archivo desde el master, a la maquina externa: | |
#MASTER | |
$ ~/.kube/config | |
#EQUIPO EXTERNO | |
Si tenemos certificados, debemos modificar las rutas (de los certificados). | |
#obtenemos los nodos: | |
$ kubectl get nodes | |
#CONECTANDO CON SERVIDOR NFS PARA VOLUMEN: | |
# Servidor Linux para NFS: Ingresar a root (sudo su -) | |
$ apt-get install nfs-kernel-server -y | |
$ mkdir /var/datos | |
$ vi /etc/exports | |
$ nano /etc/exports | |
$ systemctl restart nfs-kernel-server | |
$ showmount -e 192.168.174.99 | |
# Servidor Linux para NFS: Ingresar a los nodos y ejecutar lo siguiente: | |
# Instalar cliente NFS | |
apt-get install nfs-common | |
#Montamos la carpeta del server nfs en cada nodo: | |
mkdir /var/datos | |
mount -t nfs 192.168.174.99:/var/datos /var/datos |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment