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

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

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

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

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

1. 安装Docker Desktop

  1. 下载Docker Desktop:
    • 访问 Docker官网安装链接并下载适用于Windows的Docker Desktop安装程序。
  2. 安装Docker Desktop:
    • 双击下载的安装文件并遵循安装向导的指示完成安装。
    • 安装完成后,启动Docker Desktop,示例如下:
  3. 配置Docker Desktop:
    • 右击系统托盘中的Docker图标,选择“Settings”。
    • 确保在“General”选项中启用了“Use WSL 2 based engine”(如果你的系统支持)。
    • 在“Resources”中,根据需要配置CPU和内存分配。

2. 安装Minikube

  1. 安装Hyper-V和Windows Subsystem for Linux (WSL):

    • 打开“控制面板” -> “程序” -> “启用或关闭Windows功能”。
    • 勾选“Hyper-V”和“适用于Linux的Windows子系统”,然后按照提示重启电脑。
  2. 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 命令

  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:列出所有的密钥。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/349701.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

100.乐理基础-五线谱-是否需要学习五线谱

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;99.乐理基础-简谱的多声部-CSDN博客 简谱与五线谱的区别&#xff0c;各自的优劣势、使用场景、范围等&#xff1a; 要搞懂这个问题&#xff0c;其实核心就是四个词&#xff1a;首调、固定调、单声部、多声部 首调、…

高斯分布的应用,正态分布的实践应用,什么是极大似然估计法

目录 高斯分布的应用 正态分布的实践应用 什么是极大似然估计法 高斯分布的应用

Web04--Flex布局

1、flex布局 1.1 flex认识 1.2 flex组成 1.3 flex布局 1.3.1 主轴对齐方式 <!DOCTYPE html> <html lang"CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.…

Optional lab: Linear Regression using Scikit-LearnⅠ

scikit-learn是一个开源的、可用于商业的机器学习工具包&#xff0c;此工具包包含本课程中需要使用的许多算法的实现 Goals In this lab you will utilize scikit-learn to implement linear regression using Gradient Descent Tools You will utilize functions from sci…

【Hexo博客|Fluid主题】实现链接卡片效果

文章目录 前言一、CardLink库二、配置步骤1. 添加静态js文件2. 使库文件生效3. 编写启用CardLink4. 查看效果效果与前面一致。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/img_convert/06e0630f994d4d67a90e18e291c3fdc5.png#pic_center) 总结 前言 今天在阅读Github…

windows?linux?如何使用JMeter

windows?linux?如何使用JMeter 安装JMeter的步骤以GUI模式启动JMeter如何在非GUI模式下运行JMeter在linux中使用JMeter 安装JMeter的步骤 JMeter 是一个纯 Java应用程序&#xff0c;应该在任何具有兼容Java实现的系统上正确运行。 安装 JMeter 的步骤 步骤1&#xff09;安…

freeRTOS总结(六)列表及列表项

1&#xff0c;列表和列表项的简介&#xff08;熟悉&#xff09; 1、列表就是一个双向循环链表&#xff0c;列表项就是其中的节点 2、其用途就是在三大链表&#xff08;挂起、阻塞、就绪&#xff09;中将任务&#xff08;列表项&#xff09;进行排序管理。 列表是 FreeRTOS 中的…

人工智能的未来展望:自然语言处理(NLP)与计算机视觉(CV)

NLP和CV是人工智能的两个重要分支&#xff0c;它们在处理和分析信息方面有不同的侧重点和挑战。 NLP&#xff08;自然语言处理&#xff09;旨在让计算机理解和生成人类语言&#xff0c;主要处理的是文本信息。NLP的研究和应用主要集中在如何让计算机理解和生成人类语言&#x…

一、windows_Dos命令——批处理命令

一、批处理编程 winr输入cmd 1、打开记事本 notepad 回车 记事本保存文件要以.bat后缀进行保存 2、显示对应.bat的盘符位置 echo off 3、echo输出字符串内容 echo "hello world" 回车 4、pause等待任意键输入 win r 回车 输入cmd 回车 echo "hel…

深度学习道路提取代码跑自己的训练集(一)——CoANet代码

首先去下载作者发布在github上面的代码 为了防止我们之前的虚拟环境遭到破坏 我们首先重新克隆一个虚拟环境 conda create --name pytorch2 --clone pytorch接下来 1. 在mypath.py中定义自己的数据集 class Path(object):staticmethoddef db_root_dir(dataset):if dataset…

element el-date-picker type=“datetimerange“

刚写完结果需求变更了。封装的时间组件重新做。结合eacharts 。 直接上代码了 日期选择组件封装 <template><section class"warning-container"><header class"query-head"><el-form :inline"true" class"query-form…

【华为 ICT HCIA eNSP 习题汇总】——题目集8

1、在VRP平台下&#xff0c;关于各个协议的外部优先级的描述&#xff0c;正确的是&#xff08;&#xff09;。 A、OSPF路由的外部优先级是15 B、IS-IS路由的外部优先级是10 C、静态路由的外部优先级是60 D、BGP路由的外部优先级是20 考点&#xff1a;路由技术原理 解析&#xf…

普通相机标定——核心函数编写

准备工作 在前面的章节中我们完成了如下操作: 打开电脑摄像头采集标定图像编写基础功能函数,实现获取文件名、删除文件等操作 现在我们已经完成了标定图像的采集,如下图所示;接下来就要完成相机的内参标定了。 我们在编程实现中会调用OpenCV中的findChessbo…

Django 为应用定制化admin独立后台

定制后界面 在应用目录下找到admin.py并进行编辑 from django.contrib.admin import AdminSite from .models import Question,Choiceclass PollsAdminSite(AdminSite):site_header"Admin-site-header"site_title"admin-site-title"index_title"admi…

SpringBoot-yml文件的配置与读取

配置 值前边必须要有空格&#xff0c;作为分隔符 使用空格作为缩进表示层级关系&#xff0c;相同的层级左侧对齐 获取 使用Value(”${键名}”) 使用ConfigurationProperties(prefix "前缀") 1.前缀要与yml配置文件中的前缀一致 2.实体类的字段名与配置文件中的键名一…

[GXYCTF2019]BabySQli1

单引号闭合&#xff0c;列数为三列&#xff0c;但是没有期待的1 2 3回显&#xff0c;而是显示wrong pass。 尝试报错注入时发现过滤了圆括号&#xff0c;网上搜索似乎也没找到能绕过使用圆括号的方法&#xff0c;那么按以往爆库爆表爆字段的方法似乎无法使用了 在响应报文找到一…

拓展全球市场:静态代理IP成为跨境电商战略的关键工具

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

【SpringBoot】springboot常用注解

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; SpringBoot ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 Spring Boot作为一个轻量级、快速开发的框架&#xff0c;提供了丰富的注解来简化配置和加速开发。…

深度学习如何弄懂那些难懂的数学公式?是否需要学习数学?

经过1~2年的学习&#xff0c;我觉得还是需要数学有一定认识&#xff0c;重新捡起高等数学、概率与数理、线代等这几本&#xff0c;起码基本微分方程、求导、对数、最小损失等等还是会用到。 下面给出几个链接&#xff0c;可以用于平时充电学习。 知乎上的&#xff1a; 机器学…

你对 TypeScript 中枚举类型的理解?应用场景?

文章目录 一、是什么二、使用数字枚举字符串枚举异构枚举本质 三、应用场景参考文献 一、是什么 枚举是一个被命名的整型常数的集合&#xff0c;用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型 通俗来说&#xff0c;枚举就是一个对象的所有可能…