k8s:將打包好的 Kubernetes 集群鏡像推送到Harbor私有鏡像倉庫

本文介紹了在離線環境中部署Harbor鏡像倉庫的完整流程。首先通過腳本創建多個Harbor項目,然后使用KubeKey工具將預打包的Kubernetes鏡像(kubesphere.tar.gz)推送到Harbor倉庫。接著配置containerd以支持從私有倉庫拉取鏡像,包括設置TLS證書和鏡像倉庫端點。最后解決Kubernetes 1.26.12安裝過程中pause鏡像的拉取問題,通過重命名本地鏡像的方式替代原本需要從registry.k8s.io獲取的pause鏡像。整個過程涉及Harbor項目創建、鏡像推送、containerd配置和鏡像重命名等關鍵步驟。

離線部署Harbor,詳見我另外一篇博客《k8s:docker compose離線部署haborV2.13.1及采用外部的postgresql及redis數據庫》

一、創建 harbor 項目


#cd /app/KubeSphere/setup
vi create_project_harbor.sh

#!/usr/bin/env bash

# Copyright 2018 The KubeSphere Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# ? ? http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

url="https://dockerhub.kubekey.local" ?# 或修改為實際鏡像倉庫地址
user="admin"
passwd="Harbor12345"

harbor_projects=(
? ? ? ? ks
? ? ? ? kubesphere
? ? ? ? kubesphereio
? ? ? ? coredns
? ? ? ? calico
? ? ? ? flannel
? ? ? ? cilium
? ? ? ? hybridnetdev
? ? ? ? kubeovn
? ? ? ? openebs
? ? ? ? library
? ? ? ? plndr
? ? ? ? jenkins
? ? ? ? argoproj
? ? ? ? dexidp
? ? ? ? openpolicyagent
? ? ? ? curlimages
? ? ? ? grafana
? ? ? ? kubeedge
? ? ? ? nginxinc
? ? ? ? prom
? ? ? ? kiwigrid
? ? ? ? minio
? ? ? ? opensearchproject
? ? ? ? istio
? ? ? ? jaegertracing
? ? ? ? timberio
? ? ? ? prometheus-operator
? ? ? ? jimmidyson
? ? ? ? elastic
? ? ? ? thanosio
? ? ? ? brancz
? ? ? ? prometheus
)

for project in "${harbor_projects[@]}"; do
? ? echo "creating $project"
? ? curl -u "${user}:${passwd}" -X POST -H "Content-Type: application/json" "${url}/api/v2.0/projects" -d "{ \"project_name\": \"${project}\", \"public\": true}" -k ?# 注意在 curl 命令末尾加上 -k
done
?


#chmod +x create_project_harbor.sh
./create_project_harbor.sh

?

二、推送到harbor倉庫(時間比較久)


#cd /app/KubeSphere/setup
./kk artifact image push -f config-sample.yaml -a /app/KubeSphere/setup/kubesphere.tar.gz?

./kk:KubeKey 是一個用于部署 Kubernetes 和 KubeSphere 集群的工具。

artifact image push:KubeKey 的子命令,專門用于推送預先打包好的 Kubernetes 或 KubeSphere 鏡像到指定的鏡像倉庫。

-f 參數用于指定配置文件路徑。

config-sample.yaml 集群準備的配置文件,其中包含了關于如何連接到私有鏡像倉庫的信息(如認證信息、倉庫地址等),以及其他與集群相關的配置。

-a 參數用于指定本地的鏡像歸檔文件路徑。

/app/KubeSphere/setup/kubesphere.tar.gz 是生成的包含所有必要鏡像的壓縮包。這個文件通常包含了搭建 Kubernetes 或 KubeSphere 所需的所有 Docker 鏡像,

?注:kubesphere.tar.gz 的構建,詳見《K8s:離線部署Kubernetes1.26.12及采用外部Harbor》的第二章。

三、編輯 containerd 的配置文件(通常位于 /etc/containerd/config.toml):

為了保證通過crictl能從harbor拉取jar,需要進行如下配置:
vi /etc/containerd/config.toml

disabled_plugins = []
[plugins."io.containerd.grpc.v1.cri"]
? enable_selinux = false
? selinux_category_range = 1024
? disable_seccomp = true
? sandbox_image = "172.23.123.117:8443/kubesphereio/pause:3.9"
[plugins."io.containerd.grpc.v1.cri".registry]
?[plugins."io.containerd.grpc.v1.cri".registry.configs]
? [plugins."io.containerd.grpc.v1.cri".registry.configs."172.23.123.117:8443"]
? ? tls = true
? ? cert_file = "/etc/containerd/certs.d/172.23.123.117:8443/172.23.123.117.cert"
? ? key_file = "/etc/containerd/certs.d/172.23.123.117:8443/172.23.123.117.key"
? ? ca_file = "/etc/containerd/certs.d/172.23.123.117:8443/ca.crt"
? ? skip_verify = false
[plugins."io.containerd.grpc.v1.cri".registry.mirrors]
? [plugins."io.containerd.grpc.v1.cri".registry.mirrors."registry.k8s.io"]
? ? endpoint = ["https://172.23.123.117:8443"]
? [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
? ? endpoint = ["https://172.23.123.117:8443"]


重啟
sudo systemctl daemon-reload
sudo systemctl restart containerd

?四.增加registry.k8s.io/pause

在安裝Kubernetes1.26.12時,需要registry.k8s.io/pause,因為是離線環境,所以手動構建.
從私有庫拉取3.9版本的pause


crictl pull 172.23.123.117:8443/kubesphereio/pause:3.9


通過打標簽方式,將3.9版本的pause變成 registry.k8s.io/pause:3.8,從而解決離線環境拉取不到 registry.k8s.io/pause:3.8的問題。


ctr -n=k8s.io image tag 172.23.123.117:8443/kubesphereio/pause:3.9 registry.k8s.io/pause:3.8

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/916634.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/916634.shtml
英文地址,請注明出處:http://en.pswp.cn/news/916634.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IntelliJ IDEA中管理多版本Git子模塊的完整指南

1.背景介紹項目是父子工程。父工程XXX-ZZZ-CCC。子模塊XXX-api在線上git網站管理,有多個分支版本。現在需要接收別人代碼,導入到本機管理。可以實現本機切換,修改,上傳。2.創建本地倉庫并拉取所有版本2.1.創建目錄在D:\ideaworkspace\midend-…

Android ADB命令之內存統計與分析

一、核心命令總覽工具 / 命令用途示例adb shell dumpsys meminfo查看設備全局內存狀態adb shell dumpsys meminfoadb shell dumpsys meminfo <package>獲取應用詳細內存分類統計adb shell dumpsys meminfo com.example.appadb shell top動態查看進程內存和 CPU 占用adb s…

算法思維進階 力扣 300.最長遞增子序列 暴力搜索 記憶化搜索 DFS 動態規劃 C++詳細算法解析 每日一題

目錄零、題目描述一、為什么這道題值得你深入理解&#xff1f;二、題目拆解&#xff1a;提取核心關鍵點三、明確思路&#xff1a;從暴力到優化的完整進化3. 進一步優化&#xff1a;動態規劃&#xff08;自底向上遞推&#xff09;4. 終極優化&#xff1a;貪心 二分查找&#xf…

圖解網絡-小林coding筆記(持續更新)

大綱 #mermaid-svg-trl6Q4B1uDO1z05w {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-trl6Q4B1uDO1z05w .error-icon{fill:#552222;}#mermaid-svg-trl6Q4B1uDO1z05w .error-text{fill:#552222;stroke:#552222;}#merm…

安寶特案例丨AR+AI+SOP?3大技術融合革新軍工航天領域

軍工、航空、航天領域存在 “小批量、多品種、依賴人工經驗裝配”的特性&#xff0c;這長期制約著生產效率與產品質量的提升。 技術融合應用案例 1 Arbigtec 裝配效率提升類&#xff1a; 某型導彈制導系統裝配&#xff1a;采用 AR 眼鏡與 AI 視覺引導系統&#xff0c;200 精…

ip link show 查看/配置網絡接口

ip link show&#xff08;或簡寫為 ip link&#xff09;是 Linux 系統中用于查看和配置網絡接口&#xff08;網卡、虛擬接口等&#xff09;的命令&#xff0c;屬于 iproute2 工具集的一部分。它是現代 Linux 系統中替代傳統 ifconfig 命令的更強大工具。命令詳解 基本語法 ip l…

電科金倉新一代數據庫一體機:以 “云數據庫 - AI 版” 引領 AI 時代數據庫變革

前言 AI時代的數據庫一體機市場&#xff0c;只能用兩個詞來形容&#xff1a;高手云集&#xff0c;戰況激烈&#xff01; 國際巨頭仍在高端市場占據主導地位&#xff0c;但在國產替代的沖擊下&#xff0c;也開始另尋突破口&#xff1b;國內科技大廠攻勢迅猛&#xff0c;通過開源…

IT運維的365天--033 跨交換機部署沒有單獨供電口的愛快AP到另一個地方去

前情提要&#xff1a;由于工作需要&#xff0c;領導要求在車間也添加一個無線網絡供員工和設備使用&#xff0c;之前公司已經有一個愛快網絡供員工使用&#xff0c;且物理隔絕部署在集團辦公樓這邊了。我一向是不喜歡碰到一個小事就拉一條網線&#xff0c;那樣不得搞的跟蜘蛛網…

Flutter開發實戰之路由與導航

第5章:路由與導航 在移動應用開發中,頁面間的跳轉是最基本也是最重要的功能之一。就像我們在現實生活中需要從一個房間走到另一個房間一樣,在App中,用戶需要在不同的界面間自由切換。Flutter提供了強大而靈活的路由系統來管理這些頁面跳轉,本章將深入探討Flutter的路由與…

Android 圖像編輯實戰指南:從基礎操作到進階效果

在移動應用中&#xff0c;圖像編輯功能已成為標配 —— 社交 APP 需要裁剪頭像&#xff0c;電商 APP 需要給商品圖加水印&#xff0c;工具 APP 需要提供濾鏡效果。看似簡單的 “裁剪”“縮放” 背后&#xff0c;實則涉及 Bitmap 像素操作、內存管理、性能優化等核心技術。很多開…

Java從入門到精通!第十八天(JDK17安裝以及網絡編程) 完結篇!!!

三、網絡編程1&#xff0e;網絡編程概述Java 是 Internet 上的語言&#xff0c;它從語言級上提供了對網絡應用程序的支持&#xff0c;程序員能夠很容易開發常見的網絡應用程序。2&#xff0e;網絡的基礎&#xff08;1&#xff09;計算機網絡把分布在不同地理區域的計算機與專門…

C++ STL常用容器總結(vector, deque, list, map, set)

C STL常用容器總結&#xff08;vector, deque, list, map, set&#xff09;1. vector&#xff08;動態數組&#xff09;特點定義和初始化常用操作遍歷方法2. deque&#xff08;雙端隊列&#xff09;特點定義和初始化常用操作3. list&#xff08;雙向鏈表&#xff09;特點定義和…

智能小車(F103C8T6)RT-THREAD版

前言 前面幾章學會了PWM,超聲波等&#xff0c;現在剛好結合起來控制智能小車 1&#xff1a;環境 KEIL5.38 RT-THREAD 3.1.3 STM32F103C8T6 2&#xff1a;硬件配件&#xff08;原來網上買的一套&#xff09; STM32F103C8T6 一個 MCU底板 一個 SG90 舵機 一個 紅外避障 2個 hc-…

Linux 遠程連接與文件傳輸:從基礎到高級配置

Linux 遠程連接與文件傳輸&#xff1a;從基礎到高級配置 在 Linux 系統管理中&#xff0c;遠程連接和文件傳輸是核心技能。SSH 協議提供了安全的遠程訪問方式&#xff0c;而基于 SSH 的 SFTP 和 SCP 則解決了跨服務器文件傳輸的需求。下面將詳細解析 SSH 服務配置、三種遠程操作…

17. 如何修改 flex 主軸方向

總結 flex-direction: row | row-reverse | column | column-reverse;一、作用說明 在 Flex 布局中&#xff0c;默認的主軸&#xff08;main axis&#xff09;方向是 水平向右&#xff08;即 row&#xff09;。 通過設置 flex-direction 屬性&#xff0c;可以靈活改變主軸的方向…

【Linux】重生之從零開始學習運維之mysql用戶管理

mariadb用戶管理創建用戶create user test210.0.0.% identified by 123456;用戶改名rename user test210.0.0.% to test310.0.0.%;用戶刪除 drop user test310.0.0.%;mysql用戶管理創建用戶create user test210.0.0.% identified by 123456;用戶改名rename user test210.0.0.% …

matlab小計

3.變量命名_嗶哩嗶哩_bilibili clc 清空頁面 文件名&#xff1a;字母開頭 clc:清除命令行窗口 clear all&#xff1a;清除工作區變量 編譯器里面 %%注釋 24 2-4 2*4 4/2 cumsum累計和 312 6123 movsum:滑窗計算數值 eg步長是3 1236 2349 6 9 ... 按列求最大值 先列…

getdents64系統調用及示例

getdents64 函數詳解 1. 函數介紹 getdents64 是 Linux 系統中用于讀取目錄內容的底層系統調用。可以把這個函數想象成一個"目錄內容掃描儀"——它能夠高效地掃描目錄中的所有文件和子目錄,就像超市的掃描槍快速讀取商品條碼一樣。 與高級的目錄操作函數(如 rea…

HBuilder X打包發布微信小程序

一、獲取AppId 二、獲取微信小程序AppId 三、發行->微信小程序&#xff0c;調起微信開發者工具 四、點擊上傳,上傳至微信公眾平臺 五、微信公眾平臺查看版本管理 完結&#xff01;&#xff01;&#xff01;

docker排查OOM

思路&#xff1a; 1.先從代碼程序上排查&#xff0c;線程池創建是否使用ThreadPoolExecutor&#xff0c;線程池各項設置是否合理。 任務對象是否釋放&#xff0c;網關是否需要限流。 2.服務器內存大小&#xff0c;cpu使用率&#xff0c;存儲空間大小&#xff0c;java程序啟動…