在桌面电脑上使用Docker和Minikube构建Kubernetes(K8S)试验环境,为学习和测试提供了一个理想的平台。Docker的容器化技术允许在隔离的环境中运行应用,而Minikube则简化了在单节点上部署和管理Kubernetes集群的过程。这种组合使得个人用户能够在本地机器上轻松搭建和操作一个K8S环境,无需复杂的硬件设施。
通过安装Docker和Minikube,我们可以快速启动一个基本的Kubernetes集群,进行应用部署、性能监控和功能实践等操作。这种方法特别适合初学者和开发者,可以在这个环境中实验不同的配置和应用,而无需担心高成本或影响到生产环境。
尽管这种在PC端构建的K8S试验环境在性能和规模上有所限制,但它提供了一个低成本、高效的学习和测试平台。对于希望深入了解Kubernetes工作原理和应用的个人来说,是一个极好的起点。
下面是安装部署过程供大家参考:
1. 安装Docker Desktop
-
下载Docker Desktop:
- 访问 Docker官网安装链接并下载适用于Windows的Docker Desktop安装程序。
-
安装Docker Desktop:
- 双击下载的安装文件并遵循安装向导的指示完成安装。
- 安装完成后,启动Docker Desktop,示例如下:
-
配置Docker Desktop:
- 右击系统托盘中的Docker图标,选择“Settings”。
- 确保在“General”选项中启用了“Use WSL 2 based engine”(如果你的系统支持)。
- 在“Resources”中,根据需要配置CPU和内存分配。
2. 安装Minikube
-
安装Hyper-V和Windows Subsystem for Linux (WSL):
- 打开“控制面板” -> “程序” -> “启用或关闭Windows功能”。
- 勾选“Hyper-V”和“适用于Linux的Windows子系统”,然后按照提示重启电脑。
-
windows 10下载并安装Minikube:
- 访问 Minikube官网 并下载Windows版的Minikube安装程序,或者直接从这个已经下载好的CSDN链接来下载:【免费】K8S集群的windows单机学习环境minikube-installer.exe资源-CSDN文库
- 将下载的文件移动到一个你可以访问的目录(例如
C:\minikube
),并将该目录添加到系统的环境变量PATH中。 - 或者采用PowerShell脚本直接来下载,并设置到系统中路径:
New-Item -Path 'c:\' -Name 'minikube' -ItemType Directory -Force
Invoke-WebRequest -OutFile 'c:\minikube\minikube.exe' -Uri 'https://github.com/kubernetes/minikube/releases/latest/download/minikube-windows-amd64.exe' -UseBasicParsing
$oldPath = [Environment]::GetEnvironmentVariable('Path', [EnvironmentVariableTarget]::Machine)
if ($oldPath.Split(';') -inotcontains 'C:\minikube'){
[Environment]::SetEnvironmentVariable('Path', $('{0};C:\minikube' -f $oldPath), [EnvironmentVariableTarget]::Machine)
}
MAC OS 下载和安装
amd64版:【免费】用于在MAC本地学习K8S的minikube-darwin-amd64资源-CSDN文库
sudo install minikube-darwin-amd64 /usr/local/bin/minikube
arm64版:【免费】用于在MAC本地学习K8S的集群安装minikube-darwin-arm64资源-CSDN文库
sudo install minikube-darwin-arm64 /usr/local/bin/minikube
3.启动Minikube
打开命令提示符或PowerShell,运行 minikube start
minikube start
命令执行之后如下图:
4、和Minikube集群进行交互
安装kubectl
在Windows上,你可以下载kubelctl.exe文件,将其放在minikube.exe相同的文件夹下。
链接:https://pan.quark.cn/s/3494d8c859fb
提取码:MU8B
在macOS或Linux上,通常可以使用包管理器,如brew install kubectl。
验证安装:运行kubectl version --client来验证安装。
测试获取集群上的pod
kubectl get pod -A
执行结果:
5、在minikube上部署应用
创建一个示例deployment并在端口 8080 上公开它:
kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080
执行结果如下:
查看Service,执行如下语句:
kubectl get services hello-minikube
执行结果如下:
将服务端口转发,执行如下语句:
kubectl port-forward service/hello-minikube 7080:8080
执行结果如下:
然后在浏览器栏中输入: http://localhost:7080/.
返回sample service 返回的结果
6、管理minikube集群
停止minikube
minikube stop
改变缺省的内存限制(需要重启)
minikube config set memory 9001
浏览易于安装的minikube插件
minikube addons list
创建第二个集群(可以指定版本)
minikube start -p aged --kubernetes-version=v1.16.1
启动第二个节点
minikube start --nodes 2 -p multinode-demo
执行结果示例:
查看node情况:
kubectl get node
看到,系统返回两个节点信息 ,Minikube也可以模拟K8S的多node的场景。
查看node状态信息
minikube status -p multinode-demo
返回结果如下:
删除所有的集群
minikube delete --all
7、Minikube Dashboard
启动Dashboard,执行如下语句:
minikube dashboard
系统自动启动浏览器Dashboard界面,如下:
后面大家可以充分的利用这个本地化的K8S学习和试验云原生相关的内容啦。
8、附录常见的Kubectl 命令
-
获取资源信息:
-
kubectl get pods
:列出所有 pods。 -
kubectl get services
:列出所有服务。 -
kubectl get deployments
:列出所有部署。 -
kubectl get nodes
:列出所有节点。
-
-
创建和删除资源:
-
kubectl create -f <file.yaml>
:根据 YAML 文件创建资源。 -
kubectl delete -f <file.yaml>
:根据 YAML 文件删除资源。 -
kubectl delete pod <pod-name>
:删除指定的 pod。
-
-
描述和查看资源详情:
-
kubectl describe pod <pod-name>
:显示 pod 的详细信息。 -
kubectl logs <pod-name>
:查看 pod 的日志。 -
kubectl exec -it <pod-name> -- /bin/bash
:进入 pod 的交互式 shell。
-
-
资源的编辑和更新:
-
kubectl edit pod <pod-name>
:编辑 pod 的定义。 -
kubectl apply -f <file.yaml>
:应用 YAML 文件中的更改。
-
-
命名空间操作:
-
kubectl get namespaces
:列出所有命名空间。 -
kubectl create namespace <namespace-name>
:创建新的命名空间。 -
kubectl config set-context --current --namespace=<namespace-name>
:切换到指定的命名空间。
-
-
调试和诊断:
-
kubectl top pod
:显示 pods 的资源使用情况。 -
kubectl rollout status deployment/<deployment-name>
:查看部署的状态。 -
kubectl rollout undo deployment/<deployment-name>
:回滚到上一个部署版本。
-
-
配置和安全:
-
kubectl config view
:查看 kubectl 配置。 -
kubectl get secrets
:列出所有的密钥。
-