Introducción

kubectl es la herramienta de línea de comandos para interactuar con el clúster de Kubernetes. Permite a los usuarios ejecutar comandos para desplegar aplicaciones, inspeccionar y gestionar recursos del clúster, y ver registros. Es una herramienta esencial para cualquier administrador o desarrollador que trabaje con Kubernetes.

Instalación de kubectl

En Linux

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

En macOS

brew install kubectl

En Windows

choco install kubernetes-cli

Configuración de kubectl

Para que kubectl funcione correctamente, necesita un archivo de configuración (kubeconfig) que contenga la información del clúster y las credenciales de acceso.

Verificar la configuración

kubectl config view

Cambiar el contexto actual

kubectl config use-context <context-name>

Comandos Básicos

Obtener información del clúster

kubectl cluster-info

Listar nodos

kubectl get nodes

Listar pods en un namespace

kubectl get pods -n <namespace>

Describir un pod

kubectl describe pod <pod-name> -n <namespace>

Ver logs de un pod

kubectl logs <pod-name> -n <namespace>

Gestión de Recursos

Crear un recurso desde un archivo YAML

kubectl apply -f <file.yaml>

Eliminar un recurso

kubectl delete -f <file.yaml>

Escalar un deployment

kubectl scale deployment <deployment-name> --replicas=<number-of-replicas> -n <namespace>

Actualizar un recurso

kubectl apply -f <updated-file.yaml>

Ejemplos Prácticos

Desplegar una aplicación simple

  1. Crear un archivo nginx-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
  1. Aplicar el archivo:
kubectl apply -f nginx-deployment.yaml
  1. Verificar los pods:
kubectl get pods

Exponer la aplicación con un servicio

  1. Crear un archivo nginx-service.yaml:
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer
  1. Aplicar el archivo:
kubectl apply -f nginx-service.yaml
  1. Verificar el servicio:
kubectl get services

Ejercicios Prácticos

Ejercicio 1: Crear y gestionar un pod

  1. Crear un archivo my-pod.yaml:
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ['sh', '-c', 'echo Hello Kubernetes! && sleep 3600']
  1. Aplicar el archivo:
kubectl apply -f my-pod.yaml
  1. Verificar el pod:
kubectl get pods
  1. Ver los logs del pod:
kubectl logs my-pod

Ejercicio 2: Escalar un deployment

  1. Crear un archivo my-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: nginx
        ports:
        - containerPort: 80
  1. Aplicar el archivo:
kubectl apply -f my-deployment.yaml
  1. Escalar el deployment a 4 réplicas:
kubectl scale deployment my-deployment --replicas=4
  1. Verificar los pods:
kubectl get pods

Conclusión

En esta sección, hemos cubierto los conceptos básicos y comandos esenciales de kubectl, la herramienta de línea de comandos de Kubernetes. Aprendimos cómo instalar y configurar kubectl, así como cómo usarlo para gestionar recursos en un clúster de Kubernetes. Los ejercicios prácticos proporcionados te ayudarán a familiarizarte con el uso de kubectl en situaciones del mundo real. En el próximo módulo, profundizaremos en los componentes principales de Kubernetes, comenzando con los Pods.

Curso de Kubernetes

Módulo 1: Introducción a Kubernetes

Módulo 2: Componentes Principales de Kubernetes

Módulo 3: Gestión de Configuración y Secretos

Módulo 4: Redes en Kubernetes

Módulo 5: Almacenamiento en Kubernetes

Módulo 6: Conceptos Avanzados de Kubernetes

Módulo 7: Monitoreo y Registro

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados