Skip to content

Instantly share code, notes, and snippets.

@erikrs92
Last active March 1, 2021 00:37
Show Gist options
  • Save erikrs92/b90dff0858f6445c759e4e4ba3ce4539 to your computer and use it in GitHub Desktop.
Save erikrs92/b90dff0858f6445c759e4e4ba3ce4539 to your computer and use it in GitHub Desktop.
montar cluster k8s con kueadm
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