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
-
Descargue la última versión desde:
https://dl.k8s.io/release/v1.28.0/bin/windows/amd64/kubectl.exe(Reemplace
v1.28.0por la versión deseada) -
Agregue kubectl.exe a su PATH:
- Cree una carpeta
C:\kubectl - Coloque
kubectl.exeen esa carpeta - Agregue
C:\kubectla su variable de entorno PATH
- Cree una carpeta
-
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
- Documentación de kubectl
- Guía de instalación de kubectl
- Documentación de minikube
- Documentación de kind
Troubleshooting
Problemas Comunes y Soluciones
Problema 1: kubectl: command not found
Síntoma:
kubectl: command not found
Soluciones:
-
Verificar la instalación:
# Windows
where kubectl
# Linux/macOS
which kubectl -
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
-
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:
-
Verificar que el clúster esté iniciado:
# Para minikube
minikube status
minikube start
# Para kind
kind get clusters -
Verificar la configuración:
kubectl config view
kubectl config current-context -
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:
-
Verificar la virtualización:
- Windows: Activar Hyper-V o VirtualBox
- Linux: Verificar KVM
- macOS: Verificar VirtualBox o HyperKit
-
Asignar más recursos:
minikube start --memory=4096 --cpus=2 -
Usar un driver diferente:
minikube start --driver=docker
# o
minikube start --driver=virtualbox -
Reinicializar minikube:
minikube delete
minikube start
Problema 4: Error de certificado SSL
Síntoma:
x509: certificate signed by unknown authority
Soluciones:
-
Verificar la fecha del sistema:
- Asegúrese de que la fecha/hora de su sistema sea correcta
-
Reinicializar el contexto:
kubectl config use-context minikube -
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
Navegación
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