kind搭建k8s集群用于测试

安装kind 需要先安装go kind基于go开发

#第一种安装方式#修改go源加快下载速度
go env -w GOPROXY=https://goproxy.cn,direct
#直接下载安装kind最新版本
go install sigs.k8s.io/kind@latest
#进入GOPATH目录找到bin目录下kind执行程序 移动到环境变量里
mv ./kind /usr/local/bin/#第二种安装方式
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.1/kind-linux-amd64
chmod +x ./kind
mv ./kind /usr/local/bin/kind#提前下载k8s镜像
docker pull kindest/node:v1.22.0
#启动 如不指定镜像 则下载最新版本镜像安装
kind create cluster --name=dev1
kind create cluster --image=kindest/node:v1.22.0 --name=dev2
#查看
kind get clusters
#通过名字删除集群
kind delete cluster --name=dev
#使用集群需要进入容器内执行kubectl命令查看使用
#或者在服务器上安装kubectl组件 安装方式如下
#1.用以下命令下载最新发行版
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
#2.安装
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
#3.测试
kubectl version --client
#4.在服务器上使用kubectl命令需要添加创建的k8s集群名称“kubectl --context kind-kind-2”
kubectl --context kind-kind-2 get pods -A
#5.修改.bashrc文件 增加别名方便使用
vim .bashrc
#5.增加如下内容
alias k='kubectl --context kind-kind-2'
#6.让配置生效
source .bashrc
#7 测试
k get pod -A
#导入镜像 
#不能直接使用主机上的镜像,需要导入到kind的节点(容器中)
#此处的name为创建集群时的name
kind load docker-image nginx:latest --name kind-2
#查看是否导入 62781c26d15c 是镜像ID
docker exec -it 62781c26d15c crictl images
#创建pod测试
k run nginx-pod --image=nginx:latest --port=8082

如果使用yam文件创建 镜像不能使用latest tag,只能使用kind里存在的镜像 因为kind内使用的docker不能拉取镜像
使用docker exec -it 62781c26d15c crictl images 查找到的镜像 添加到配置文件的镜像里 例如:

apiVersion: v1
kind: Pod
metadata:name: nginx-pod2namespace: default
spec:containers:- name: nginx-containers#使用kind里存在的镜像image: docker.io/library/nginx:latest

搭建一主三从

#创建配置文件
vim  multi-node-config.yaml
#内容如下
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker
#创建集群
kind create cluster --config multi-node-config.yaml --image=kindest/node:v1.22.0 --name=dev4
#切换集群
kubectl cluster-info --context kind-dev4

出现的问题及解决办法:
如果报如下错误:

[root@192 ~]# kind create cluster --image=kindest/node:v1.22.0 --name=dev
Creating cluster "dev" ...✓ Ensuring node image (kindest/node:v1.22.0) 🖼✗ Preparing nodes 📦  
Deleted nodes: ["dev-control-plane"]
ERROR: failed to create cluster: command "docker run --name dev-control-plane --hostname dev-control-plane --label io.x-k8s.kind.role=control-plane --privileged --security-opt seccomp=unconfined --security-opt apparmor=unconfined --tmpfs /tmp --tmpfs /run --volume /var --volume /lib/modules:/lib/modules:ro -e KIND_EXPERIMENTAL_CONTAINERD_SNAPSHOTTER --detach --tty --label io.x-k8s.kind.cluster=dev --net kind --restart=on-failure:1 --init=false --cgroupns=private --volume /dev/mapper:/dev/mapper --publish=127.0.0.1:33059:6443/TCP -e KUBECONFIG=/etc/kubernetes/admin.conf kindest/node:v1.22.0" failed with error: exit status 125
Command Output: WARNING: Your kernel does not support cgroup namespaces.  Cgroup namespace setting discarded.
a416609b76ef8e1bf4fdac66c159a0f1396841464aec2c8cc6e667fc83be83fe
docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: cgroup namespaces aren't enabled in the kernel: unknown.

原因是内核不支持cgroup 解决办法: 升级内核
注意:升级前做好备份

#1 更新系统,确保所有安装的包都是最新的
sudo yum update
#2安装 elrepo 仓库,该仓库提供了最新的稳定内核
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo yum install -y https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
#3 安装新的内核(例如,最新的稳定版本是 kernel-ml)
sudo yum --enablerepo=elrepo-kernel install kernel-ml -y
#4 更新GRUB引导菜单
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
#5 修改默认引导顺序,使新内核成为默认引导
sudo grub2-set-default 0
#6 重新启动系统,确认新内核成功安装并生效
sudo reboot

如果报如下错误:

 ✗ Starting control-plane 🕹️ 
Deleted nodes: ["dev-control-plane"]
ERROR: failed to create cluster: failed to init node with kubeadm: command "docker exec --privileged dev-control-plane kubeadm init --skip-phases=preflight --config=/kind/kubeadm.conf --skip-token-print --v=6" failed with error: exit status 1
Command Output: I0902 06:53:10.761763     172 initconfiguration.go:255] loading configuration from "/kind/kubeadm.conf"

处理办法 大概率是版本问题 因为下载的是最新版kind与系统匹配不好
解决办法:从新下载低版本kind例如:v0.11.1版 即可解决

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

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

相关文章

一文学会K8s集群搭建

环境准备 节点数量:2台虚拟机 centos7硬件配置:master节点内存至少3G(2G后面在master节点初始化集群时会报错,内存不够),node节点可以2G,CPU至少2个,硬盘至少30G网络要求&#xff1…

Ant-Design-Pro-V5: ProTable前端导出excel表格。

Prtable表格中根据搜索条件实现excel表格导出。 代码展示: index.jsx import React, { useRef, useState, Fragment, useEffect } from react; import { getLecturerList, lecturerExportExcel } from /services/train/personnel; import { getOrgList, getSelec…

服务器性能指什么如何优化

服务器性能指什么如何优化 性能最通俗的衡量指标就是“时间”,CPU的使用率指的是CPU用于计算的时间占比,磁盘使用率指的是磁盘操作的时间占比。 当CPU使用率100%时,意味着有部分请求来不及计算,响应时间增加或者超时&#xff1b…

Navicat Premium 16.2.7 for Mac

Navicat Premium 16是一款功能强大的跨平台数据库管理工具,支持多种数据库类型,如MySQL、MariaDB、Oracle、SQLite、PostgreSQL等等。它提供了丰富的数据库管理功能和工具,可以帮助开发人员和数据库管理员快速地创建、管理和维护数据库。 Nav…

VS Code 快速消除前置空格和常用快捷键

目录 介绍: 消除前置空格:SHIFTTAB 常用的 VS Code 快捷键 介绍: 在使用 Visual Studio Code (VS Code) 进行代码编辑时,熟练掌握一些快捷键和编辑技巧可以大幅提高开发效率。本文将重点介绍如何使用快捷键 SHIFTTAB 快速消除代…

【Vue3 知识第七讲】reactive、shallowReactive、toRef、toRefs 等系列方法应用与对比

文章目录 一、reactive()二、readonly()三、shallowReactive()四、shallowReadonly()五、isReactive() 和 isReadonly()六、toRef()七、toRefs()八、toRaw()九、ref、toRef、toRefs 异同点 一、reactive() reactive() 函数用于返回一个对象的响应式代理。与 ref() 函数定义响应…

Vue2 与Vue3的区别?面试题

Vue 2和Vue 3是Vue.js框架的不同版本,在面试中经常涉及到它们之间的区别。以下是Vue 2和Vue 3的主要区别: 性能提升:Vue 3在性能方面进行了优化。Vue 3引入了更高效的Diff算法,提高了渲染性能。此外,Vue 3还进行了代码…

stable diffusion实践操作-大模型介绍

本文专门开一节写大模型相关的内容,在看之前,可以同步关注: stable diffusion实践操作 模型下载网站 国内的是:https://www.liblibai.com 国外的是:https://civitai.com(科学上网) 一、发展历…

自动化驱动程序管理

在部署操作系统时,每次都从下载和分发所需的驱动程序中实现真正的独立性可能是一场艰苦的战斗。特别是具有硬件多样化的环境,并且需要支持新的硬件类型时。借助 OS Deployer,可以对所有端点使用一个映像,无论品牌和型号如何&#…

SpringBoot项目--电脑商城【用户登录】

1. 用户登录功能 先分析一下思路:当用户输入用户名和密码将数据提交给后台数据库进行查询,如果存在对应的用户名和密码则表示登录成功,登录成功之后跳转到系统的主页就是index.html页面,跳转在前端使用jQuery来完成 2.持久层[Mapper] 规划需要执行的SQL语句 依据用户提交的用…

Android-Broadcast动态注册

广播的动作分别为:注册、发送、接收。 1. 定义接收器 public class MyReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context context, Intent intent) {} } 2. 注册广播 final MyReceiver[] receivers {null};Button registerBroad fi…

【用unity实现100个游戏之7】从零开始制作一个仿杀戮尖塔卡牌回合制游戏

文章目录 前言素材资源开始一、UI框架二、挂载脚本三、事件监听,用于绑定按钮事件四、声音管理器五、excel转txt文本六、游戏配置七、用户信息表八、战斗管理器九、 敌人管理器十、玩家血量、能量、防御值、卡牌数十一、敌人血量 行动显示逻辑十二、UI提示效果实现十…

最新基于MATLAB 2023a的机器学习、深度学习教程

详情点击链接:最新基于MATLAB 2023a的机器学习、深度学习教程 前沿 MATLAB 2023版的深度学习工具箱,提供了完整的工具链,能够在一个集成的环境中进行深度学习的建模、训练和部署。与Python相比,MATLAB的语法简洁、易于上手&#…

vue 获取当前日期所属月的第一天和最后一天的日期

学习目标: 学习目标 - [ ] vue 获取当前日期所属月的第一天和最后一天的日期 学习内容: 学习内容如下所示: 1. 使用 JavaScript 的 Date 对象来获取当前日期所属月的第一天和最后一天的日期 // 获取当前日期 const today new Date();//…

第四篇 DirectShow 采集调用结构关系

第一篇: DirectShow视频采集_会头痛的可达鸭的博客-CSDN博客 一、GraphBuilder 1、IFilterGraph2、IGraphBuilder、ICaptureGraphBuiler2 (1)、CLSID IFilterGraph CLSID_FilterGraphIFilterGraph2 CLSID_CaptureGraphBuilderIGraphBuilder CL…

零碎的C++

构造函数和析构函数 构造函数不能是虚函数,而析构函数可以是虚函数。原因如下: 构造函数不能是虚函数,因为在执行构造函数时,对象还没有完全创建,还没有分配内存空间,也没有初始化虚函数表指针。如果构造…

Jetsonnano B01 笔记1:基础理解—网络配置—远程连接

今日开始学习 Jetsonnano B01,这是一台小电脑,可以用来: 运行现代 AI 负载,并行运行多个神经网络,以及同时处理来自多个高清传感器的数据,可广泛应用与图像分类、对象检测、图像分割、语音处 理等领域。它…

【python爬虫】15.Scrapy框架实战(热门职位爬取)

文章目录 前言明确目标分析过程企业排行榜的公司信息公司详情页面的招聘信息 代码实现创建项目定义item 创建和编写爬虫文件存储文件修改设置 代码实操总结 前言 上一关,我们学习了Scrapy框架,知道了Scrapy爬虫公司的结构和工作原理。 在Scrapy爬虫公司…

配置本地maven

安装maven安装包 修改环境变量 vim ~/.bash_profile export JMETER_HOME/Users/yyyyjinying/apache-jmeter-5.4.1 export GOROOT/usr/local/go export GOPATH/Users/yyyyjinying/demo-file/git/backend/go export GROOVY_HOME/Users/yyyyjinying/sortware/groovy-4.0.14 exp…

手写Mybatis:第10章-使用策略模式,调用参数处理器

文章目录 一、目标:参数处理器二、设计:参数处理器三、实现:参数处理器3.1 工程结构3.2 参数处理器关系图3.3 入参数校准3.4 参数策略处理器3.4.1 JDBC枚举类型修改3.4.2 类型处理器接口3.4.3 模板模式:类型处理器抽象基类3.4.4 类…