Kubernetes by Docker Desktop

Think Different - Dhiraj Patra
6 min readNov 25, 2023

I am using Mac OS with M1 [Apple chip]. You can read my other article for beginning with Kubernetes here

To see the Kubernetes dashboard on Docker Desktop for Mac OS, follow these steps:

  1. Open Docker Desktop.
  2. Click on the Kubernetes tab.
  3. Under Dashboard, click on Open in the browser.

This will open the Kubernetes dashboard in your web browser.

To control the Kubernetes cluster and its pods, you can use the kubectl command-line tool. kubectl is a command-line interface for running commands against Kubernetes clusters.

To get started with kubectl, you will need to create a Kubernetes configuration file. This file will tell kubectl how to connect to your Kubernetes cluster.

To create a Kubernetes configuration file, follow these steps:

  1. Open a terminal window.
  2. Run the following command:
kubectl config view --minify > config

This will create a Kubernetes configuration file called config in your current working directory.

  1. Move the config file to the following directory:
~/.kube/config

Once you have created the Kubernetes configuration file, you can start using kubectl to control your Kubernetes cluster.

Here are some examples of kubectl commands:

# List all pods in the default namespace
kubectl get pods
# List all deployments in the default namespace
kubectl get deployments
# Create a deployment
kubectl create deployment my-deployment --image nginx
# Scale a deployment to 3 replicas
kubectl scale deployment my-deployment --replicas=3
# Delete a deployment
kubectl delete deployment my-deployment

You can find more information about kubectl commands in the Kubernetes documentation: https://kubernetes.io/docs/home/.

Here are some additional tips for using Kubernetes:

  • Use labels and selectors to organize your Kubernetes resources. This will make it easier to manage and find your resources.
  • Use namespaces to isolate your Kubernetes resources from other users and applications.
  • Use Kubernetes resources such as deployments, services, and pods to manage your applications.
  • Use Kubernetes features such as autoscaling and self-healing to make your applications more reliable.

However, you find that `kubectl` error the first time as it installed by Docker Desktop and might not installed in default path when you install directly into your system.

The error message kubectl get pods error: unable to load root certificates: unable to parse bytes as PEM block indicates that Kubernetes is unable to load the root certificates for the Kubernetes cluster. This can happen for a number of reasons, such as:

The root certificates are corrupted or missing.

The root certificates are in an invalid format.

The root certificates are not trusted by Kubernetes.

The error message zsh: command not found: kubectl indicates that the kubectl command is not found in your current shell environment. This can happen for a number of reasons, such as:

  • kubectl is not installed on your system.
  • kubectl is not in your PATH environment variable.
  • You are using a different shell environment than the one where kubectl is installed.

To resolve this error, you can try the following:

  1. Make sure that kubectl is installed on your system. You can install kubectl using your system's package manager or by downloading the kubectl binary from the Kubernetes website.
  2. Make sure that kubectl is in your PATH environment variable. You can check your PATH environment variable by running the following command:
echo $PATH

If kubectl is not in your PATH environment variable, you can add it by editing your .zshrc file. To do this, open your .zshrc file in a text editor and add the following line to the end of the file:

export PATH=$PATH:/path/to/kubectl

Replace /path/to/kubectl with the path to the kubectl binary.

  1. Make sure that you are using the correct shell environment. If you have kubectl installed in a different shell environment, you can switch to that shell environment by running the following command:
zsh

Once you have made sure that kubectl is installed, in your PATH environment variable, and you are using the correct shell environment, you should be able to run the kubectl command without any errors.

If you are still having trouble resolving this error, please provide more information about your environment, such as:

  • What operating system are you using?
  • What version of zsh are you using?
  • How did you install kubectl?

If the output of the ls -la command indicates that the kubectl binary is installed in the /Applications/Docker.app/Contents/Resources/bin directory. This is the default location for the kubectl binary when you install Docker Desktop for Mac.

To resolve the error message zsh: command not found: kubectl, you can add the following line to the end of your .zshrc file:

export PATH=$PATH:/Applications/Docker.app/Contents/Resources/bin

This will add the /Applications/Docker.app/Contents/Resources/bin directory to your PATH environment variable. Once you have added this line to your .zshrc file, you can source the file to make the changes take effect:

source ~/.zshrc

Once you have sourced your .zshrc file, you should be able to run the kubectl command without any errors.

To verify that the kubectl command is working, you can run the following command:

kubectl version

This command should print the version of the kubectl binary.

If you are still having trouble running the kubectl command, you can try the following:

  • Make sure that you have the correct version of kubectl installed. You can check the version of kubectl by running the kubectl version command.
  • Make sure that the kubectl binary is executable. You can check the permissions of the kubectl binary by running the following command:
ls -l /Applications/Docker.app/Contents/Resources/bin/kubectl

If the permissions of the kubectl binary are not set to -rwxr-xr-x, you can change them by running the following command:

chmod +x /Applications/Docker.app/Contents/Resources/bin/kubectl

To get the Kubernetes localhost desktop to see all, you need to make sure that the following are true:

  • Kubernetes is running and accessible on localhost:6443.
  • You have the kubeconfig file configured to connect to your Kubernetes cluster.
  • You are using the correct kubectl context.

To verify that Kubernetes is running and accessible on localhost:6443, you can run the following command:

kubectl cluster-info

This command should print the information about your Kubernetes cluster, including the API server address. If the API server address is not localhost:6443, you need to update your kubeconfig file to point to the correct API server address.

To verify that you have the kubeconfig file configured to connect to your Kubernetes cluster, you can run the following command:

kubectl config view

This command should print the contents of your kubeconfig file. If the kubeconfig file does not contain the information for your Kubernetes cluster, you need to update it.

To verify that you are using the correct kubectl context, you can run the following command:

kubectl config current-context

This command should print the name of the current kubectl context. If the current kubectl context is not pointing to your Kubernetes cluster, you need to switch to the correct context.

Once you have verified that Kubernetes is running and accessible, your kubeconfig file is configured correctly, and you are using the correct kubectl context, you should be able to see all of the resources in your Kubernetes cluster.

To see all of the resources in your Kubernetes cluster without SSL localhost type, you can use the following command:

kubectl get all -o wide

This command will list all of the resources in all of the namespaces in your Kubernetes cluster, including the internal IP addresses of the services.

For example, to see all of the resources in the default namespace without SSL localhost type, you would run the following command:

kubectl get all -o wide -n default

This will output a table of all of the resources in the default namespace, including the internal IP addresses of the services.

You can then access the services using their internal IP addresses. For example, to access the Kubernetes dashboard, you would open the following URL in your web browser:

http://10.96.0.1:443

You can also use the kubectl proxy command to start a proxy server on your local machine that will forward requests to the Kubernetes cluster. This can be useful if you want to access the Kubernetes cluster without having to remember the internal IP addresses of the services.

To start the kubectl proxy server, run the following command:

kubectl proxy

Once the kubectl proxy the server is running, you can access the services in the Kubernetes cluster using the following URL:

http://localhost:8001/<resource-name>

For example, to access the Kubernetes dashboard, you would open the following URL in your web browser:

http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

--

--

Think Different - Dhiraj Patra

I am a Software architect for AI, ML, IoT microservices cloud applications. Love to learn and share. https://dhirajpatra.github.io