Install KVM on Ubuntu 24.04<\/a><\/p>\n\n\n\nIn this tutorial, we will use Docker driver with Minikube.<\/p>\n\n\n\n
Internet Access<\/h4>\n\n\n\n Ensure the system has Internet connection. This is required to download various Minikube components.<\/p>\n\n\n\n
Install Kubectl<\/h4>\n\n\n\n Minikube ships with kubectl<\/strong> integrated already (minikube kubectl — <kubectl command line options><\/strong>).<\/p>\n\n\n\nWhile this is not entirely necessary, you can just install it by running the commands below.<\/p>\n\n\n\n
curl -LO \"https:\/\/dl.k8s.io\/release\/$(curl -L -s https:\/\/dl.k8s.io\/release\/stable.txt)\/bin\/linux\/amd64\/kubectl\"<\/code><\/pre>\n\n\n\nsudo install -o root -g root -m 0755 kubectl \/usr\/local\/bin\/kubectl<\/code><\/pre>\n\n\n\nVerify the kubectl version;<\/p>\n\n\n\n
kubectl version --client --output=yaml<\/code><\/pre>\n\n\n\nclientVersion:\n buildDate: \"2023-10-18T11:42:52Z\"\n compiler: gc\n gitCommit: a8a1abc25cad87333840cd7d54be2efaf31a3177\n gitTreeState: clean\n gitVersion: v1.28.3\n goVersion: go1.20.10\n major: \"1\"\n minor: \"28\"\n platform: linux\/amd64\nkustomizeVersion: v5.0.4-0.20230601165947-6ce0bf390ce3\n<\/code><\/pre>\n\n\n\nAs already mentioned, you can use the kubectl that ships with Minikube<\/p>\n\n\n\n
(Run the command after installing Minikube<\/strong>)<\/p>\n\n\n\nminikube kubectl -- version --client -o yaml<\/code><\/pre>\n\n\n\nInstall Minikube<\/h3>\n\n\n\n You can easily install Minikube by running the command;<\/p>\n\n\n\n
curl -LO https:\/\/storage.googleapis.com\/minikube\/releases\/latest\/minikube_latest_amd64.deb<\/code><\/pre>\n\n\n\nsudo apt install .\/minikube_latest_amd64.deb<\/code><\/pre>\n\n\n\nConfirm the installation by checking the version of installed Minikube;<\/p>\n\n\n\n
minikube version<\/code><\/pre>\n\n\n\nSample output;<\/p>\n\n\n\n
minikube version: v1.32.0\ncommit: 8220a6eb95f0a4d75f7f2d7b14cef975f050512d<\/code><\/pre>\n\n\n\nStart Minikube<\/h3>\n\n\n\n We are running the next commands with a non root user;<\/p>\n\n\n\n
su - kifarunix<\/code><\/pre>\n\n\n\nAdd your user to Docker group;<\/p>\n\n\n\n
sudo usermod -aG docker $USER<\/code><\/pre>\n\n\n\nLog out and login as user again<\/p>\n\n\n\n
Ensure you are part of the Docker group;<\/p>\n\n\n\n
id<\/code><\/pre>\n\n\n\nuid=1000(kifarunix) gid=1000(kifarunix) groups=1000(kifarunix),100(users),992(docker),995(vboxsf)<\/code><\/pre>\n\n\n\nMinikube Help Page<\/h4>\n\n\n\n Run the command below to check Minikube help information;<\/p>\n\n\n\n
minikube --help<\/code><\/pre>\n\n\n\n\nminikube provisions and manages local Kubernetes clusters optimized for development workflows.\n\nBasic Commands:\n start Starts a local Kubernetes cluster\n status Gets the status of a local Kubernetes cluster\n stop Stops a running local Kubernetes cluster\n delete Deletes a local Kubernetes cluster\n dashboard Access the Kubernetes dashboard running within the minikube cluster\n pause pause Kubernetes\n unpause unpause Kubernetes\n\nImages Commands:\n docker-env Provides instructions to point your terminal's docker-cli to the Docker Engine inside minikube.\n(Useful for building docker images directly inside minikube)\n podman-env Configure environment to use minikube's Podman service\n cache Manage cache for images\n image Manage images\n\nConfiguration and Management Commands:\n addons Enable or disable a minikube addon\n config Modify persistent configuration values\n profile Get or list the current profiles (clusters)\n update-context Update kubeconfig in case of an IP or port change\n\nNetworking and Connectivity Commands:\n service Returns a URL to connect to a service\n tunnel Connect to LoadBalancer services\n\nAdvanced Commands:\n mount Mounts the specified directory into minikube\n ssh Log into the minikube environment (for debugging)\n kubectl Run a kubectl binary matching the cluster version\n node Add, remove, or list additional nodes\n cp Copy the specified file into minikube\n\nTroubleshooting Commands:\n ssh-key Retrieve the ssh identity key path of the specified node\n ssh-host Retrieve the ssh host key of the specified node\n ip Retrieves the IP address of the specified node\n logs Returns logs to debug a local Kubernetes cluster\n update-check Print current and latest version number\n version Print the version of minikube\n options Show a list of global command-line options (applies to all commands).\n\nOther Commands:\n completion Generate command completion for a shell\n license Outputs the licenses of dependencies to a directory\n\nUse \"minikube --help\" for more information about a given command.\n<\/code><\/pre>\n\n\n\nStart Local Kubernetes cluster<\/h4>\n\n\n\n You can show start Minikube local kubernetes cluster by running;<\/p>\n\n\n\n
minikube start --driver=docker<\/code><\/pre>\n\n\n\nSo what does this command do?<\/p>\n\n\n\n
\nIt starts minikube control plane node in cluster.<\/li>\n\n\n\n Pulls the base images required to create a simple Kubernetes cluster<\/li>\n\n\n\n Next, it downloads preconfigured set of Kubernetes binaries to bootstrap the cluster.<\/li>\n\n\n\n Setup Kubernetes on Docker (VirtualBox is used as the default Minikube driver)<\/li>\n\n\n\n Configures container networking interface<\/li>\n\n\n\n Enable some Minikube add-ons such as for storage.<\/li>\n<\/ul>\n\n\n\nSee sample output;<\/p>\n\n\n\n
itnixpro@noble-numbat:~$ minikube start --driver=docker\n\ud83d\ude04 minikube v1.32.0 on Ubuntu 24.04\n\u2728 Using the docker driver based on user configuration\n\ud83d\udccc Using Docker driver with root privileges\n\ud83d\udc4d Starting control plane node minikube in cluster minikube\n\ud83d\ude9c Pulling base image ...\n\ud83d\udcbe Downloading Kubernetes v1.28.3 preload ...\n > preloaded-images-k8s-v18-v1...: 403.35 MiB \/ 403.35 MiB 100.00% 34.57 M\n > gcr.io\/k8s-minikube\/kicbase...: 453.90 MiB \/ 453.90 MiB 100.00% 38.19 M\n\ud83d\udd25 Creating docker container (CPUs=2, Memory=2200MB) ...\n\ud83d\udc33 Preparing Kubernetes v1.28.3 on Docker 24.0.7 ...\n \u25aa Generating certificates and keys ...\n \u25aa Booting up control plane ...\n \u25aa Configuring RBAC rules ...\n\ud83d\udd17 Configuring bridge CNI (Container Networking Interface) ...\n \u25aa Using image gcr.io\/k8s-minikube\/storage-provisioner:v5\n\ud83d\udd0e Verifying Kubernetes components...\n\ud83c\udf1f Enabled addons: default-storageclass, storage-provisioner\n\ud83d\udca1 kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'\n\ud83c\udfc4 Done! kubectl is now configured to use \"minikube\" cluster and \"default\" namespace by default\n<\/code><\/pre>\n\n\n\nCheck Minikube Status<\/h4>\n\n\n\n You can check Minikube status using the command below;<\/p>\n\n\n\n
minikube status<\/code><\/pre>\n\n\n\nminikube\ntype: Control Plane\nhost: Running\nkubelet: Running\napiserver: Running\nkubeconfig: Configured\n<\/code><\/pre>\n\n\n\nAdministering Kubernetes on Minikube<\/h3>\n\n\n\n The Minikube simple kubernetes cluster is now up!<\/p>\n\n\n\n
Minikube SSH Login<\/h4>\n\n\n\n Just like how you would login to a docker container with docker exec -it<\/strong>, command, you can SSH into Minikube<\/strong> container using the command below;<\/p>\n\n\n\nminikube ssh<\/code><\/pre>\n\n\n\nYou land into the the minikube docker shell.<\/p>\n\n\n\n
Run docker commands inside;<\/p>\n\n\n\n
docker ps<\/code><\/pre>\n\n\n\nCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES\n887b10137478 6e38f40d628d \"\/storage-provisioner\" 13 minutes ago Up 13 minutes k8s_storage-provisioner_storage-provisioner_kube-system_229d2576-be37-45f4-8e2b-914b97e6a531_1\n12cbc1a0d610 ead0a4a53df8 \"\/coredns -conf \/etc\u2026\" 13 minutes ago Up 13 minutes k8s_coredns_coredns-5dd5756b68-nb75b_kube-system_449d5ef3-ff4e-4376-912b-8bb3d5694b34_0\n0a3f880da164 bfc896cf80fb \"\/usr\/local\/bin\/kube\u2026\" 13 minutes ago Up 13 minutes k8s_kube-proxy_kube-proxy-fj4hh_kube-system_b508788b-d5e7-470a-a1e1-607bfc68bd13_0\n676bca7c2953 registry.k8s.io\/pause:3.9 \"\/pause\" 13 minutes ago Up 13 minutes k8s_POD_coredns-5dd5756b68-nb75b_kube-system_449d5ef3-ff4e-4376-912b-8bb3d5694b34_0\n38783b3dc7dc registry.k8s.io\/pause:3.9 \"\/pause\" 13 minutes ago Up 13 minutes k8s_POD_kube-proxy-fj4hh_kube-system_b508788b-d5e7-470a-a1e1-607bfc68bd13_0\neb9c9724e81a registry.k8s.io\/pause:3.9 \"\/pause\" 13 minutes ago Up 13 minutes k8s_POD_storage-provisioner_kube-system_229d2576-be37-45f4-8e2b-914b97e6a531_0\nd95f881c9586 537434729123 \"kube-apiserver --ad\u2026\" 14 minutes ago Up 14 minutes k8s_kube-apiserver_kube-apiserver-minikube_kube-system_55b4bbe24dac3803a7379f9ae169d6ba_0\n3b283c57d7e7 10baa1ca1706 \"kube-controller-man\u2026\" 14 minutes ago Up 14 minutes k8s_kube-controller-manager_kube-controller-manager-minikube_kube-system_7da72fc2e2cfb27aacf6cffd1c72da00_0\n40f7c0407d98 73deb9a3f702 \"etcd --advertise-cl\u2026\" 14 minutes ago Up 14 minutes k8s_etcd_etcd-minikube_kube-system_9aac5b5c8815def09a2ef9e37b89da55_0\nc5046b7d378d 6d1b4fd1b182 \"kube-scheduler --au\u2026\" 14 minutes ago Up 14 minutes k8s_kube-scheduler_kube-scheduler-minikube_kube-system_75ac196d3709dde303d8a81c035c2c28_0\n55bae56fd1cf registry.k8s.io\/pause:3.9 \"\/pause\" 14 minutes ago Up 14 minutes k8s_POD_kube-controller-manager-minikube_kube-system_7da72fc2e2cfb27aacf6cffd1c72da00_0\n5f8a2f23d88e registry.k8s.io\/pause:3.9 \"\/pause\" 14 minutes ago Up 14 minutes k8s_POD_kube-apiserver-minikube_kube-system_55b4bbe24dac3803a7379f9ae169d6ba_0\nb8b3522d0385 registry.k8s.io\/pause:3.9 \"\/pause\" 14 minutes ago Up 14 minutes k8s_POD_etcd-minikube_kube-system_9aac5b5c8815def09a2ef9e37b89da55_0\nbb8d527c26a5 registry.k8s.io\/pause:3.9 \"\/pause\" 14 minutes ago Up 14 minutes k8s_POD_kube-scheduler-minikube_kube-system_75ac196d3709dde303d8a81c035c2c28_0\n<\/code><\/pre>\n\n\n\nCheck docker images;<\/p>\n\n\n\n
docker images<\/code><\/pre>\n\n\n\nREPOSITORY TAG IMAGE ID CREATED SIZE\nregistry.k8s.io\/kube-apiserver v1.28.3 537434729123 5 months ago 126MB\nregistry.k8s.io\/kube-controller-manager v1.28.3 10baa1ca1706 5 months ago 122MB\nregistry.k8s.io\/kube-scheduler v1.28.3 6d1b4fd1b182 5 months ago 60.1MB\nregistry.k8s.io\/kube-proxy v1.28.3 bfc896cf80fb 5 months ago 73.1MB\nregistry.k8s.io\/etcd 3.5.9-0 73deb9a3f702 10 months ago 294MB\nregistry.k8s.io\/coredns\/coredns v1.10.1 ead0a4a53df8 13 months ago 53.6MB\nregistry.k8s.io\/pause 3.9 e6f181688397 17 months ago 744kB\ngcr.io\/k8s-minikube\/storage-provisioner v5 6e38f40d628d 3 years ago 31.5MB\n<\/code><\/pre>\n\n\n\ndocker system df<\/code><\/pre>\n\n\n\nTYPE TOTAL ACTIVE SIZE RECLAIMABLE\nImages 8 8 752.4MB 4.057MB (0%)\nContainers 15 14 162B 0B (0%)\nLocal Volumes 0 0 0B 0B\nBuild Cache 0 0 0B 0B\n<\/code><\/pre>\n\n\n\nExit when done;<\/p>\n\n\n\n
exit<\/code><\/pre>\n\n\n\nLet’s run a few Kubernetes commands;<\/p>\n\n\n\n
Get Kubernetes cluster information;<\/p>\n\n\n\n
minikube kubectl -- cluster-info<\/code><\/pre>\n\n\n\n > kubectl.sha256: 64 B \/ 64 B [-------------------------] 100.00% ? p\/s 0s\n > kubectl: 47.56 MiB \/ 47.56 MiB [----------] 100.00% 197.12 MiB p\/s 400ms\nKubernetes control plane is running at https:\/\/192.168.49.2:8443\nCoreDNS is running at https:\/\/192.168.49.2:8443\/api\/v1\/namespaces\/kube-system\/services\/kube-dns:dns\/proxy\n\nTo further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.\n<\/code><\/pre>\n\n\n\nLists all the nodes in the current namespace.<\/p>\n\n\n\n
minikube kubectl -- get nodes<\/code><\/pre>\n\n\n\nNAME STATUS ROLES AGE VERSION\nminikube Ready control-plane 17m v1.28.3\n<\/code><\/pre>\n\n\n\nList all services in the current namespace;<\/p>\n\n\n\n
minikube kubectl -- get services<\/code><\/pre>\n\n\n\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nkubernetes ClusterIP 10.96.0.1 443\/TCP 18m\n<\/code><\/pre>\n\n\n\nYou can run other commands as you wish.<\/p>\n\n\n\n
Deploy Simple Kubernets Application<\/h4>\n\n\n\n Let’s create a simple Nginx manifest file to define the desired state;<\/p>\n\n\n\n
vim nginx-deployment.yaml<\/code><\/pre>\n\n\n\nPaste the following content;<\/p>\n\n\n\n
\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n name: nginx-deployment\nspec:\n replicas: 2\n selector:\n matchLabels:\n app: nginx\n template:\n metadata:\n labels:\n app: nginx\n spec:\n containers:\n - name: nginx\n image: nginx:latest\n ports:\n - containerPort: 80\n<\/code><\/pre>\n\n\n\nDeploy Nginx;<\/p>\n\n\n\n
minikube kubectl -- apply -f nginx-deployment.yaml<\/code><\/pre>\n\n\n\nList deployments;<\/p>\n\n\n\n
minikube kubectl -- get deployments<\/code><\/pre>\n\n\n\n\nNAME READY UP-TO-DATE AVAILABLE AGE\nnginx-deployment 0\/2 2 0 13s\n<\/code><\/pre>\n\n\n\nCheck the pods. You should see two of them due to replica of 2;<\/p>\n\n\n\n
minikube kubectl -- get pods<\/code><\/pre>\n\n\n\n\nNAME READY STATUS RESTARTS AGE\nnginx-deployment-6b7f675859-ljsh8 1\/1 Running 0 7s\nnginx-deployment-6b7f675859-qvnpn 1\/1 Running 0 7s\n\n<\/code><\/pre>\n\n\n\nNext, you need to expose this service for external access;<\/p>\n\n\n\n
vim nginx-service.yaml<\/code><\/pre>\n\n\n\n\napiVersion: v1\nkind: Service\nmetadata:\n name: nginx-service\nspec:\n type: NodePort\n selector:\n app: nginx\n ports:\n - name: http\n port: 80\n targetPort: 80\n nodePort: 30000 # Choose an available port number\n<\/code><\/pre>\n\n\n\nEnsure no other service is being exposed via port 31500\/tcp defined above.<\/p>\n\n\n\n
Apply the service;<\/p>\n\n\n\n
minikube kubectl -- apply -f nginx-service.yaml<\/code><\/pre>\n\n\n\nCheck the services to find out an external port to access it;<\/p>\n\n\n\n
minikube kubectl -- get services<\/code><\/pre>\n\n\n\n\nNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\nkubernetes ClusterIP 10.96.0.1 443\/TCP 60m\nnginx-service NodePort 10.107.130.31 80:30000\/TCP 3s\n<\/code><\/pre>\n\n\n\nget more details;<\/p>\n\n\n\n
minikube kubectl -- describe service nginx-service<\/code><\/pre>\n\n\n\n\nName: nginx-service\nNamespace: default\nLabels: \nAnnotations: \nSelector: app=nginx\nType: NodePort\nIP Family Policy: SingleStack\nIP Families: IPv4\nIP: 10.107.130.31\nIPs: 10.107.130.31\nPort: http 80\/TCP\nTargetPort: 80\/TCP\nNodePort: http 30000\/TCP\nEndpoints: 10.244.0.8:80,10.244.0.9:80\nSession Affinity: None\nExternal Traffic Policy: Cluster\nEvents: \n\n<\/code><\/pre>\n\n\n\nAccessing the Service. You can print the url or open service on the default browser;<\/p>\n\n\n\n
minikube kubectl -- service nginx-service<\/code><\/pre>\n\n\n\nSample browser;<\/p>\n\n\n\n <\/figure>\n\n\n\nand command line output;<\/p>\n\n\n\n
\n|-----------|---------------|-------------|---------------------------|\n| NAMESPACE | NAME | TARGET PORT | URL |\n|-----------|---------------|-------------|---------------------------|\n| default | nginx-service | http\/80 | http:\/\/192.168.49.2:30000 |\n|-----------|---------------|-------------|---------------------------|\n\ud83c\udf89 Opening service default\/nginx-service in default browser...\n<\/code><\/pre>\n\n\n\nUnfortunately, our service is exposed via docker bridge interface IP and hence, makes it hard to access externally.<\/p>\n\n\n\n
You can do port forwarding of Nginx target port to some other unused ports as follows;<\/p>\n\n\n\n
minikube kubectl -- port-forward service\/nginx-service --address=0.0.0.0 8080:80<\/code><\/pre>\n\n\n\nSample output;<\/p>\n\n\n\n
Forwarding from 0.0.0.0:8080 -> 80\nHandling connection for 8080\nHandling connection for 8080<\/code><\/pre>\n\n\n\nPress CTRL+C to cancel.<\/p>\n\n\n\n
You should now be able to access your App outside Minikube cluster, http:\/\/<server-IP>:8080<\/code><\/strong>.<\/p>\n\n\n\n <\/figure>\n\n\n\nYou can now proceed to explore Kubernetes!<\/p>\n\n\n\n
Enable Minikube Addons<\/h3>\n\n\n\n Addons are components that can be used to extend the functionality of Minikube;<\/p>\n\n\n\n
There is quite a number of addons;<\/p>\n\n\n\n
minikube addons list<\/code><\/pre>\n\n\n\n\n|-----------------------------|----------|--------------|--------------------------------|\n| ADDON NAME | PROFILE | STATUS | MAINTAINER |\n|-----------------------------|----------|--------------|--------------------------------|\n| ambassador | minikube | disabled | 3rd party (Ambassador) |\n| auto-pause | minikube | disabled | Google |\n| cloud-spanner | minikube | disabled | Google |\n| csi-hostpath-driver | minikube | disabled | Kubernetes |\n| dashboard | minikube | disabled | Kubernetes |\n| default-storageclass | minikube | enabled \u2705 | Kubernetes |\n| efk | minikube | disabled | 3rd party (Elastic) |\n| freshpod | minikube | disabled | Google |\n| gcp-auth | minikube | disabled | Google |\n| gvisor | minikube | disabled | Google |\n| headlamp | minikube | disabled | 3rd party (kinvolk.io) |\n| helm-tiller | minikube | disabled | 3rd party (Helm) |\n| inaccel | minikube | disabled | 3rd party (InAccel |\n| | | | [info@inaccel.com]) |\n| ingress | minikube | disabled | Kubernetes |\n| ingress-dns | minikube | disabled | Google |\n| istio | minikube | disabled | 3rd party (Istio) |\n| istio-provisioner | minikube | disabled | 3rd party (Istio) |\n| kong | minikube | disabled | 3rd party (Kong HQ) |\n| kubevirt | minikube | disabled | 3rd party (KubeVirt) |\n| logviewer | minikube | disabled | 3rd party (unknown) |\n| metallb | minikube | disabled | 3rd party (MetalLB) |\n| metrics-server | minikube | disabled | Kubernetes |\n| nvidia-driver-installer | minikube | disabled | Google |\n| nvidia-gpu-device-plugin | minikube | disabled | 3rd party (Nvidia) |\n| olm | minikube | disabled | 3rd party (Operator Framework) |\n| pod-security-policy | minikube | disabled | 3rd party (unknown) |\n| portainer | minikube | disabled | 3rd party (Portainer.io) |\n| registry | minikube | disabled | Google |\n| registry-aliases | minikube | disabled | 3rd party (unknown) |\n| registry-creds | minikube | disabled | 3rd party (UPMC Enterprises) |\n| storage-provisioner | minikube | enabled \u2705 | Google |\n| storage-provisioner-gluster | minikube | disabled | 3rd party (Gluster) |\n| volumesnapshots | minikube | disabled | Kubernetes |\n|-----------------------------|----------|--------------|--------------------------------|\n<\/code><\/pre>\n\n\n\nYou can enable an addon using the command;<\/p>\n\n\n\n
minikube addons enable <name><\/code><\/pre>\n\n\n\nFor example, enable Minikube dashboard;<\/p>\n\n\n\n
minikube addons enable dashboard<\/code><\/pre>\n\n\n\n\n\ud83d\udca1 dashboard is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.\nYou can view the list of minikube maintainers at: https:\/\/github.com\/kubernetes\/minikube\/blob\/master\/OWNERS\n \u25aa Using image docker.io\/kubernetesui\/dashboard:v2.7.0\n \u25aa Using image docker.io\/kubernetesui\/metrics-scraper:v1.0.8\n\ud83d\udca1 Some dashboard features require the metrics-server addon. To enable all features please run:\n\n\tminikube addons enable metrics-server\t\n\n\n\ud83c\udf1f The 'dashboard' addon is enabled\n\n<\/code><\/pre>\n\n\n\nAlso enable Metrics server;<\/p>\n\n\n\n
minikube addons enable metrics-server<\/code><\/pre>\n\n\n\nYou can check the services for these addons on the kube-system namespace;<\/p>\n\n\n\n
minikube kubectl -- get services --all-namespaces<\/code><\/pre>\n\n\n\nNAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE\ndefault kubernetes ClusterIP 10.96.0.1 443\/TCP 27m\nkube-system kube-dns ClusterIP 10.96.0.10 53\/UDP,53\/TCP,9153\/TCP 27m\nkube-system metrics-server ClusterIP 10.109.17.235 443\/TCP 4m9s\nkubernetes-dashboard dashboard-metrics-scraper ClusterIP 10.109.191.202 8000\/TCP 3m56s\nkubernetes-dashboard kubernetes-dashboard ClusterIP 10.110.150.153 80\/TCP 3m56s\n<\/code><\/pre>\n\n\n\nTo access the dashboard externally;<\/p>\n\n\n\n
minikube kubectl -- port-forward service\/kubernetes-dashboard -n kubernetes-dashboard --address=0.0.0.0 8888:80<\/code><\/pre>\n\n\n\nYou dashboard is now availanle on http:\/\/minikube-server-IP:8888<\/strong>;<\/p>\n\n\n\n\n\t\t\t\n\t\t\t\t \n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\nExplore the dashboard further.<\/p>\n\n\n\n
Stop and Delete Minikube Profile<\/h3>\n\n\n\n You can always stop and delete Minikube profile;<\/p>\n\n\n\n
minikube profile list<\/code><\/pre>\n\n\n\nSample output;<\/p>\n\n\n\n
\n|----------|-----------|---------|--------------|------|---------|---------|-------|--------|\n| Profile | VM Driver | Runtime | IP | Port | Version | Status | Nodes | Active |\n|----------|-----------|---------|--------------|------|---------|---------|-------|--------|\n| minikube | docker | docker | 192.168.49.2 | 8443 | v1.26.3 | Running | 1 | * |\n|----------|-----------|---------|--------------|------|---------|---------|-------|--------|\n<\/code><\/pre>\n\n\n\nOr get current profile;<\/p>\n\n\n\n
minikube profile<\/code><\/pre>\n\n\n\nStop Minikube;<\/p>\n\n\n\n
minikube stop<\/code><\/pre>\n\n\n\nDelete current profile;<\/p>\n\n\n\n
minikube delete<\/code><\/pre>\n\n\n\nor specific profile;<\/p>\n\n\n\n
minikube delete --profile <profile name><\/code><\/pre>\n\n\n\nSee example;<\/p>\n\n\n\n
minikube delete --profile minikube<\/code><\/pre>\n\n\n\n\n\ud83d\udd25 Deleting \"minikube\" in docker ...\n\ud83d\udd25 Deleting container \"minikube\" ...\n\ud83d\udd25 Removing \/home\/kifarunix\/.minikube\/machines\/minikube ...\n\ud83d\udc80 Removed all traces of the \"minikube\" cluster.\n<\/code><\/pre>\n\n\n\nOr;<\/p>\n\n\n\n
minikube delete --all --purge<\/code><\/pre>\n\n\n\nAnd that concludes our guide on how to install Minikube on Ubuntu 24.04.<\/p>\n\n\n\n
Further Reading<\/h3>\n\n\n\n Read more on getting started with Minikube<\/a>.<\/p>\n\n\n\nOther Tutorials;<\/h3>\n\n\n\n Monitor Docker Swarm and Container metrics using Metricbeat<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"If you are planning on getting started with Kubernetes, then installing Minikube on Ubuntu 24.04 might be the first step you want to take. Minikube<\/p>\n","protected":false},"author":10,"featured_media":17376,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"rank_math_lock_modified_date":false,"footnotes":""},"categories":[1076,1077,121,1668],"tags":[7431,7432],"class_list":["post-22010","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-containers","category-docker","category-howtos","category-kubernetes","tag-install-minikube-on-ubuntu-24-04","tag-minibute-install-ubuntu","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-50","resize-featured-image"],"_links":{"self":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/22010"}],"collection":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/comments?post=22010"}],"version-history":[{"count":3,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/22010\/revisions"}],"predecessor-version":[{"id":22013,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/posts\/22010\/revisions\/22013"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media\/17376"}],"wp:attachment":[{"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/media?parent=22010"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/categories?post=22010"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kifarunix.com\/wp-json\/wp\/v2\/tags?post=22010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}