Kubernetes
Setup Cluster
Kind-K8S
Advanced

Advanced Scenarios with kind

Here are some advanced scenarios for setting up Kubernetes clusters using kind, including a Highly Available (HA) cluster and a cluster with an ingress controller.


1. HA (Highly Available) Cluster

To create a Highly Available (HA) cluster with multiple control plane nodes and worker nodes, you can use the following configuration file.

Example YAML for HA Cluster:

# ha-cluster-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: control-plane
  - role: control-plane
  - role: worker
  - role: worker
  • Explanation:
    • This configuration sets up three control-plane nodes for high availability, along with two worker nodes.
    • Multiple control-plane nodes help distribute the Kubernetes API server and other critical services, ensuring that if one control plane fails, the other(s) can take over.

Create the HA Cluster:

To create the cluster using the above YAML configuration, run the following command:

kind create cluster --config ha-cluster-config.yaml --name <cluster-name>

2. Cluster with Ingress

To deploy an ingress controller (such as NGINX) in your kind cluster for managing HTTP routing, follow these steps:

Deploy NGINX Ingress Controller:

  1. Apply the NGINX ingress controller manifest:

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/kind/deploy.yaml
    • This will deploy the NGINX ingress controller into your cluster.
  2. Verify the ingress controller deployment: You can check the status of the ingress controller by running:

    kubectl get pods -n ingress-nginx
    • Ensure that the pods are running and healthy.

Create an Ingress Resource (Example):

After deploying the ingress controller, you can create ingress resources to route HTTP traffic to your services. Below is an example of an ingress resource:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
  namespace: default
spec:
  rules:
    - host: <your-app-name>.localhost
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: <your-service-name>
                port:
                  number: 80
  • Explanation:
    • Replace <your-app-name> with your desired domain name and <your-service-name> with the name of your service running inside the cluster.
    • This ingress resource will route incoming HTTP traffic to the specified service.
  1. Access the service via ingress: To access the service, update your /etc/hosts file to map the host to the kind cluster’s IP:
    127.0.0.1 <your-app-name>.localhost

Summary

  • Highly Available Cluster: You can create a highly available cluster by specifying multiple control-plane nodes in your configuration, which ensures redundancy for your Kubernetes API server and critical components.
  • Ingress Setup: You can easily deploy an ingress controller like NGINX to manage HTTP routing and expose services inside your cluster.

These advanced configurations provide a more resilient and scalable setup for your local Kubernetes environment using kind.


🧙 AI Wizard - Instant Page Insights

Click the button below to analyze this page.
Get an AI-generated summary and key insights in seconds.
Powered by Perplexity AI!