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

新版K8s:v1.28拉取Harbor仓库镜像以及本地镜像(docker弃用改用containerd,纯纯踩坑)

目录

    • 一、项目概述
    • 二、环境
    • 三、项目样式
        • Harbor
        • kuboard
        • 运行样式
    • 四、核心点
        • Harbor安装
        • config.toml文件修改(containerd)
        • ctr、nerdctl相关命令
        • kuboard工作负载
    • 五、总结

一、项目概述

使用Kuboard作为k8s集群的管理平台,Harbor作为镜像仓库,拉取Harbor镜像仓库的镜像运行。
从K8s1.24版本之后,k8s就逐渐弃用了docker,采用containerd来管理,这个很重要。

二、环境

服务器IP地址备注
K8sMaster192.168.2.138kuboard,Master管理节点
K8sWorker01192.168.2.139Worker工作节点
K8sWorker02192.168.2.140Worker工作节点
Harbor192.168.2.142Harbor镜像仓库

三、项目样式

Harbor

在这里插入图片描述

kuboard

在这里插入图片描述

运行样式

在这里插入图片描述

四、核心点

Harbor安装

Harbor安装网上有很多教程,可以使用http的,也可以使用https的,自行选择,我这里使用的http的,不过问题有点多,不过拉取镜像也能用,测试环境可以用http的,但是深生产环境建议使用https的。

config.toml文件修改(containerd)

K8s:v1.24版本以后拉取镜像采用containerd,所以你需要修改containerd的配置文件,记得每个节点都需要修改,修改一份后,使用scp或者ansible命令进行复制就可以

#scp
scp /etc/containerd/config.toml root@k8sworker01:/etc/containerd
scp /etc/containerd/config.toml root@k8sworker02:/etc/containerd#ansible
ansible k8s -m copy -a "src=/etc/containerd/config.toml dest=/etc/containerd"

1、自动生成config.toml文件

# 生成默认配置
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml

2、修改镜像源

# vi编辑配置文件
sudo vi /etc/containerd/config.toml# 将 pause 修改为国内源镜像,找到 sanbox_image修改前缀为国内源
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.6"# 找到 SystemdCgroup
SystemdCgroup = true

3、修改Habor镜像仓库相关配置:拉取Harbor镜像仓库,还需要修改如下信息,在文件144行左右,修改完成记得保存,重启containerd

systemctl daemon-reload
systemctl restart containerd

在这里插入图片描述

ctr、nerdctl相关命令

使用containerd,需要使用ctr与nerdctl命令来进行查看镜像,命名空间,进行推送等,k8sV1.24版本拉取本地镜像是从containerd镜像库里面拉取的,不是从docker images里面拉取的,如果你没有Harbor,要确保每个工作节点上面k8s.io命名空间有镜像都有镜像,这里是新版本k8s的坑
在这里插入图片描述
在这里插入图片描述

#下载镜像nginx
ctr image pull docker.io/library/nginx:alpine
#查看命名空间
ctr ns ls
#查看default空间镜像
ctr image ls
#查看k8s.io空间镜像
ctr -n k8s.io image ls
#打标签
ctr -n k8s.io images tag docker.io/library/flaskweb:v1.0.0 192.168.2.142:8800/test/flaskweb:v1.0.0
#导入到k8s.io空间镜像
ctr -n k8s.io image import flaskweb.tar.gz
#从镜像仓库下载镜像,http需要如下写法,不然会报错
ctr images pull --plain-http=true --skip-verify  --user admin:Harbor12345 192.168.2.142:8800/test/flaskweb:v1.0.0
#推送镜像
ctr -n k8s.io image push --plain-http=true --skip-verify  --user admin:Harbor12345 192.168.2.142:8800/test/flaskweb:v1.0.0
#nerdctl命令与docker命令很像
nerdctl images
nerdctl run

在这里插入图片描述

kuboard工作负载

kuboard新建工作负载,在选择容器镜像时,新建一个密文,如果你有Harbor可以始终拉取新镜像,如果你走本地k8s.io空间的镜像时,改成Never从不拉取镜像。如果保存后,提示镜像无法拉取Error: ErrImagePull,可以在每台工作节点上面使用ctr images pull来拉取镜像实施试试。在这里插入图片描述在这里插入图片描述

五、总结

说实话有点后悔装Kubernetes:V1.28版本了,在1.24版本后弃用docker,改用containerd,在我完成整个实验前80%的时间我是不晓得的,所以就一直傻乎乎的使用docker login登录Harbor,docker pull 拉取镜像,docker images来查看镜像,所有节点都是可以从Harbor拉取镜像,登录Harbor,但就是k8s无法自动拉取Harbor镜像与本地镜像,查了很多资料,但都是说docker的配置,很少提到containerd的概念,最后查到k8s官网才晓得这个概念,最后换了一个思路才解决K8s1.28版本使用kuboard来拉取Harbor镜像仓库镜像。抱怨归抱怨,一个星期的尝试,对kubectl命令,k8s的架构也越来越熟悉,继续加油!

相关文章:

新版K8s:v1.28拉取Harbor仓库镜像以及本地镜像(docker弃用改用containerd,纯纯踩坑)

目录 一、项目概述二、环境三、项目样式Harborkuboard运行样式 四、核心点Harbor安装config.toml文件修改(containerd)ctr、nerdctl相关命令kuboard工作负载 五、总结 一、项目概述 使用Kuboard作为k8s集群的管理平台,Harbor作为镜像仓库,拉取Harbor镜像…...

Unity URP切换品质和Feature开关的性能问题

现在对我的项目进行安卓端发布,需要切换品质和一些Feature开关。 我是这样做的。 划分品质 首先Renerer分为2个Android和PC,图中其他不用参考。 每个副本的URP Asset分为pc和android,例如图中的 hall和hall_android。 我们可以看到hall用的…...

jmeter解决返回unicode编辑

一般乱码有两种方法来解决: 1、修改配置文件jmeter.properties中默认编码格式ISO-8859-1(不支持中文),修改为utf-8 sampleresult.default.encoding utf-82、添加BeanShell PostProcessor加入 prev.setDataEncoding("utf-8")3、还有一种返回…...

C# 基础入门

第二章 C# 语法基础 2-1 C# 中的关键字 关键字,是一些被C#规定了用途的重要单词。 在Visual Studio的开发环境中,关键字被标识为蓝色,下图代码中,用红方框圈出的单词就是关键字。 关键字 class ,这个关键字的用途是…...

PHP 支付宝(单笔转账到银行账户接口)

alipay.fund.trans.tobank.transfer(单笔转账到银行账户接口) 小程序文档 - 支付宝文档中心 一、下载支付宝SDK,现有版本v1、v2、v3 https://github.com/alipay/alipay-sdk-php-all github 慢的话,DNS 直达即可 140.82.112.3 github.com 【host文…...

【Java万花筒】Java安全卫士:从密码学到Web应用攻击

Java安全锦囊:从Web应用攻击到加密算法,助你建立强固的开发堡垒 前言 在当今数字化时代,安全性至关重要,特别是对于Java开发者而言。本文将深入探讨Java安全与加密领域的关键库和技术,包括Bouncy Castle、Jasypt、Ke…...

redis安装-Linux为例

可以下载一个Shell或者MobaXterm工具,便于操作 在redis官网下载压缩包 开始安装 安装依赖 yum install -y gcc tcl切换目录 切换目录后直接把redis安装包拖到/user/local/src/下 cd /user/local/src/解压然后安装 #解压 tar -zxvf redis-7.2.4.tar.gz #安装 …...

iOS长按时无法保存图片问题解决方案

在使用iOS设备的用户中,相信很多人都有过在浏览网页时遇到长按时无法保存图片的困扰。这主要是因为网页开发者为了保护版权或隐私,默认屏蔽掉了图片长按时保存的功能。 具体来说,问题出在-webkit-touch-callout这个CSS属性上。这个属性用于定…...

Datawhale 强化学习笔记(一)

参考 在线阅读文档 github 教程 开源框架 JoyRL datawhalechina/joyrl: An easier PyTorch deep reinforcement learning library. (github.com) 策略梯度算法的两种不同的推导版本。 强化学习中的一些核心问题,比如优化值的估计、解决探索与利用等问题。 从传统强…...

首届PolarDB开发者大会在京举办,阿里云李飞飞:云数据库加速迈向智能化

1月17日,阿里云PolarDB开发者大会在京举办,中国首款自研云原生数据库PolarDB发布“三层分离”新版本,基于智能决策实现查询性能10倍提升、节省50%成本。此外,阿里云全新推出数据库场景体验馆、训练营等系列新举措,广大…...

003-90-15【SparkSQLDFDS】慈航寺庙山脚下八卦田旁油菜花海深处人家王大爷家女儿用GPT学习DataSet的基本操作

003-90-14【SparkSQL&DF&DS】慈航寺庙山脚下八卦田旁油菜花海深处人家王大爷家女儿用GPT学习DataSet的基本操作 【SparkSQL&DF&DS】Dataset 的创建和使用 【SparkSQL&DF&DS】2,Dataset 的创建和使用1, 创建2, show3, map4, as5, select6 f…...

代码随想录-刷题第五十七天

42. 接雨水 题目链接:42. 接雨水 思路:本题十分经典,使用单调栈需要理解的几个问题: 首先单调栈是按照行方向来计算雨水,如图: 使用单调栈内元素的顺序 从大到小还是从小到大呢? 从栈头&…...

flutter 播放SVGA动图

SVGAPlayer-Flutter:这是一个轻量级的动画渲染库,可以通过Flutter CustomPainter原生渲染动画,为您带来高性能,低成本的动画体验123。 您可以按照以下步骤使用 SVGAPlayer-Flutter 插件: 1.在 pubspec.yaml 文件中添…...

鸿蒙开发软件汉化

一、打开设置 File>Settings>Plugins>Marketplace,输入Chinese搜索插件(有的人是搜不到的),但别慌,选择Marketplace傍边的 Installed 按钮,里面就有Chinese插件(如果搜索出来的东西比较多往下就可…...

Three.js Tri-panner (三面贴图) 材质 两种实现方式

文章目录 介绍自定义shaderNodeMaterial骨骼材质特殊处理 介绍 Tri-panner 在babylonjs中有支持 但是three.js目前的基础材质并不支持 需要自己定义shader 或者使用目前还没有什么完善的文档的 NodeMaterial 下面展示两种实现方式 自定义shader /*** description: 替换三角面…...

Docker部署Flask项目

Docker部署Flask项目 一、准备项目代码二、编写Dockerfile三、服务器部署 一、准备项目代码 这里写了一个简单的Flask的demo&#xff0c;源代码如下&#xff1a; from flask import Flaskapp Flask(__name__)app.route("/") def index():return "<h1 styl…...

Git将某个文件合并到指定分支

企业开发中&#xff0c;经常会单独拉分支去做自己的需求开发&#xff0c;但是某些时候一些公共的配置我们需要从主线pull&#xff0c;这时候整个分支merge显然不合适 1.切换至待合并文件的分支 git checkout <branch>2.将目标分支的单个文件合并到当前分支 git checkou…...

Dockerfile构建镜像以及阿里云上传

前言 我们在使用docker部署微服务项目的时候会发现这样一个问题&#xff1a;每个服务构建出的镜像文件都很大&#xff0c;几百M&#xff0c;有些原始镜像也已经占据了很多内存了... 这种大的镜像往往都会导致迁移的速度变慢。其实我们启动容器主要最需要的镜像是jdk&#xff0…...

锂离子电池建模综述

锂电池很有吸引力&#xff0c;因为在元素周期表中&#xff0c;锂是一种非常正电的元素&#xff0c;它也恰好是最轻的金属&#xff0c;密度是水的一半。通常&#xff0c;电池由串联/并联的电化学电池组成。每个电池都包含一个负极&#xff08;放电时为阳极&#xff09;和一个由电…...

获取淘宝商品销量数据的方法分享(API、爬虫技术)

随着电子商务的飞速发展&#xff0c;获取淘宝商品销量数据的需求越来越强烈。无论是商家、分析师还是研究人员&#xff0c;都需要这些数据来了解市场趋势、竞争对手情况以及制定营销策略。本文将分享如何通过API和爬虫技术获取淘宝商品销量数据。 一、API获取数据 淘宝开放平…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

python如何将word的doc另存为docx

将 DOCX 文件另存为 DOCX 格式&#xff08;Python 实现&#xff09; 在 Python 中&#xff0c;你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是&#xff0c;.doc 是旧的 Word 格式&#xff0c;而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...