4 minute read

In the previous post, we just installed kind using the source code and looked at the help options.

Let us create our first cluster using kind.

pradeep:~$kind create cluster
ERROR: failed to create cluster: failed to list nodes: command "docker ps -a --filter label=io.x-k8s.kind.cluster=kind --format ''" failed with error: exit status 1
Command Output: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
pradeep:~$

I have not started Docker Desktop yet, hence the above error.

Let us start it and re-run the same command.

pradeep:~$kind create cluster
Creating cluster "kind" ...
 ✓ Ensuring node image (kindest/node:v1.24.0) đŸ–ŧ 
 ✓ Preparing nodes đŸ“Ļ  
 ✓ Writing configuration 📜 
 ✓ Starting control-plane 🕹ī¸ 
 ✓ Installing CNI 🔌 
 ✓ Installing StorageClass 💾 
Set kubectl context to "kind-kind"
You can now use your cluster with:

kubectl cluster-info --context kind-kind

Not sure what to do next? 😅  Check out https://kind.sigs.k8s.io/docs/user/quick-start/
pradeep:~$
pradeep:~$kubectl cluster-info --context kind-kind
Kubernetes control plane is running at https://127.0.0.1:65477
CoreDNS is running at https://127.0.0.1:65477/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
pradeep:~$
pradeep:~$kubectl get nodes
NAME                 STATUS   ROLES           AGE   VERSION
kind-control-plane   Ready    control-plane   75s   v1.24.0
pradeep:~$kubectl get nodes -o wide
NAME                 STATUS   ROLES           AGE   VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE       KERNEL-VERSION      CONTAINER-RUNTIME
kind-control-plane   Ready    control-plane   81s   v1.24.0   172.18.0.2    <none>        Ubuntu 21.10   5.10.104-linuxkit   containerd://1.6.4
pradeep:~$

Let us describe the kind-control-plane node.

pradeep:~$kubectl describe node
Name:               kind-control-plane
Roles:              control-plane
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=kind-control-plane
                    kubernetes.io/os=linux
                    node-role.kubernetes.io/control-plane=
                    node.kubernetes.io/exclude-from-external-load-balancers=
Annotations:        kubeadm.alpha.kubernetes.io/cri-socket: unix:///run/containerd/containerd.sock
                    node.alpha.kubernetes.io/ttl: 0
                    volumes.kubernetes.io/controller-managed-attach-detach: true
CreationTimestamp:  Mon, 23 May 2022 21:06:22 +0530
Taints:             <none>
Unschedulable:      false
Lease:
  HolderIdentity:  kind-control-plane
  AcquireTime:     <unset>
  RenewTime:       Mon, 23 May 2022 21:08:05 +0530
Conditions:
  Type             Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----             ------  -----------------                 ------------------                ------                       -------
  MemoryPressure   False   Mon, 23 May 2022 21:06:44 +0530   Mon, 23 May 2022 21:06:22 +0530   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure     False   Mon, 23 May 2022 21:06:44 +0530   Mon, 23 May 2022 21:06:22 +0530   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure      False   Mon, 23 May 2022 21:06:44 +0530   Mon, 23 May 2022 21:06:22 +0530   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready            True    Mon, 23 May 2022 21:06:44 +0530   Mon, 23 May 2022 21:06:44 +0530   KubeletReady                 kubelet is posting ready status
Addresses:
  InternalIP:  172.18.0.2
  Hostname:    kind-control-plane
Capacity:
  cpu:                4
  ephemeral-storage:  61255492Ki
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             4028728Ki
  pods:               110
Allocatable:
  cpu:                4
  ephemeral-storage:  61255492Ki
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             4028728Ki
  pods:               110
System Info:
  Machine ID:                 7837ba6d6f7f45a8a6be3ec4fbdb9495
  System UUID:                ab26a89a-7b30-46ad-aca6-c9f11a6aca5d
  Boot ID:                    09c3d45f-d6d1-44ac-a72f-202aaf448f07
  Kernel Version:             5.10.104-linuxkit
  OS Image:                   Ubuntu 21.10
  Operating System:           linux
  Architecture:               amd64
  Container Runtime Version:  containerd://1.6.4
  Kubelet Version:            v1.24.0
  Kube-Proxy Version:         v1.24.0
PodCIDR:                      10.244.0.0/24
PodCIDRs:                     10.244.0.0/24
ProviderID:                   kind://docker/kind/kind-control-plane
Non-terminated Pods:          (9 in total)
  Namespace                   Name                                          CPU Requests  CPU Limits  Memory Requests  Memory Limits  Age
  ---------                   ----                                          ------------  ----------  ---------------  -------------  ---
  kube-system                 coredns-6d4b75cb6d-jddfp                      100m (2%)     0 (0%)      70Mi (1%)        170Mi (4%)     95s
  kube-system                 coredns-6d4b75cb6d-xxg4c                      100m (2%)     0 (0%)      70Mi (1%)        170Mi (4%)     95s
  kube-system                 etcd-kind-control-plane                       100m (2%)     0 (0%)      100Mi (2%)       0 (0%)         107s
  kube-system                 kindnet-gqshf                                 100m (2%)     100m (2%)   50Mi (1%)        50Mi (1%)      95s
  kube-system                 kube-apiserver-kind-control-plane             250m (6%)     0 (0%)      0 (0%)           0 (0%)         105s
  kube-system                 kube-controller-manager-kind-control-plane    200m (5%)     0 (0%)      0 (0%)           0 (0%)         105s
  kube-system                 kube-proxy-fs4h5                              0 (0%)        0 (0%)      0 (0%)           0 (0%)         95s
  kube-system                 kube-scheduler-kind-control-plane             100m (2%)     0 (0%)      0 (0%)           0 (0%)         105s
  local-path-storage          local-path-provisioner-9cd9bd544-cdr6d        0 (0%)        0 (0%)      0 (0%)           0 (0%)         95s
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests    Limits
  --------           --------    ------
  cpu                950m (23%)  100m (2%)
  memory             290Mi (7%)  390Mi (9%)
  ephemeral-storage  0 (0%)      0 (0%)
  hugepages-1Gi      0 (0%)      0 (0%)
  hugepages-2Mi      0 (0%)      0 (0%)
Events:
  Type    Reason                   Age                    From        Message
  ----    ------                   ----                   ----        -------
  Normal  Starting                 91s                    kube-proxy  
  Normal  NodeHasSufficientMemory  2m17s (x8 over 2m17s)  kubelet     Node kind-control-plane status is now: NodeHasSufficientMemory
  Normal  NodeHasNoDiskPressure    2m17s (x8 over 2m17s)  kubelet     Node kind-control-plane status is now: NodeHasNoDiskPressure
  Normal  NodeHasSufficientPID     2m17s (x7 over 2m17s)  kubelet     Node kind-control-plane status is now: NodeHasSufficientPID
  Normal  Starting                 106s                   kubelet     Starting kubelet.
  Normal  NodeHasSufficientMemory  106s                   kubelet     Node kind-control-plane status is now: NodeHasSufficientMemory
  Normal  NodeHasNoDiskPressure    106s                   kubelet     Node kind-control-plane status is now: NodeHasNoDiskPressure
  Normal  NodeHasSufficientPID     106s                   kubelet     Node kind-control-plane status is now: NodeHasSufficientPID
  Normal  NodeAllocatableEnforced  105s                   kubelet     Updated Node Allocatable limit across pods
  Normal  NodeReady                85s                    kubelet     Node kind-control-plane status is now: NodeReady
pradeep:~$

Let us look at Pods

pradeep:~$kubectl get pods
No resources found in default namespace.

From all namespaces, this time.

pradeep:~$kubectl get pods -A
NAMESPACE            NAME                                         READY   STATUS    RESTARTS   AGE
kube-system          coredns-6d4b75cb6d-jddfp                     1/1     Running   0          2m33s
kube-system          coredns-6d4b75cb6d-xxg4c                     1/1     Running   0          2m33s
kube-system          etcd-kind-control-plane                      1/1     Running   0          2m45s
kube-system          kindnet-gqshf                                1/1     Running   0          2m33s
kube-system          kube-apiserver-kind-control-plane            1/1     Running   0          2m43s
kube-system          kube-controller-manager-kind-control-plane   1/1     Running   0          2m43s
kube-system          kube-proxy-fs4h5                             1/1     Running   0          2m33s
kube-system          kube-scheduler-kind-control-plane            1/1     Running   0          2m43s
local-path-storage   local-path-provisioner-9cd9bd544-cdr6d       1/1     Running   0          2m33s
pradeep:~$

We can see it is very similar to the cluster setup via minikube.

Use the kind get clusters command, to see that we have one cluster named kind.

pradeep:~$kind get clusters
kind
pradeep:~$

Let us create a test nginx pod.

pradeep:~$kubectl run nginx --image=nginx
pod/nginx created
pradeep:~$
pradeep:~$kubectl get pods -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP           NODE                 NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          39s   10.244.0.5   kind-control-plane   <none>           <none>
pradeep:~$

We can see that the pod is successfully Running on the kind-control-plane node.

Let us delete this cluster now

pradeep:~$kind delete cluster
Deleting cluster "kind" ...
pradeep:~$
pradeep:~$kind get clusters
No kind clusters found.
pradeep:~$

This concludes our first test with kind.

Back to Top ↑