K8s 之 Minikube 初步体验

503 阅读3分钟

这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战

简介

目前想学习和了解云原生相关的东西,首选就是K8s,在官网上介绍Minikube是一个单体简单的,可以用于快速入门的东西,由于在本篇文章中探索下

安装运行

本人是Win11系统,下面的讲解也都是基于Win11的,记得安装相应的Docker环境

在下面的链接中,有相关系统的下载地址,下载后按照即可:

由于懒,没有设置环境变量,直接进入安装目录,运行命令:

cd D:\SoftWare\Kubernetes\Minikube\
.\minikube.exe start

需要等待一段时间,需求去下载和拉取镜像,完成后输出如下,不得不说,哪些表情还挺花里胡哨的,后面打算研究下,这个是怎么搞出来的!

D:\SoftWare\Kubernetes\Minikube> .\minikube.exe start
😄  Microsoft Windows 11 Home China 10.0.22000 Build 22000 上的 minikube v1.25.1
✨  自动选择 docker 驱动
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
💾  Downloading Kubernetes v1.23.1 preload ...
    > preloaded-images-k8s-v16-v1...: 504.42 MiB / 504.42 MiB  100.00% 8.40 MiB
    > index.docker.io/kicbase/sta...: 378.98 MiB / 378.98 MiB  100.00% 1.76 MiB
❗  minikube was unable to download gcr.io/k8s-minikube/kicbase:v0.0.29, but successfully downloaded docker.io/kicbase/stable:v0.0.29 as a fallback image
🔥  Creating docker container (CPUs=2, Memory=8000MB) ...
❗  This container is having trouble accessing https://k8s.gcr.io
💡  To pull new external images, you may need to configure a proxy: https://minikube.sigs.k8s.io/docs/reference/networking/proxy/
🐳  正在 Docker 20.10.12 中准备 Kubernetes v1.23.1…
    ▪ kubelet.housekeeping-interval=5m
    ▪ Generating certificates and keys ...
    ▪ Booting up control plane ...
    ▪ Configuring RBAC rules ...
🔎  Verifying Kubernetes components...
    ▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5
🌟  Enabled addons: storage-provisioner, default-storageclass
🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

跟着教程命令输出一下,看看已经内置很多的东西

关键的一点是,在系统中使用docker ps命令,并没有看到这些容器,感觉不是用docker去创建的,有点像直接用RunC之类搞的,没有关联到Docker,前几天补了点知识,后面研究下

D:\SoftWare\Kubernetes\Minikube> kubectl get po -A
NAMESPACE     NAME                               READY   STATUS    RESTARTS      AGE
kube-system   coredns-64897985d-kk2ct            1/1     Running   0             31s
kube-system   etcd-minikube                      1/1     Running   0             42s
kube-system   kube-apiserver-minikube            1/1     Running   0             45s
kube-system   kube-controller-manager-minikube   1/1     Running   0             42s
kube-system   kube-proxy-x2lp5                   1/1     Running   0             31s
kube-system   kube-scheduler-minikube            1/1     Running   0             42s
kube-system   storage-provisioner                1/1     Running   1 (24s ago)   39s

然后是开启网页管理

D:\SoftWare\Kubernetes\Minikube> .\minikube.exe dashboard
🔌  正在开启 dashboard ...
    ▪ Using image kubernetesui/dashboard:v2.3.1
    ▪ Using image kubernetesui/metrics-scraper:v1.0.7
🤔  正在验证 dashboard 运行情况 ...
🚀  Launching proxy ...
🤔  正在验证 proxy 运行状况 ...
🎉  Opening http://127.0.0.1:64442/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...

界面第一感觉还不错

image.png

部署与运行应用

接下来我们来试着部署运行一个应用,教程中的示例运行不动,好像是网络访问有问题,我自己上传了一个简单的go的HTTP服务镜像,用于尝试,你们也可以直接pull下来,应用已经上传到docker hub中了

下面的命令是:

  • 部署运行应用:名称 http-example-go 和对应的镜像
  • 应用暴露的服务端口:8080
  • 类似docker 的 -p,映射端口到宿主机
kubectl.exe create deployment http-example-go --image=lw1243925457/http_example:v1
kubectl.exe expose deployment http-example-go --type=NodePort --port=8080

kubectl.exe port-forward service/http-example-go 8080:8080

Forwarding from 127.0.0.1:8080 -> 8080
Forwarding from [::1]:8080 -> 8080
Handling connection for 8080
Handling connection for 8080
Handling connection for 8080

然后我们就可以访问了: http://127.0.0.1:8080/v1/hello

总结

本篇介绍了Minicube的初步体验使用,目前还没有感受到K8s的强大,得继续研究和学习

后面尝试部署K8s集群,看看和单体有什么区别,部署应用之类的方不方便

参考链接