环境安装篇 之 Kind 搭建 kubernetes 测试集群

云原生学习路线导航页(持续更新中)

本文是 环境安装 系列文章,介绍 使用Kind工具 快速安装 kubernetes 测试集群的详细步骤

1.Kind简介

  • Kind 是一个使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具。
  • Kind 主要用于测试kubernetes本身,但也可用于本地开发或 CI。

2.Kind安装kubernetes集群

2.1.确保已经安装了go环境

# 创建gopath目录
$ mkdir /root/go
$ cd /root/go# 获取go安装包
$ wget https://go.dev/dl/go1.22.1.linux-amd64.tar.gz# 解压并加入/usr/local目录
$ tar -C /usr/local -zxf go1.22.1.linux-amd64.tar.gz# 导出go环境变量
$ vim /# 在文件最后加上下面这些export GOROOT=/usr/local/goexport GOPATH=/root/goexport GOPROXY=https://goproxy.cn,directexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin# 刷新环境变量
$ source /etc/profile# 查看go版本,检查是否安装成功
$ go version

2.2.确保已经安装了docker

  • 没有安装docker的,执行命令安装
    # 卸载旧版本docker
    $ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine# 安装依赖包
    $ sudo yum install -y yum-utils# 添加 yum 软件源
    $ sudo yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    $ sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo# 更新 yum 软件源缓存,并安装 docker-ce
    $ sudo yum install docker-ce docker-ce-cli containerd.io# 使用脚本自动安装
    $ curl -fsSL get.docker.com -o get-docker.sh
    $ sudo sh get-docker.sh --mirror Aliyun# 启动docker
    $ sudo systemctl enable docker
    $ sudo systemctl start docker# 如果非root用户,用下面的命令加入docker组
    $ sudo groupadd docker
    $ sudo usermod -aG docker $USER# 测试 Docker 是否安装正确,有下面的输出则安装成功
    $ docker run --rm hello-worldUnable to find image 'hello-world:latest' locally
    latest: Pulling from library/hello-world
    b8dfde127a29: Pull complete
    Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
    Status: Downloaded newer image for hello-world:latestHello from Docker!
    This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/
    

2.3.安装kind

2.3.1.安装命令

```sh
# 安装kind工具,会安装到 $GOPATH/bin 目录下
$ go install sigs.k8s.io/kind@v0.20.0# 验证kind是否安装成功
$ kind version# 安装集群,有下面的输出,说明安装成功
$ kind create cluster
Creating cluster "kind" ...✓ Ensuring node image (kindest/node:v1.27.3) 🖼✓ Preparing nodes 📦✓ Writing configuration 📜✓ Starting control-plane 🕹️✓ Installing CNI 🔌✓ Installing StorageClass 💾
Set kubectl context to "kind-kind"
You can now use your cluster with:kubectl cluster-info --context kind-kindHave a nice day! 👋
```

2.3.2.安装过程遇到cgroup报错

  • 报错信息
    $ kind create cluster
    ✓ Ensuring node image (kindest/node:v1.27.3) 🖼
    ✗ 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
    

2.3.3.安装过程遇到 failed to init node with kubeadm 错误

  • 错误信息
    $ kind create cluster
    Creating cluster "kind" ...✓ Ensuring node image (kindest/node:v1.29.1) 🖼✓ Preparing nodes 📦✓ Writing configuration 📜✗ Starting control-plane 🕹️
    Deleted nodes: ["kind-control-plane"]
    ERROR: failed to create cluster: failed to init node with kubeadm: command "docker exec --privileged kind-control-plane kubeadm init --skip-phases=preflight --config=/kind/kubeadm.conf --skip-token-print --v=6" failed with error: exit status 126
    Command Output: cannot exec in a stopped state: unknown
    
  • 原因:kind版本太高或太低
    • 我让大家安装的是 kind 1.20.0,按照步骤来不会有问题
  • 解决方法:更换kind版本,多试几个版本
    # 重新下载合适的kind版本,更改后面的版本号
    $ go install sigs.k8s.io/kind@v0.20.0# 重新安装
    $ kind create cluster
    

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

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

相关文章

微博热搜榜单采集,微博热搜榜单爬虫,微博热搜榜单解析,完整代码(话题榜+热搜榜+文娱榜和要闻榜)

文章目录 代码1. 话题榜2. 热搜榜3. 文娱榜和要闻榜 过程1. 话题榜2. 热搜榜3. 文娱榜和要闻榜 代码 1. 话题榜 import requests import pandas as pd import urllib from urllib import parse headers { authority: weibo.com, accept: application/json, text/pl…

win10磁盘删除卷里面数据怎么恢复 win10磁盘删除卷怎么恢复

大家好,我是你们的小助手,今天我们来聊一下一个非常重要的话题——win10磁盘删除卷里面数据怎么恢复?相信很多小伙伴都曾经遇到过这种情况,不小心把重要的文件删掉了,或者格式化了整个磁盘,导致数据丢失。那…

【华为OD机试】CPU 算力分配【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 现有两组服务器A和B,每组有多个算力不同的CPU,其中 A[i] 是 A 组第 i 个CPU的运算能力, B[i] 是 B组 第 i 个CPU的运算能力。 一组服务器的总算力是各CPU的算力之和。 为了让两组服务器…

LeetCode350:两个数组的交集Ⅱ

题目描述 给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。…

Halcon中的交集、补集、全选和反选等操作

1、交集:两个ROI相交的部分 dev_open_window (0, 0, 512, 512, black, WindowHandle) gen_circle (ROI_0, 65, 150, 43) gen_circle (ROI_1, 155, 180, 63) * 交集:两个ROI相交的部分 intersection (ROI_0, ROI_1, RegionIntersection) dev_set_color (…

ResNet学习笔记

一、residual结构 优点: (1)超深的网络结构(突破1000层) (2)提出residual模块 (3)使用Batch Normalization加速训练(丢弃dropout) 解决问题: (1) 梯度消失和…

基于springboot+vue的企业人事管理系统

一、系统架构 前端:vue | element-ui 后端:springboot | mybatis-plus 环境:jdk1.8 | mysql | maven | node14 | redis 二、代码及数据库 三、功能介绍 01. 登录页 02. 首页 03. 员工入职 04. 部门员工管理-部门管理 05. 部门…

聚观早报 | 阿里巴巴计划投资韩国;魏牌蓝山新车型曝光

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 3月15日消息 阿里巴巴计划投资韩国 魏牌蓝山新车型曝光 蔚来提出长寿命电池解决方案 OpenAI与多家出版商合作 零…

《计算机网络》复试问答题总结

简述交换机工作原理?: 交换机工作在数据链路层,相当于一个多端口的网桥,它允许端口之间建立多个并发连接,实现多个结点之间的并发传输。 TCP/IP的核心思想是什么: ​ TCP/IP即传输控制协议/网际协议——指…

Python之Web开发中级教程----创建Django项目

Python之Web开发中级教程----创建Django项目 使用虚拟环境: Workon py3_django3 1.创建Django项目 django-admin startproject name 例:git的本地仓库下新建studentmanager的项目 cd /home/go/work/gtest/ django-admin startproject bookmanager 新…

Qt+FFmpeg+opengl从零制作视频播放器-3.解封装

解封装:如下图所示,就是将FLV、MKV、MP4等文件解封装为视频H.264或H.265压缩数据,音频MP3或AAC的压缩数据,下图为常用的基本操作。 ffmpeg使用解封装的基本流程如下: 在使用FFmpeg API之前,需要先注册API&a…

福派斯猫粮的适口性有何特点?

亲爱的朋友们,今天我想和大家分享一下福派斯猫粮的适口性特点。作为一位养猫多年的铲屎官,我深知猫粮的适口性对于猫咪的健康和幸福是多么重要。那么,福派斯猫粮在这方面究竟有何独到之处呢? 1️⃣ 首先,福派斯猫粮的口…

第2周 Python列表、元组刷题

第2周 Python列表、元组刷题 单击题目,直接跳转到页面刷题,一周后公布答案。 1.B2124:判断字符串是否为回文 2. P1427:小鱼的数字游戏 3. B2057:最高的分数 4. B2055:均值 5. B2056:求整数的和…

【Java多线程】关于多线程的一些案例 —— 单例模式中的饿汉模式和懒汉模式以及阻塞队列

目录 1、单例模式 1.1、饿汉模式 2.1、懒汉模式 2、阻塞队列 2.1、BlockingQueue 阻塞队列数据结构 1、单例模式 对框架和设计模式的简单理解就是,这两者都是“大佬”设计出来的,让即使是一个代码写的不太好的“菜鸡程序员”也能写出还可以的代码…

全球化服务能力,助力企业拓展海外市场,仓储物流行业解决方案

随着全球化的加速推进,越来越多的企业开始将目光投向海外市场,寻求更广阔的发展空间。然而,海外市场的拓展并非易事,需要企业具备强大的全球化服务能力。作为通信行业的领军企业,中国联通凭借其强大的网络资源和技术实…

基于SCIP的约束处理器Conshdlr添加惰性约束——以TSP问题为例

文章目录 1. TSP案例引入2. 考虑惰性约束的求解效率对比2.1 求解基础TSP模型2.2 基于SCIP的Conshdlr添加惰性约束1. TSP案例引入 在运筹学建模和求解过程中,“lazy constraints”(惰性约束)是一种动态添加约束的策略,松弛部分约束后求解得到的“可行解”,不断地进行可行性…

求职分享123

阿里学长 简历:github上找,填信息 项目: 1. 教研室项目 2. github上下载项目下来做 3. 对于项目,要把个人工作详细地准备下来。 4. 给面试官挖坑。 5. 企业实习是巨大的加分项。 知识储备 刷题 不卷,leetcod…

同步和异步程序的关联和区别是?Guide to Synchronous and Asynchronous Code

2024/3/12 发布 正在寻觅一份前端开发工作,如果您觉得这篇文章对你有所帮助,这是我的简历1 在这篇文章中你能学习和理解:NodeJS是如何工作、如何处理所有发送给服务器的函数(无论同步或者异步)和请求、Event Loops in …

rk36566 uboot - dm 模型数据结构与常见接口

文章目录 一、数据结构1、udevice2、driver3、uclass4、uclass\_driver5、 总结6、device\_probe 二、常用接口1、udevice 创建接口1) device_bind_with_driver_data2) device_bind3) device_bind_by_name 2、uclass 操作函数1) uclass_get2) uclass_get_name3) uclass_find_de…

LeetCode 面试经典150题 27.移除元素

题目: 给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。 元素的顺序可以改变。你不需要考虑数…