En aquest tema, explorarem com funciona la xarxa dins d'un clúster de Kubernetes. La xarxa és un component fonamental per a la comunicació entre els diferents elements del clúster, com ara els pods, els serveis i els nodes. A continuació, desglossarem els conceptes clau, proporcionarem exemples pràctics i oferirem exercicis per reforçar l'aprenentatge.
Objectius d'Aprenentatge
- Comprendre la xarxa de clúster en Kubernetes.
- Conèixer els diferents models de xarxa utilitzats en Kubernetes.
- Configurar i gestionar la xarxa dins d'un clúster de Kubernetes.
Conceptes Clau
- Xarxa de Pod
Cada pod en Kubernetes té la seva pròpia adreça IP única. Això permet que els pods es comuniquin entre ells directament, sense necessitat de traducció d'adreces de xarxa (NAT).
- Xarxa de Node
Els nodes del clúster també tenen adreces IP úniques. Els pods dins d'un node poden comunicar-se amb altres pods en diferents nodes a través de la xarxa del clúster.
- CNI (Container Network Interface)
Kubernetes utilitza plugins de CNI per gestionar la xarxa del clúster. Alguns dels plugins més populars són:
- Flannel
- Calico
- Weave
- Cilium
- Serveis de Kubernetes
Els serveis proporcionen una manera d'exposar una aplicació que s'executa en un conjunt de pods com una adreça IP única. Els serveis poden ser de diferents tipus, com ara ClusterIP, NodePort i LoadBalancer.
Exemples Pràctics
Configuració de Flannel com a Plugin de Xarxa
-
Desplegar Flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
Verificar la Configuració
kubectl get pods -n kube-system
Creació d'un Servei ClusterIP
-
Definir un Servei en un Fitxer YAML
apiVersion: v1 kind: Service metadata: name: my-service spec: selector: app: MyApp ports: - protocol: TCP port: 80 targetPort: 9376
-
Aplicar la Configuració
kubectl apply -f my-service.yaml
-
Verificar el Servei
kubectl get services
Exercicis Pràctics
Exercici 1: Desplegar un Plugin de Xarxa
- Tria un plugin de xarxa (Flannel, Calico, Weave, etc.).
- Desplega el plugin al teu clúster de Kubernetes.
- Verifica que el plugin s'ha desplegat correctament.
Exercici 2: Crear i Exposar un Servei
- Crea un pod que executi una aplicació simple (per exemple, un servidor web Nginx).
- Defineix un servei ClusterIP per exposar l'aplicació.
- Verifica que pots accedir a l'aplicació a través del servei.
Solucions
Solució a l'Exercici 1
-
Desplegar Calico
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
-
Verificar la Configuració
kubectl get pods -n kube-system
Solució a l'Exercici 2
-
Crear un Pod amb Nginx
apiVersion: v1 kind: Pod metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
kubectl apply -f nginx-pod.yaml
-
Crear un Servei ClusterIP
apiVersion: v1 kind: Service metadata: name: nginx-service spec: selector: app: nginx ports: - protocol: TCP port: 80 targetPort: 80
kubectl apply -f nginx-service.yaml
-
Verificar el Servei
kubectl get services
Errors Comuns i Consells
Errors Comuns
- No desplegar correctament el plugin de xarxa: Assegura't de seguir les instruccions específiques del plugin.
- No definir correctament els selectors en els serveis: Els selectors han de coincidir amb les etiquetes dels pods.
Consells
- Utilitza eines de depuració: Eines com
kubectl describe
ikubectl logs
poden ajudar a identificar problemes. - Consulta la documentació oficial: La documentació de Kubernetes i dels plugins de xarxa és una font valuosa d'informació.
Conclusió
En aquesta secció, hem après sobre la xarxa de clúster en Kubernetes, incloent-hi els conceptes clau, la configuració de plugins de xarxa i la creació de serveis. Aquests coneixements són fonamentals per gestionar la comunicació dins d'un clúster de Kubernetes. En el proper tema, explorarem els diferents tipus de serveis en Kubernetes.
Curs de Kubernetes
Mòdul 1: Introducció a Kubernetes
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
Mòdul 2: Components Bàsics de Kubernetes
Mòdul 3: Gestió de Configuració i Secrets
Mòdul 4: Xarxes en Kubernetes
Mòdul 5: Emmagatzematge en Kubernetes
Mòdul 6: Conceptes Avançats de Kubernetes
Mòdul 7: Monitorització i Registre
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster