基于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:列出所有的密钥。
相关推荐
zxnbmk1 分钟前
【7】Kubernetes存储(本章知识密度较高,仅浅浅了解后续详解)
linux·云原生·容器·kubernetes
叫致寒吧2 分钟前
pod详解
云原生·kubernetes
水上冰石32 分钟前
查看k8s下Jenkins的插件在宿主机的路径
容器·kubernetes·jenkins
孤岛悬城33 分钟前
58 k8s之pod
云原生·容器·kubernetes
可爱又迷人的反派角色“yang”38 分钟前
k8s(五)
linux·运维·docker·云原生·容器·kubernetes
oMcLin39 分钟前
如何在Ubuntu 22.10上通过配置K3s轻量级Kubernetes集群,提升边缘计算环境的资源管理能力?
ubuntu·kubernetes·边缘计算
Bin Watson1 小时前
Ubuntu安装Docker记录(基于阿里云)
ubuntu·阿里云·docker
optimistic_chen1 小时前
【Docker入门】容器技术
linux·运维·服务器·docker·容器
小明_GLC1 小时前
理解Docker、镜像Images、容器Container
docker·容器
努力搬砖的咸鱼1 小时前
用 Docker 部署你的第一个微服务
docker·微服务·云原生·容器