基于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.mzph.cn/news/648658.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Apipost-cli、Jenkins持续集成配置

安装 Apipost-cli npm install -g apipost-cli 运行脚本 安装好Apipost-cli后&#xff0c;在命令行输入生成的命令&#xff0c;即可执行测试用例&#xff0c;运行完成后会展示测试进度并生成测试报告。 Jenkins配置 Apipost cli基于Node js运行 需要在jenkins上配置NodeJs依…

eNSP 实验 两台AR配置同网段

实验1&#xff1a;eNSP 两台AR配置同网段 目的&#xff1a;创建两台AR&#xff0c;配置IP互相ping通 拓扑结构&#xff1a; 首先创建一个AR3260 然后创建一个AR2220 然后同轴电缆连接一下 先配置AR2220。 1、切管理员&#xff1a;system-view 进入千兆位以太网 0/0/0 interf…

MIT_线性代数笔记:第 29 讲 奇异值分解

目录 如何实现用矩阵数学语言描述这一过程举例 本讲介绍奇异值分解&#xff08;Singular value decomposition&#xff09;&#xff0c;简称 SVD。这是矩阵最终也是最好的分解&#xff0c;任意矩阵可分解为 A U Σ V T AUΣV^T AUΣVT&#xff0c;分解结果为正交矩阵 U&#x…

day31_HTML

今日内容 0 复习昨日 1 表格标签 2 表单标签【重要】 3 框架标签 0 复习昨日 Javaweb开发,前端,服务器,数据库 前端,要学习HTML,CSS,JavaScript,JQuery HTML是用来编写网页的一种编程语言 语法 由各种标签组成,标签是尖括号<>,一般都是成对儿出现,前面叫做开标签,后面…

excel中多行合并后调整行高并打印

首先参考该文&#xff0c;调整全文的行高。 几个小技巧&#xff1a; 1.转换成pdf查看文件格式 2.通过视图--》分页预览&#xff0c;来确定每页的内容&#xff08;此时页码会以水印的形式显示&#xff09; 3. 页面布局中的&#xff0c;宽度可以选为自动&#xff0c;因为已经是…

Linux——系统简介

1、从UNIX到LINUX 在目前主流的服务器端操作系统中&#xff0c;UNIX诞生于20世纪60年代末&#xff0c;Windows诞生于20世纪80年代中期&#xff0c;Linux诞生于20世纪90年代初&#xff0c;可以说UNIX是操作系统中的“老大哥”。 1.1、Linux简史 Linux内核最初是由李纳斯托瓦兹…

[TII 2023] 基于压缩感知的多级隐私保护方案

Multilevel Privacy Preservation Scheme Based on Compressed Sensing | IEEE Journals & Magazine | IEEE Xplore 摘要 物联网的广泛应用在给人们带来便利的同时&#xff0c;也引发了人们对数据采集、分析和共享过程中隐私泄露的担忧。本文提出了一种基于压缩感知的多级…

Cesium数据加载

文章目录 0.引言1.影像加载1.1Bing地图1.2天地图1.3ArcGIS在线地图1.4高德地图1.5OSM影像1.6MapBox影像 2.OGC地图服务2.1WMS2.2WMTS2.3TMS 3.GeoJSON数据加载4.KML数据加载5.TIFF数据加载6.点云数据加载7.地形数据加载7.1在线地形数据加载7.2本地地形数据加载 8.倾斜摄影模型数…

[BT]小迪安全2023学习笔记(第15天:PHP开发-登录验证)

第15天 名词解释 Cookie 是小型的文本文件&#xff0c;由网站发送到用户的浏览器&#xff0c;并存储在用户的设备上。Cookie 通常用于存储识别用户的信息&#xff0c;例如用户偏好、登录状态等。每当用户再次访问同一网站时&#xff0c;浏览器会将 Cookie 发送回服务器&#…

10 个值得分享给你前端低代码项目

今天来分享 10 个优秀的前端低代码项目&#xff01;企业级低代码快速开发平台&#xff0c;包含页面可视化配置、自定义表单、自定义报表、权限管理脚手架应用、前后端代码自动生成&#xff1b;主要特点是低代码开发&#xff0c;可实现复杂CRUD功能仅编写数据模型就能完成前后端…

扫雷游戏 bevy 实践(bevy 0.12)-1

经典的扫雷游戏 bevy 实践&#xff08;bevy 0.12&#xff09; 网上大多是0.6的 但愿大家能够摸索着 上手 参考资料&#xff1a; Bevy Minesweeper: Introduction - DEV Community &#xff08;原始教程&#xff0c;0.6版本&#xff09; https://github.com/leonidv/bevy-m…

在线教育App、H5、微信小程序项目

大型多端项目&#xff0c;uni-app开发 一、首页 二、课程页 以点击购买&#xff0c;购买后可以看到课程内容 种课程音频、视频等&#xff0c;以及专栏&#xff0c;都可以购买后观看 三、电子书 订阅成功后&#xff0c;就可以观看电子书了 选择章节 直播模块&#xff1a; 订阅…

Linux 一键部署influxd2-telegraf 二进制方式

influxd2前言 influxd2 是 InfluxDB 2.x 版本的后台进程,是一个开源的时序数据库平台,用于存储、查询和可视化时间序列数据。它提供了一个强大的查询语言和 API,可以快速而轻松地处理大量的高性能时序数据。 telegraf 是一个开源的代理程序,它可以收集、处理和传输各种不…

零基础学习数学建模——(四)备战美赛

本篇博客将讲解如何备战美赛。 什么是美赛 美赛&#xff0c;全称是美国大学生数学建模竞赛&#xff08;MCM/ICM&#xff09;&#xff0c;由美国数学及其应用联合会主办&#xff0c;是最高的国际性数学建模竞赛&#xff0c;也是世界范围内最具影响力的数学建模竞赛。 赛题内容…

CuteHttpFileServer

需求 最近行政同时需要做文件共享&#xff0c;使用windows上的文件共享有些问题&#xff0c;ftp也是有问题&#xff0c;同时需要身份验证功能&#xff0c;找了很久&#xff0c;发现CuteHttpFileServer 这个文件服务器&#xff0c;可以解决这个需求&#xff0c;中间过程中也写过…

生产问题复盘!Swap对GC的影响

Swap 1. 什么是Swap swap 是把一块磁盘空间或者一个本地文件当做内存来使用。可用内存无法满足内存分配请求的时候&#xff0c;把不常用的内存数据存储到磁盘&#xff0c;并在内存中释放这部分内存。当进程再次访问这部分内存的时候&#xff0c;再读取到内存中来。 2. 为什么…

详讲api网关之kong的基本概念及安装和使用(一)

什么是api网关 前面我们聊过sentinel&#xff0c;用来限流熔断和降级&#xff0c;如果你只有一个服务&#xff0c;用sentinel自然没有问题&#xff0c;但是如果是有多个服务&#xff0c;特别是微服务的兴起&#xff0c;那么每个服务都使用sentinel就给系统维护带来麻烦。那么网…

计数指针:shared_ptr (共享指针)与函数 笔记

推荐B站视频&#xff1a; 4.shared_ptr计数指针_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p4&vd_sourcea934d7fc6f47698a29dac90a922ba5a3 5.shared_ptr与函数_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p5&vd_sourcea…

YOLOV5目标检测---labelimg图片标注工具(1)

前言&#xff1a;在使用YOLO训练自己模型的时候首先要学会对数据进行处理&#xff0c;这里介绍一个常用的本地打标签工具labelimg&#xff0c;如果不想按照的话也可以使用在线标签工具&#xff0c;因为害怕数据泄露&#xff0c;所以本人一直使用的是本地工具进行打标签。在线标…

node.js漏洞总结

js开发的web应用和php/Java最大的区别就是js可以通过查看源代码的方式查看到编写的代码&#xff0c;但是php/Java的不能看到&#xff0c;也就是说js开发的web网页相当于可以进行白盒测试。 流行的js框架有&#xff1a; 1. AngularJS 2. React JS 3. Vue 4. jQuery 5. Backbone…