当前位置: 首页 > news >正文

使用Kind搭建本地k8s集群环境

目录

1.前提条件

2.安装Kind

3.使用Kind创建一个K8s集群

3.1.创建一个双节点集群(一个Master节点,一个Worker节点)

3.2.验证一下新创建的集群信息

 3.3.删除刚刚新建的集群

 4.安装集群客户端

 4.1.安装kubectl

4.1.1.验证kubectl

4.2.安装Lens

4.2.1.下载最新Lens安装包

4.2.2.打开Lens

4.参考文章


1.前提条件

本地环境需要的系统和软件,win10系统推荐这种方式

  • win10 + WSL2 + Ubuntu(截止202308最新版本是20.04.xx) +Docker(Docker Desktop是兼容WSL2的)
图1 允许Ubuntu直接使用Win10安装的Docker Desktop
图2 Win10 安装WSL2后,再安装Ubuntu子系统,Docker Desktop可以在Ubuntu中使用docker命令

        若是一直使用Linux统开发,则直接安装Docker即可以使用了

  • Linux + Docker

2.安装Kind

# 在本地路径下创建文件夹kind
mkdir -p kind
# 将Kind的二进制文件下载到本地
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.12.0/kind-linux-amd64
# 授权给当前用户执行权限
chmod +x ./kind
# 将可执行文件移动到路径/usr/bin/下(该路径下的二进制文件是全局可执行的)
mv ./kind /usr/bin/kind

         安装好之后,可以立刻验证一下版本

图3 安装Kind之后,验证一下版本信息

        整个安装过程比较简单,也有很多可以参考的博客文章,可能需要注意的是操作用户的权限问题,注意使用命令:

# 使用root用户执行命令
sudo ${command}
# 切换用户
su - ${username}
# 对某个二进制文件授权
chmod u+x+r+r ${executable_binary_file}
# 修改某个文件的归属权限
chown -R ${file}

3.使用Kind创建一个K8s集群

3.1.创建一个双节点集群(一个Master节点,一个Worker节点)

        为何是双节点?因为正常的集群都是多节点的,但是本地开发环境的资源可能比较有限,节点多了,本地电脑就会变卡,2个节点是比较实际的,可以体验多节点的特性,又可以最大程度节约资源

# 创建集群配置文件,1个master node,1个worker node。
cat << EOF > kind-clusters-mutil-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
EOF# start to create cluster
kind create cluster --name k8s-local-dev --config ./kind-clusters-mutil-config.yaml

3.2.验证一下新创建的集群信息

图4 验证新创建的新集群k8s-local-dev

        其中,在Docker Desktop中,也可以看到两个集群节点的容器。 

图5 Docker Desktop可以查看集群节点的运行状态

         从这里也能看到,为什么我推荐使用Kind,因为kind创建的集群也是镜像式的,如果使用其他的,例如Docker Desktop自带的Dev environment或者K3s或者minkube,都是很多image下载下来,然后启动一堆容器,删除集群的时候就很麻烦,当然,这是我的一家之言,对于这一点,其实也有人专门写文章分析这几个的利弊。

 3.3.删除刚刚新建的集群

# 查询刚刚新建的集群名
kind get clusters
# 根据集群名称删除集群
kind delete cluster --name k8s-local-dev
图6 删除新建的集群

 4.安装集群客户端

 4.1.安装kubectl

# 下载最新版本的kubectl命令二进制文件
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"# 授权二进制文件已执行权限(如果是root用户操作,可以不用sudo)
sudo chmod 777 ./kubectl# 将kubectl命令移动到/usr/local/bin目录下(这样就可以全局执行了)
mv ./kubectl /usr/local/bin/

官方文档中,非常全面,但是我这里简化一下,只针对我本地Unbuntu系统设置

4.1.1.验证kubectl

图7 安装kubectl之后,验证

 查看新集群的信息

# 查看kubectl版本信息
kubectl version
# 查看当前版本
kubectl cluster-info
# 查看集群信息
kubectl config get-clusters
# 查看当前context
kubectl config get-contexts
# 查看当前context
kubectl config current-context
图8 当前集群的信息

        这里涉及的内容需要理解k8s的访问权限设置,分为user(credentials)、cluster、context如何配置,起到什么作用,我之前也写过一篇如何配置kubectl访问集群的文章(点击传送)

        其中,这个配置可以通过以下命令查看

# 查看kubectl访问k8s集群的配置
kubectl config view

        这是一个配置文件,可以直接打开文件进行修改

cat ~/.kube/config

4.2.安装Lens

        Lens是其中比较推荐的可视化k8s客户端工具之一,开始是完全免费的,之后分了收费版本,变得有点无语,不过仍旧是比较推荐的工具,毕竟可视化界面操作非常方便,只要选择personal版本就可以了

4.2.1.下载最新Lens安装包

也可以自行选择版本,看自己需要

图9 选择windows版本下载

 选择Personal版本的,必然会跳到付费界面,一直卡住,自行研究一下即可,不赘述。

4.2.2.打开Lens

图10 Lens的集群列表界面

         第一次安装的话,会直接从path:~/.kube/config中复制放到用户目录下,所谓的用户目录可以在上图的settings中找到。

图11 Lens访问集群的相关配置

         这个配置和kubectl的配置一样的,如果cluster信息变更后,Lens的配置可能没有更新,可以直接从kubectl的kubeconfig中copy到对应的目录下。否则会出现如下情况:

图12 kubeconfig有误,无法访问集群

4.参考文章

kind

Kind创建单、多集群 – Jason Tan's blog

https://www.cnblogs.com/yakniu/p/16435276.html

Lens download portal | The Kubernetes IDE

在 Linux 系统中安装并设置 kubectl | Kubernetes

Minikube vs. kind vs. k3s vs k3d vs MicroK8s_ghostwritten的博客-CSDN博客 

相关文章:

使用Kind搭建本地k8s集群环境

目录 1.前提条件 2.安装Kind 3.使用Kind创建一个K8s集群 3.1.创建一个双节点集群&#xff08;一个Master节点&#xff0c;一个Worker节点&#xff09; 3.2.验证一下新创建的集群信息 3.3.删除刚刚新建的集群 4.安装集群客户端 4.1.安装kubectl 4.1.1.验证kubectl 4.2.安…...

【STM32RT-Thread零基础入门】 7. 线程创建应用(多线程运行机制)

硬件&#xff1a;STM32F103ZET6、ST-LINK、usb转串口工具、4个LED灯、1个蜂鸣器、4个1k电阻、2个按键、面包板、杜邦线 文章目录 前言一、RT-Thread相关接口函数1. 获取当前运行的线程2. 设置调度器钩子函数 二、程序设计1. 头文件包含及宏定义2. 线程入口函数定义3. main函数设…...

.net日志系统

.NET 平台提供了强大的日志记录系统,用于在应用程序中记录各种事件、错误和调试信息。最常用的日志记录库是 Microsoft.Extensions.Logging,它是一个通用的日志接口和基础框架,可以与多种日志实现集成。以下是如何使用 .NET 日志系统的基本步骤: 安装 NuGet 包:首先,您需…...

SpringCloud学习笔记(二)_Eureka注册中心

一、Eureka简介 Eureka是一项基于REST&#xff08;代表性状态转移&#xff09;的服务&#xff0c;主要在AWS云中用于定位服务&#xff0c;以实现负载均衡和中间层服务器的故障转移。我们称此服务为Eureka Server。Eureka还带有一个基于Java的客户端组件Eureka Client&#xff…...

spark的eventLog日志分析

查找满足指定条件的app_id查询条件: 表名、时间、节点名时间限定: 最好适当放大, 不知道什么原因有点不准eventLog的存放路径: spark.history.fs.logDirectory 1. spark-sql 先限定时间段;数据是逐行读入的, 但 app_id要按整个文件过滤, 按每个条件打标;按app_id粒度聚合, 查…...

探究Java spring中jdk代理和cglib代理!

面对新鲜事物&#xff0c;我们要先了解在去探索事物的本质-默 目录 一.介绍二者代理模式 1.1.Jdk代理模式 1.2cglib代理模式 1.3二者区别 1.3.1有无接口 1.3.2灵活性 1.4对于两种代理模式的总结 1.4.1jdk代理模式 1.4.2cglib代理模式 二.两种代理模式应用场景 2.1jd…...

反转链表(C++)

1、迭代法的一种写法 ListNode* reverse_linkList(ListNode* head){if(head nullptr || head->next nullptr) return head;ListNode* begin nullptr;ListNode* mid head;ListNode* end head->next;while(true){mid->next begin;if(end nullptr){break;}begin …...

适配器模式:让不兼容的接口协同工作

在面向对象设计中&#xff0c;适配器模式是一种常见的结构型设计模式。它允许将不兼容的接口转换成客户端所期望的另一个接口&#xff0c;从而使不同的类协同工作。适配器模式的主要目的是解决不同接口之间的兼容性问题&#xff0c;同时也提高了代码的可重用性和灵活性。 问题…...

【1day】复现Milesight-VPNserver.js 任意文件读取漏洞

目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现 一、漏洞描述 Milesight路由器-VPN是由Milesight Technology Co., Ltd.开发的一种集成了VPN功能的路由器产品。它旨在为用户提供安全、可靠的远程访问和连接解决方案。Milesight-VPNserver.js存在任意文件读取…...

前端代码规范

1 husky husky用于绑定git hooks&#xff0c;在指定时机执行想要的命令 {"husky": {"hooks": {"pre-commit": "lint-staged" }} }需要手动修改.husky文件内容&#xff1a; . "$(dirname -- "$0")/_/husky.sh"n…...

Java接入文心一言

文章目录 文心一言应用创建接口对接接口文档代码示例依赖 常量类实体类 结束语 文心一言应用创建 首先需要先申请文心千帆大模型&#xff0c;申请地址&#xff1a;文心一言 (baidu.com)&#xff0c;点击加入体验&#xff0c;等通过审核之后就可以进入文心千帆大模型后台进行应…...

信息管理系统三级等保的一些要求

一、前言 在做一些互联网系统或面向互联网的系统时&#xff0c;需要进行备案&#xff0c;需要满足网络信息安全维护规章及有关规章制度要求&#xff0c;才能发布到互联网。所以在做系统的需求分析时&#xff0c;往往需要把信息管理系统三级等保的需求加上&#xff0c;方便开发…...

第六届“蓝帽杯”电子取证模块(初赛)解析+全资源一次性分享

前言:资源一次性分享 手机+电脑+exe+内存四个模块,我自己在网上也找了很久,才把资源找齐全,题目我也整理在这里,方便大家训练。 目录...

《Go 语言第一课》课程学习笔记(九)

常量&#xff1a;Go 在“常量”设计上的创新有哪些&#xff1f; Go 语言在常量方面的创新包括下面这几点&#xff1a; 支持无类型常量&#xff1b;支持隐式自动转型&#xff1b;可用于实现枚举。 常量 Go 语言的常量是一种在源码编译期间被创建的语法元素。这是在说这个元素…...

docker 安装nginx 和 elasticsearch ik 自定义分词

1、切换到/mydata 文件夹 创建 nginx 目录 mkdir nginx 2、运行 docker run --name nginx -p 80:80 -d nginx:1.22.0 3、复制docker 里面的nginx配置到 外面的nginx/conf 下面 docker cp nginx:/etc/nginx /mydata/nginx 4、把 /mydata/nginx下面的nginx 改…...

谈谈收音机的发展

目录 1.什么是收音机 2.收音机的工作原理 3.收音机的发展历史 4.收音机的历史作用 1.什么是收音机 收音机是一种电子设备&#xff0c;用于接收和播放广播电台的无线电信号。它是人们获取各种音乐、新闻、娱乐和其他广播节目的常用设备。 收音机通常由以下几个部分组成&…...

QTreeWidget——信号处理

文章目录 基本属性信号一、信号种类二、信号测试1、currentItemChanged、itemCollapsed、itemExpanded三个信号的测试2、itemActivated信号3、 itemChanged信号4、其余信号的测试代码&#xff08;包含以上代码&#xff09; 基本属性 信号 一、信号种类 //当前项发生变化时触…...

【Java从入门到精通|1】从特点到第一个Hello World程序

写在前面 在计算机编程领域&#xff0c;Java是一门广泛应用的高级编程语言。它以其强大的跨平台性能、丰富的库和生态系统以及易于学习的语法而备受开发者欢迎。本文将引导您逐步了解Java的特点、如何安装和配置开发环境&#xff0c;以及如何编写您的第一个Java程序。 一、Java…...

JAVA 读取jar包中excel模板

1、在resources路径下&#xff0c;新建report文件夹&#xff0c;放入excel模板 2、配置文件中的目录&#xff0c;分隔符使用 / template: /report/报告模板V1.0.xlsx3、使用getResourceAsStream()读取 XSSFWorkbook wb;try {//需要以/开始InputStream resourceAsStream this.g…...

解决方案:fatal error: openssl/bio.h: 没有那个文件或目录

出现报错如下&#xff1a; 出现该错误的原因有两个&#xff1a; 没有安装openssl或者libssl-dev库Libssl-dev版本过高&#xff0c;需要降级 一. 没有安装openssl或者libssl-dev库 使用指令安装openssl&#xff1a; 我的是已经安装完成了&#xff0c;所以再把libssl-dev的库也…...

Kaggle Notebook中文乱码终结者:3分钟搞定Matplotlib字体配置(附Noto Sans CJK全流程)

Kaggle Notebook中文乱码终结者&#xff1a;3分钟搞定Matplotlib字体配置&#xff08;附Noto Sans CJK全流程&#xff09; 在数据可视化过程中&#xff0c;中文显示问题一直是困扰许多Kaggle用户的痛点。当你在Notebook中满怀期待地运行代码&#xff0c;却发现图表中的中文变成…...

高频电路设计必看:5分钟搞懂PCB阻抗匹配的3个关键参数(附SI9000计算技巧)

高频PCB设计实战&#xff1a;从阻抗理论到SI9000精准计算的完整指南 引言&#xff1a;为什么你的高速信号总是不稳定&#xff1f; 上周和一位资深硬件工程师聊天&#xff0c;他提到自己设计的千兆以太网板卡在测试时总是出现信号抖动问题&#xff0c;反复调整了三四版Layout依然…...

如何在macOS上制作Windows启动盘:WinDiskWriter终极指南

如何在macOS上制作Windows启动盘&#xff1a;WinDiskWriter终极指南 【免费下载链接】windiskwriter &#x1f5a5; A macOS app that creates bootable USB drives for Windows. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. 项目地址: h…...

告别Electron臃肿!用Tauri 2.0 + Rust打造你的第一个轻量级桌面应用(附完整项目结构解析)

从Electron到Tauri 2.0&#xff1a;用Rust重构现代桌面应用开发范式 当Electron应用体积膨胀到200MB起步时&#xff0c;我们不得不重新思考桌面开发的未来。Tauri 2.0的出现绝非偶然——这是前端开发者对性能与体验的集体觉醒。本文将带你深入这个基于Rust的轻量级框架&#xf…...

绝区零智能协同系统:AI驱动的游戏效率倍增解决方案

绝区零智能协同系统&#xff1a;AI驱动的游戏效率倍增解决方案 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 在当代游戏生…...

从零封装一个 Vue 低代码表单组件:我是如何借鉴 FcDesigner 的设计思路的

从零封装一个 Vue 低代码表单组件&#xff1a;我是如何借鉴 FcDesigner 的设计思路的 低代码开发正在改变前端工程师的工作方式。作为一名长期深耕表单领域的前端开发者&#xff0c;我曾参与过多个企业级低代码平台的搭建&#xff0c;也经历过从零开始封装表单组件的完整周期。…...

Stable Diffusion ComfyUI进阶:局部重绘与智能扩图的实战技巧与创意应用

1. 局部重绘的核心原理与实战技巧 局部重绘是Stable Diffusion ComfyUI中最实用的功能之一&#xff0c;它允许你在不改变整体构图的情况下&#xff0c;对图像的特定区域进行重新绘制。这个功能背后的技术原理其实很有意思——它利用了潜在空间&#xff08;latent space&#xf…...

OpenClaw技能扩展指南:为百川2-13B添加公众号发布模块

OpenClaw技能扩展指南&#xff1a;为百川2-13B添加公众号发布模块 1. 为什么需要公众号发布技能 上周我正忙着准备一篇技术分享文章&#xff0c;突然意识到一个痛点&#xff1a;每次写完Markdown文档后&#xff0c;手动复制到公众号编辑器、调整格式、上传封面、设置摘要的过…...

FPGA商用级ISP:动态坏点校正(DPCC)的滑窗架构与并行判决实现

【写在前面&#xff1a;为什么要写这个专栏&#xff1f;】在数字图像处理领域&#xff0c;ISP&#xff08;图像信号处理器&#xff09;的算法原理并不罕见&#xff0c;但真正能够支持 4K60fps 实时处理、并经过商用验证的 Verilog 硬核实现思路 却往往秘和封装在黑盒之中。我手…...

当你能证明你的代码能带来流量时,你就永远不会被视为“垃圾”。

在商业世界里&#xff0c;代码本身没有价值&#xff0c;代码产生的结果才有价值。 如果你写的代码逻辑完美、架构优雅、注释清晰&#xff0c;但用户不用、业务不增长&#xff0c;那它在老板眼里就是“成本”&#xff0c;甚至是“垃圾”。如果你写的代码哪怕有些粗糙、用了“笨办…...