Kubernetes Cluster Information

KubernetesKubernetesBeginner
Practice Now

Introduction

Kubernetes is a container orchestration platform that automates the deployment, scaling, and management of containerized applications. In this lab, you will explore how to use the cluster-info command to gain insight into your Kubernetes cluster. By the end of the lab, you will understand how to start a Kubernetes cluster, retrieve essential cluster information, inspect internal components, and test API server connectivity.

This lab is tailored for beginners, and no prior experience with Kubernetes is required.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kubernetes(("`Kubernetes`")) -.-> kubernetes/TroubleshootingandDebuggingCommandsGroup(["`Troubleshooting and Debugging Commands`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/BasicCommandsGroup(["`Basic Commands`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/ConfigurationandVersioningGroup(["`Configuration and Versioning`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/ClusterInformationGroup(["`Cluster Information`"]) kubernetes(("`Kubernetes`")) -.-> kubernetes/BasicsGroup(["`Basics`"]) kubernetes/TroubleshootingandDebuggingCommandsGroup -.-> kubernetes/describe("`Describe`") kubernetes/BasicCommandsGroup -.-> kubernetes/get("`Get`") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/config("`Config`") kubernetes/ConfigurationandVersioningGroup -.-> kubernetes/version("`Version`") kubernetes/ClusterInformationGroup -.-> kubernetes/cluster_info("`Cluster Info`") kubernetes/BasicsGroup -.-> kubernetes/initialization("`Initialization`") subgraph Lab Skills kubernetes/describe -.-> lab-8426{{"`Kubernetes Cluster Information`"}} kubernetes/get -.-> lab-8426{{"`Kubernetes Cluster Information`"}} kubernetes/config -.-> lab-8426{{"`Kubernetes Cluster Information`"}} kubernetes/version -.-> lab-8426{{"`Kubernetes Cluster Information`"}} kubernetes/cluster_info -.-> lab-8426{{"`Kubernetes Cluster Information`"}} kubernetes/initialization -.-> lab-8426{{"`Kubernetes Cluster Information`"}} end

Start the Kubernetes Cluster

A Kubernetes cluster requires a running environment. In this lab, we will use Minikube, a tool that allows you to run a Kubernetes cluster locally. Follow these steps:

  1. Open your terminal and ensure you are in the /home/labex/project directory:

    cd ~/project
  2. Start the Minikube cluster:

    minikube start
    • Minikube creates a single-node Kubernetes cluster.
    • This process may take a few minutes, depending on your system. During initialization, various Kubernetes components will be set up.
    alt text

Retrieve Basic Cluster Information

Once Minikube is running, use the kubectl cluster-info command to view information about the cluster. Run the following command:

kubectl cluster-info
  • The API server URL is the main endpoint for interacting with your cluster.
  • CoreDNS handles service discovery and DNS resolution within the cluster.

Example Output:

Kubernetes control plane is running at https://192.168.49.2:8443
CoreDNS is running at https://192.168.49.2:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  • The https://192.168.49.2:8443 is the URL of the Kubernetes API server. This is where all kubectl commands are sent.
  • The CoreDNS service helps Kubernetes resolve domain names for services and pods.

Inspect Cluster Components in Detail

To gain a deeper understanding of the cluster and its internal components, use:

kubectl cluster-info dump

This command provides detailed information about key components:

  • etcd: A key-value store for all cluster data.
  • kube-apiserver: The entry point for Kubernetes API requests.
  • kube-scheduler: Assigns workloads (pods) to available nodes.
  • kube-controller-manager: Maintains cluster state (e.g., ensures the desired number of pod replicas are running).

Example Output:

This command generates a verbose output detailing the configuration and status of Kubernetes system components. You can redirect the output to a file for easier analysis:

kubectl cluster-info dump > cluster-details.txt

This will save the output to cluster-details.txt in your current directory.

View Nodes in the Cluster

Nodes are the machines that run your workloads in Kubernetes. To list the nodes in your cluster, run:

kubectl get nodes
  • The node name (e.g., minikube) identifies the machine.
  • The status (Ready) indicates that the node is healthy and can run workloads.
  • In a Minikube cluster, the node acts as both the control plane and the worker node.

Example Output:

NAME       STATUS   ROLES           AGE   VERSION
minikube   Ready    control-plane   5m    v1.20.0

Test API Server Access

The API server is a critical component of the Kubernetes control plane. You can test its accessibility by running:

curl $(kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}') --insecure
  • This command retrieves the API server URL and performs a simple request to it.
  • The --insecure flag bypasses SSL certificate verification, which is acceptable in this local setup.

Example Output:

If the API server is accessible, the response should look like this:

{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "forbidden: User \"system:anonymous\" cannot get path \"/\"",
  "reason": "Forbidden",
  "details": {},
  "code": 403
}

This response confirms the API server is running but denies access due to missing authentication, which is expected.

Summary

In this lab, you learned how to:

  • Start a Kubernetes cluster with Minikube.
  • Use kubectl cluster-info to retrieve cluster details.
  • Inspect cluster components in depth with kubectl cluster-info dump.
  • List nodes in the cluster using kubectl get nodes.
  • Test API server connectivity with a curl command.

This hands-on experience provided a foundation for understanding and exploring Kubernetes clusters. These commands are essential for debugging and managing Kubernetes environments.

Next steps:

  • Explore pods and workloads in Kubernetes.
  • Learn how to create services to expose applications.
  • Experiment with scaling workloads in a cluster.

Keep practicing, and happy learning!

Other Kubernetes Tutorials you may like