Saltar al contenido principal

Capítulo 1.6 - Instalación y Configuración

Visión General​

Antes de comenzar a usar Kubernetes, debe instalar las herramientas necesarias. Este capítulo le guía a través de la instalación de kubectl (la herramienta de línea de comandos de Kubernetes) y la configuración de un clúster local para la práctica.

Objetivos​

Al final de este capítulo, usted será capaz de:

  • Instalar kubectl en su sistema
  • Comprender la configuración de kubectl
  • Iniciar un clúster local de Kubernetes
  • Verificar que todo funciona correctamente
  • Utilizar los comandos básicos de kubectl

¿Qué es kubectl?​

kubectl (pronunciado "kube-control" o "kube-cuttle") es la herramienta oficial de línea de comandos para interactuar con un clúster de Kubernetes.

Funcionalidades de kubectl:

  • Crear, modificar, eliminar recursos
  • Inspeccionar el estado del clúster
  • Gestionar despliegues
  • Depurar aplicaciones
  • Acceder a los logs de los pods

Instalación de kubectl​

Verificación de la Instalación​

Antes de instalar, verifiquemos si kubectl ya está instalado:

kubectl version --client

Si ve una versión, ¡kubectl ya está instalado! Si no, siga las instrucciones a continuación.

Instalación en Windows​

Método 1: Vía Chocolatey (Recomendado)​

Si tiene Chocolatey instalado:

choco install kubernetes-cli

Método 2: Descarga Directa​

  1. Descargue la última versión desde:

    https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe

    (Reemplace v1.28.0 por la versión deseada)

  2. Agregue kubectl.exe a su PATH:

    • Cree una carpeta C:\kubectl
    • Coloque kubectl.exe en esa carpeta
    • Agregue C:\kubectl a su variable de entorno PATH
  3. Verifique la instalación:

    kubectl version --client

Método 3: Vía PowerShell​

# Descargar kubectl
$version = "v1.28.0"
$url = "https://dl.k8s.io/release/$version/bin/windows/amd64/kubectl.exe"
Invoke-WebRequest -Uri $url -OutFile "$env:TEMP\kubectl.exe"

# Mover a una carpeta en el PATH
Move-Item -Path "$env:TEMP\kubectl.exe" -Destination "C:\Windows\System32\kubectl.exe"

# Verificar
kubectl version --client

Instalación en Linux​

Método 1: Vía Package Manager (Ubuntu/Debian)​

# Actualizar los paquetes
sudo apt-get update

# Instalar dependencias
sudo apt-get install -y apt-transport-https ca-certificates curl

# Agregar la clave GPG de Kubernetes
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

# Agregar el repositorio
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.28/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

# Instalar kubectl
sudo apt-get update
sudo apt-get install -y kubectl

# Verificar
kubectl version --client

Método 2: Descarga Directa​

# Descargar la última versión
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

# Hacer ejecutable
chmod +x kubectl

# Mover a una carpeta en el PATH
sudo mv kubectl /usr/local/bin/

# Verificar
kubectl version --client

Instalación en macOS​

Método 1: Vía Homebrew (Recomendado)​

brew install kubectl

Método 2: Descarga Directa​

# Descargar
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"

# Hacer ejecutable
chmod +x kubectl

# Mover a una carpeta en el PATH
sudo mv kubectl /usr/local/bin/

# Verificar
kubectl version --client

Configuración de kubectl​

Archivo de Configuración​

kubectl utiliza un archivo de configuración ubicado en:

  • Linux/macOS: ~/.kube/config
  • Windows: %USERPROFILE%\.kube\config

Este archivo contiene:

  • La información de conexión a los clústeres
  • Los contextos (qué clúster usar)
  • Los usuarios y autenticaciones

Estructura del Archivo config​

apiVersion: v1
kind: Config
clusters:
- name: my-cluster
cluster:
server: https://api.my-cluster.com
certificate-authority-data: <cert-data>
contexts:
- name: my-context
context:
cluster: my-cluster
user: my-user
current-context: my-context
users:
- name: my-user
user:
token: <token>

Comandos de Configuración Útiles​

# Ver la configuración actual
kubectl config view

# Ver los contextos disponibles
kubectl config get-contexts

# Cambiar de contexto
kubectl config use-context my-context

# Ver el contexto actual
kubectl config current-context

Clúster Local: minikube​

Para practicar Kubernetes localmente, usaremos minikube, que crea un clúster de Kubernetes de un solo nodo en una máquina virtual.

Instalación de minikube​

Windows​

# Vía Chocolatey
choco install minikube

# O descarga directa
# Descargue desde: https://github.com/kubernetes/minikube/releases

Linux​

# Descargar
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64

# Instalar
sudo install minikube-linux-amd64 /usr/local/bin/minikube

macOS​

brew install minikube

Inicio de minikube​

# Iniciar minikube
minikube start

# Verificar el estado
minikube status

# Ver la información del clúster
kubectl cluster-info

Comandos Útiles de minikube​

# Detener el clúster
minikube stop

# Iniciar el clúster
minikube start

# Eliminar el clúster
minikube delete

# Abrir el dashboard de Kubernetes
minikube dashboard

# Acceder al entorno de minikube
minikube ssh

Clúster Local: kind (Alternativa)​

kind (Kubernetes in Docker) es una alternativa a minikube que utiliza Docker en lugar de una máquina virtual.

Instalación de kind​

Windows​

choco install kind

Linux/macOS​

# Descargar
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
# Para macOS: kind-darwin-amd64

# Hacer ejecutable
chmod +x ./kind

# Mover a PATH
sudo mv ./kind /usr/local/bin/kind

Uso de kind​

# Crear un clúster
kind create cluster --name my-cluster

# Listar los clústeres
kind get clusters

# Eliminar un clúster
kind delete cluster --name my-cluster

Verificación de la Instalación​

Prueba Completa​

Ejecute estos comandos para verificar que todo funciona:

# 1. Verificar la versión de kubectl
kubectl version --client

# 2. Verificar la conexión al clúster
kubectl cluster-info

# 3. Listar los nodos
kubectl get nodes

# 4. Listar todos los pods (debería estar vacío al principio)
kubectl get pods --all-namespaces

# 5. Verificar los componentes del sistema
kubectl get componentstatuses
# Nota: Este comando está obsoleto en las versiones recientes

Resultado Esperado​

Si todo funciona, debería ver:

$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane 1m v1.28.0

Comandos Básicos de kubectl​

Aquí están los comandos esenciales que utilizará a lo largo del curso:

Comandos Generales​

# Obtener información
kubectl get <resource> # Listar recursos
kubectl describe <resource> <name> # Detalles de un recurso
kubectl explain <resource> # Documentación de un recurso

# Crear recursos
kubectl create <resource> # Crear desde la línea de comandos
kubectl apply -f <file.yaml> # Crear desde un archivo YAML

# Modificar recursos
kubectl edit <resource> <name> # Editar un recurso
kubectl patch <resource> <name> # Modificar parcialmente

# Eliminar recursos
kubectl delete <resource> <name> # Eliminar un recurso
kubectl delete -f <file.yaml> # Eliminar desde un archivo

Ejemplos Prácticos​

# Listar todos los pods
kubectl get pods

# Listar todos los pods en todos los namespaces
kubectl get pods --all-namespaces

# Ver los detalles de un pod
kubectl describe pod my-pod

# Ver los logs de un pod
kubectl logs my-pod

# Ejecutar un comando en un pod
kubectl exec -it my-pod -- /bin/bash

# Copiar un archivo hacia/desde un pod
kubectl cp my-pod:/path/file ./local-file

Autocompletado (Bonus)​

Configuración del Autocompletado​

El autocompletado hace que kubectl sea mucho más fácil de usar:

Bash (Linux/macOS)​

# Agregar a ~/.bashrc
echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

Zsh (macOS)​

# Agregar a ~/.zshrc
echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

PowerShell (Windows)​

# Instalar el módulo
Install-Module -Name PSKubectlCompletion

# Importar en el perfil
Add-Content $PROFILE "Import-Module PSKubectlCompletion"

Resumen​

En este capítulo, usted ha aprendido:

Cómo instalar kubectl en diferentes sistemas
Cómo configurar kubectl para conectarse a un clúster
Cómo iniciar un clúster local con minikube o kind
Cómo verificar que todo funciona correctamente
Los comandos básicos esenciales de kubectl


Próximos Pasos​

Ahora que tiene kubectl instalado y un clúster local funcional, está listo para:

Lab 1.1: Primer despliegue en Kubernetes
Módulo 2: Arquitectura detallada y componentes de Kubernetes


Recursos​


Troubleshooting​

Problemas Comunes y Soluciones​

Problema 1: kubectl: command not found​

Síntoma:

kubectl: command not found

Soluciones:

  1. Verificar la instalación:

    # Windows
    where kubectl

    # Linux/macOS
    which kubectl
  2. Verificar el PATH:

    • Asegúrese de que la carpeta que contiene kubectl esté en su PATH
    • Windows: Verifique las variables de entorno del sistema
    • Linux/macOS: Verifique echo $PATH
  3. Reinstalar:

    • Siga nuevamente las instrucciones de instalación para su sistema operativo

Problema 2: Unable to connect to the server​

Síntoma:

The connection to the server <server> was refused

Soluciones:

  1. Verificar que el clúster esté iniciado:

    # Para minikube
    minikube status
    minikube start

    # Para kind
    kind get clusters
  2. Verificar la configuración:

    kubectl config view
    kubectl config current-context
  3. Verificar la conexión de red:

    kubectl cluster-info

Problema 3: minikube start falla​

Síntomas posibles:

  • Error de virtualización
  • Problema de recursos (RAM/CPU)
  • Conflicto con Docker

Soluciones:

  1. Verificar la virtualización:

    • Windows: Activar Hyper-V o VirtualBox
    • Linux: Verificar KVM
    • macOS: Verificar VirtualBox o HyperKit
  2. Asignar más recursos:

    minikube start --memory=4096 --cpus=2
  3. Usar un driver diferente:

    minikube start --driver=docker
    # o
    minikube start --driver=virtualbox
  4. Reinicializar minikube:

    minikube delete
    minikube start

Problema 4: Error de certificado SSL​

Síntoma:

x509: certificate signed by unknown authority

Soluciones:

  1. Verificar la fecha del sistema:

    • Asegúrese de que la fecha/hora de su sistema sea correcta
  2. Reinicializar el contexto:

    kubectl config use-context minikube
  3. Recrear el clúster:

    minikube delete
    minikube start

Problema 5: kubectl version solo muestra el cliente​

Síntoma:

kubectl version --client
# Funciona, pero
kubectl version
# Error: Unable to connect to the server

Solución:

  • El clúster no está iniciado o kubectl no está configurado
  • Siga los pasos de "Verificación de la Instalación" arriba

Capítulo anterior: Capítulo 1.5 - Conceptos Fundamentales
Volver al módulo: Módulo 1 - Introducción a Kubernetes
Siguiente Lab: Lab 1.1 - Primer Despliegue


Capítulo creado el: Diciembre 2024