基于Docker、Minikube在PC端构建K8S试验环境

在桌面电脑上使用Docker和Minikube构建Kubernetes(K8S)试验环境,为学习和测试提供了一个理想的平台。Docker的容器化技术允许在隔离的环境中运行应用,而Minikube则简化了在单节点上部署和管理Kubernetes集群的过程。这种组合使得个人用户能够在本地机器上轻松搭建和操作一个K8S环境,无需复杂的硬件设施。

通过安装Docker和Minikube,我们可以快速启动一个基本的Kubernetes集群,进行应用部署、性能监控和功能实践等操作。这种方法特别适合初学者和开发者,可以在这个环境中实验不同的配置和应用,而无需担心高成本或影响到生产环境。

尽管这种在PC端构建的K8S试验环境在性能和规模上有所限制,但它提供了一个低成本、高效的学习和测试平台。对于希望深入了解Kubernetes工作原理和应用的个人来说,是一个极好的起点。

下面是安装部署过程供大家参考:

1. 安装Docker Desktop

  1. 下载Docker Desktop :
  2. 安装Docker Desktop :
    • 双击下载的安装文件并遵循安装向导的指示完成安装。
    • 安装完成后,启动Docker Desktop,示例如下:
  3. 配置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:

bash 复制代码
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
bash 复制代码
$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文库

bash 复制代码
sudo install minikube-darwin-amd64 /usr/local/bin/minikube

arm64版:【免费】用于在MAC本地学习K8S的集群安装minikube-darwin-arm64资源-CSDN文库

bash 复制代码
sudo install minikube-darwin-arm64 /usr/local/bin/minikube

3.启动Minikube

打开命令提示符或PowerShell,运行 minikube start

bash 复制代码
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

bash 复制代码
kubectl get pod -A

执行结果:

5、在minikube上部署应用

创建一个示例deployment并在端口 8080 上公开它:

bash 复制代码
kubectl create deployment hello-minikube --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube --type=NodePort --port=8080

执行结果如下:

查看Service,执行如下语句:

bash 复制代码
kubectl get services hello-minikube

执行结果如下:

将服务端口转发,执行如下语句:

bash 复制代码
kubectl port-forward service/hello-minikube 7080:8080

执行结果如下:

然后在浏览器栏中输入: http://localhost:7080/.

返回sample service 返回的结果

6、管理minikube集群

停止minikube

bash 复制代码
minikube stop

改变缺省的内存限制(需要重启)

bash 复制代码
minikube config set memory 9001

浏览易于安装的minikube插件

bash 复制代码
minikube addons list

创建第二个集群(可以指定版本)

bash 复制代码
minikube start -p aged --kubernetes-version=v1.16.1

启动第二个节点

bash 复制代码
minikube start --nodes 2 -p multinode-demo

执行结果示例:

查看node情况:

bash 复制代码
kubectl get node

看到,系统返回两个节点信息 ,Minikube也可以模拟K8S的多node的场景。

查看node状态信息

bash 复制代码
minikube status -p multinode-demo

返回结果如下:

删除所有的集群

bash 复制代码
minikube delete --all

7、Minikube Dashboard

启动Dashboard,执行如下语句:

bash 复制代码
minikube dashboard

系统自动启动浏览器Dashboard界面,如下:

后面大家可以充分的利用这个本地化的K8S学习和试验云原生相关的内容啦。

8、附录常见的Kubectl 命令

  1. 获取资源信息:

    • kubectl get pods:列出所有 pods。
    • kubectl get services:列出所有服务。
    • kubectl get deployments:列出所有部署。
    • kubectl get nodes:列出所有节点。
  2. 创建和删除资源:

    • kubectl create -f <file.yaml>:根据 YAML 文件创建资源。
    • kubectl delete -f <file.yaml>:根据 YAML 文件删除资源。
    • kubectl delete pod <pod-name>:删除指定的 pod。
  3. 描述和查看资源详情:

    • kubectl describe pod <pod-name>:显示 pod 的详细信息。
    • kubectl logs <pod-name>:查看 pod 的日志。
    • kubectl exec -it <pod-name> -- /bin/bash:进入 pod 的交互式 shell。
  4. 资源的编辑和更新:

    • kubectl edit pod <pod-name>:编辑 pod 的定义。
    • kubectl apply -f <file.yaml>:应用 YAML 文件中的更改。
  5. 命名空间操作:

    • kubectl get namespaces:列出所有命名空间。
    • kubectl create namespace <namespace-name>:创建新的命名空间。
    • kubectl config set-context --current --namespace=<namespace-name>:切换到指定的命名空间。
  6. 调试和诊断:

    • kubectl top pod:显示 pods 的资源使用情况。
    • kubectl rollout status deployment/<deployment-name>:查看部署的状态。
    • kubectl rollout undo deployment/<deployment-name>:回滚到上一个部署版本。
  7. 配置和安全:

    • kubectl config view:查看 kubectl 配置。
    • kubectl get secrets:列出所有的密钥。
相关推荐
weixin_453965001 小时前
[单master节点k8s部署]31.ceph分布式存储(二)
分布式·ceph·kubernetes
漫无目的行走的月亮2 小时前
在Docker中运行微服务注册中心Eureka
docker
大G哥4 小时前
记一次K8S 环境应用nginx stable-alpine 解析内部域名失败排查思路
运维·nginx·云原生·容器·kubernetes
feng_xiaoshi4 小时前
【云原生】云原生架构的反模式
云原生·架构
妍妍的宝贝4 小时前
k8s 中微服务之 MetailLB 搭配 ingress-nginx 实现七层负载
nginx·微服务·kubernetes
大道归简5 小时前
Docker 命令从入门到入门:从 Windows 到容器的完美类比
windows·docker·容器
zeruns8025 小时前
如何搭建自己的域名邮箱服务器?Poste.io邮箱服务器搭建教程,Linux+Docker搭建邮件服务器的教程
linux·运维·服务器·docker·网站
爱跑步的程序员~5 小时前
Docker
docker·容器
福大大架构师每日一题6 小时前
23.1 k8s监控中标签relabel的应用和原理
java·容器·kubernetes
程序那点事儿6 小时前
k8s 之动态创建pv失败(踩坑)
云原生·容器·kubernetes