k8s,v1.30.4,安裝使用docker

一.前置概念

Docker 與 Kubernetes 共用同一個 containerd 進程 時,只要滿足以下 3 個條件,就不會沖突:

檢查點要求原因
cgroup-driverkubelet 與 containerd 必須同為?systemd二者不一致會導致 Pod 無法調度
Unix socketkubelet 指向?/run/containerd/containerd.sock;Docker 也復用該 socket不搶占,不重復啟動 containerd
端口/目錄無重疊
特性cri-dockerdcontainerd (內置 CRI)
本質一個適配器墊片一個完整的容器運行時,原生實現了 CRI 接口
目的為了在?dockershim?被移除后,讓用戶還能繼續使用 Docker Engine作為 Kubernetes 的底層運行時。作為 Kubernetes?默認的、推薦的容器運行時。
架構多一層翻譯,復雜度更高。kubelet?->?cri-dockerd?->?dockerd?->?containerd?->?runc架構更簡潔。kubelet?->?containerd (CRI)?->?runc
推薦度不推薦。僅作為舊集群遷移的臨時過渡方案強烈推薦。是所有新集群的標準選擇
未來是舊技術的延伸,會逐步淘汰。是現在和未來的標準。

你有兩種主要的實現路徑,其核心區別如下表所示:

特性方案 A:安裝 Docker 作為獨立工具(推薦)方案 B:使用 cri-dockerd 讓 K8s 接管 Docker
本質Docker 作為獨立的工具,用于構建鏡像、運行容器等讓 Kubernetes 使用 Docker 作為其底層容器運行時
K8s 運行時保持不變,仍是 containerd需要變更,從 containerd 改為 Docker (通過 cri-dockerd)
管理方式容器和鏡像由?Docker?和?containerd?分別管理容器和鏡像由?Kubernetes?通過?Docker?統一管理
復雜度,簡單安裝配置即可,需安裝配置 cri-dockerd 并調整 K8s 組件配置
穩定性風險,不影響現有 K8s 集群,更改運行時可能引入風險
適用場景需使用 Docker 命令構建鏡像測試容器確實需要讓 K8s 使用 Docker 來創建和管理容

二.安裝docker

1.解決containerd沖突,安裝docker

**注意:安裝的docker版本需要支持k8s里面的containerd版本,docker不額外安裝containerd,使用同一個containerd

# 確保已安裝 yum-utils,它提供了 yumdownloader 命令
sudo yum install yum-utils -y # 添加倉庫
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyumdownloader --resolve --destdir=/tmp docker-ce-24.0.* docker-ce-cli-24.0.* docker-compose-plugin 命令說明:--resolve:自動解析并下載所有依賴的包。這個參數非常重要,否則你只下載指定的包,安裝時會因為缺少依賴而失敗47。--destdir=/tmp:指定將下載的 RPM 包存放于?/tmp?目錄。你可以根據需要修改為其他路徑。

2.手動強制安裝(忽略依賴)

cd /tmp
sudo rpm -Uvh --nodeps docker-ce-24.0.* docker-ce-cli-24.0.*

3.配置

mkdir -p /etc/docker
vim /etc/docker/daemon.json
{"exec-opts": ["native.cgroupdriver=systemd"],"storage-driver": "overlay2"
}// 強制 cgroup 驅動為 systemd,與 kubelet 保持一致
// 使用性能較好的overlay2存儲驅動

4.啟動

# 啟動并設為開機自啟
systemctl daemon-reload
systemctl enable --now docker
docker version

5.安裝docker-compose?

sudo rpm -ivh docker-compose-plugin*-i	install(安裝)
-v	verbose(顯示詳細過程)
-h	hash(進度條)

6.使用的命令查看的容器服務不同,原因containerd的名稱空間隔離


(1)雖然物理上是同一個 containerd 進程,Docker 與 Kubernetes 各自把容器放在 不同的 containerd 命名空間:

  • Docker 默認使用 moby

  • Kubernetes CRI 使用 k8s.io

工具命名空間能看到誰的容器
docker ps?/?docker imagesmoby僅 Docker 手動啟動的容器
crictl ps?/?crictl imagesk8s.io僅 Kubernetes Pod 容器
nerdctl -n k8s.io psk8s.ioPod 容器
# 看看 containerd 里有哪些命名空間
sudo ctr ns ls

(2)把 Docker 鏡像搬到 k8s.io

# 把本地 Docker 鏡像導出
docker save nginx:latest | sudo ctr -n k8s.io images import -

(3)containerd操作命令


7.使用自己的harbor

(1)containerd默認拉取鏡像的地址配置

# 如果沒有這個文件
[root@master ~]# containerd config default >/etc/containerd/config.toml[root@master ~]# vim /etc/containerd/config.tomlsandbox_image = "harbor:443/k8s/pause:3.9"#這行配置指定了 containerd 用于創建 Pod 沙箱(sandbox)的鏡像。在 Kubernetes 中,每個 Pod 都需要一個基礎的沙箱鏡像來啟動,這個鏡像通常是一個輕量級的、只包含基本功能的鏡像,用于作為容器運行的基礎環境。pause 鏡像就是這樣一個鏡像,它通常用于在 Pod 內部創建一個容器,作為該 Pod 所有其他容器的“父容器”
這意味著 containerd 將從你的 Harbor 倉庫中拉取這個特定的 pause 鏡像版本。SystemdCgroup = true# 配置鏡像倉庫
末尾插入:[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]endpoint = ["https://192.168.88.240:443"][plugins."io.containerd.grpc.v1.cri".registry.mirrors."harbor:443"]endpoint = ["https://192.168.88.240:443"][plugins."io.containerd.grpc.v1.cri".registry.configs."192.168.88.240:443".tls]insecure_skip_verify = true
#這部分配置允許 containerd 在與 192.168.88.240:443 通信時跳過 TLS 證書驗證。[root@master ~]# systemctl enable --now kubelet containerd
docker pull <Harbor地址>/<項目名>/<鏡像名>:<標簽>

8.nerdctl命令使用和安裝

(1)下載地址

curl -L https://github.com/containerd/nerdctl/releases/download/v1.7.7/nerdctl-full-1.7.7-linux-amd64.tar.gz -o nerdctl-full.tar.gz

(2)將下載的文件解壓到 /usr/local 目錄

sudo tar Cxzvf /usr/local nerdctl-full.tar.gznerdctl --version

(3)命令使用

(2)nerdctl?- 開發者之友

場景:?你需要在裝了 Containerd 的機器上像用 Docker 一樣構建、拉取、運行鏡像。

重要提示:?

(1)要操作 K8s 的鏡像(在?k8s.io?命名空間),必須加?-n?參數:

(2)拉取鏡像必須寫完整鏡像倉庫地址

描述示例
run運行一個容器?(最常用)sudo nerdctl run -d --name nginx -p 80:80 nginx:alpine
ps查看容器列表sudo nerdctl ps -a
images查看鏡像列表sudo nerdctl images
pull拉取鏡像sudo nerdctl pull nginx:alpine
exec進入容器sudo nerdctl exec -it nginx sh
build構建鏡像?(需要 BuildKit)sudo nerdctl build -t my-app:1.0 .
network管理網絡sudo nerdctl network ls
compose運行 Docker Composesudo nerdctl compose up -d
名稱空間nerdctl namespace ls

(3)配置harbor倉庫跳過證書認證

# 1. 創建證書配置目錄(目錄名必須與鏡像倉庫地址完全一致)
sudo mkdir -p /etc/containerd/certs.d/harbor:443# 2. 創建 hosts.toml 配置文件
sudo tee /etc/containerd/certs.d/harbor:443/hosts.toml > /dev/null <<EOF
server = "https://harbor:443"[host."https://harbor:443"]capabilities = ["pull", "push", "resolve"]skip_verify = true
EOF# 3. 重啟 containerd
sudo systemctl restart containerd

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

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

相關文章

開源AI智能名片鏈動2+1模式S2B2C商城小程序服務提升復購率和轉介紹率的研究

摘要&#xff1a;本文聚焦于開源AI智能名片鏈動21模式S2B2C商城小程序在提升客戶復購率和轉介紹率方面的作用。服務對于促進客戶復購和轉介紹的重要性不言而喻&#xff0c;維護老客戶的成本遠低于開發新客戶&#xff0c;微商通過推出各項服務來贏得客戶忠誠。本文深入探討開源A…

[數據結構] ArrayList(順序表)與LinkedList(鏈表)

目錄 1.List 1.1 什么是List 1.2 常用的方法 1.3 List的使用 2. 線性表 3. ArrayList 類(順序表) 3.1 順序表定義 3.2 ArrayList鏈表的功能模擬實現 3.3 ArrayList簡介 3.4 ArrayList的構造方法 3.5 ArrayList的遍歷 3.5 ArrayList的具體使用實例 3.5.1 楊輝三角 …

Hive使用Tez引擎出現OOM的解決方法

環境是Hive以Tez作為引擎&#xff0c;然后使用客戶端&#xff08;比如DataGrip&#xff09;連接Hive運行SQL查詢&#xff0c;運行過程中報錯信息如下&#xff1a;java.lang.OutOfMemoryError: Java heap space…連接工具以DataGrip為例&#xff0c;解決辦法如下&#xff1a; --…

SQL面試題及詳細答案150道(81-100) --- 子查詢篇

《前后端面試題》專欄集合了前后端各個知識模塊的面試題,包括html,javascript,css,vue,react,java,Openlayers,leaflet,cesium,mapboxGL,threejs,nodejs,mangoDB,MySQL,Linux… 。 前后端面試題-專欄總目錄 文章目錄 一、本文面試題目錄 81. 什么是子查詢?子查…

筆記:ubuntu安裝matlab

記錄一下ubuntu安裝matlab的過程 一、進入桌面 雖然系統是ubuntu server&#xff0c;但是安裝matlab最好還是有桌面。這里使用todesk等工具&#xff0c;進入桌面進行遠程安裝。 二、創建matlab賬號 由于學校已經提供了matlab的賬號&#xff0c;只需要用自己的學生郵箱進行注冊即…

CentOS 7 編譯安裝 OpenSSL 3.4.2

CentOS 7默認已經安裝了OpenSSL&#xff0c;不過版本比較低 openssl version結果為&#xff1a;OpenSSL 1.0.2k-fips 26 Jan 2017 已經無法滿足需求 OpenSSL 源碼下載鏈接&#xff1a;https://www.openssl-library.org/source/ 下載源碼包為&#xff1a;https://github.com…

python advance -----object-oriented

alt shift 上下鍵&#xff0c;行代碼上下移動0

具身智能的工程落地:視頻-控制閉環的實踐路徑

引言&#xff1a;從“能算會說”到“會看能做” 具身智能真正的門檻&#xff0c;不在于把模型做得更大&#xff0c;而在于把感知—決策—執行焊成一條低時延、穩態可控的閉環工程鏈路&#xff1a;從相機/麥克風采集&#xff0c;到編解碼與傳輸&#xff0c;再到邊/端推理、指令…

STM32 - Embedded IDE - GCC - 如何在工程中定義一段 NoInit RAM 內存

導言如上所示&#xff0c;Keil創建一段NoInit內存同樣是通過圖形界面來完成&#xff0c;IRAM2的起始地址0x2000000&#xff0c;大小8bytes。NoInit的意思是程序初始化時&#xff0c;不會將內存清0初始化。如上所示&#xff0c;在MEMORY段&#xff0c;將64K的RAM內存劃一塊8byte…

MyBatisX代碼生成插件在IDEA中的安裝配置、連接數據庫表生成代碼快速開發示例

場景 MyBatisX插件介紹 MybatisX是一款基于IDEA的快速開發插件&#xff0c;由MyBatis-Plus團隊開發維護&#xff0c;為效率而生。 它的主要功能如下&#xff1a; 支持mapper.xml和Mapper接口之間方法的互相導航跳轉&#xff1b; 內置代碼生成器&#xff0c;通過使用GUI的形…

單詞分析與助記之數據建表(以production為例)

單詞分析與助記數據建表&#xff08;以production為例&#xff09;&#xff1a; id&#xff08;流水號&#xff09;&#xff1a;詞形&#xff1a;production配圖1-標題&#xff1a;略配圖1-地址&#xff1a;略配圖2-標題&#xff1a;略配圖2-地址&#xff1a;略配圖3-標題&…

AI助力決策:告別生活與工作中的糾結,明析抉擇引領明智選擇

在日常生活與工作中&#xff0c;我們時常會面臨各種糾結的決策。從選擇一份新工作、創業方向&#xff0c;到決定是否要搬家、換車&#xff0c;每一個決策都可能對我們的未來產生深遠影響。然而&#xff0c;面對復雜多變的信息和不確定的未來&#xff0c;如何做出明智的選擇成為…

--定位--

GPSRTK GPS組成 GPS分為三部分。 空間星座部分&#xff1a;由至少24顆衛星組成&#xff08;目前有30多顆在軌運行&#xff09;&#xff0c;分布在6個中地球軌道上。保證全球任何地方、任何時間至少能接收到4顆以上的衛星信號。每顆衛星不斷播發一種包含衛星星歷?&#xff0…

音轉文模型對比FunASR與Faster_whisper

FunASR簡介 FunASR是由阿里巴巴達摩院開源的語音識別工具包&#xff0c;提供包括語音識別&#xff08;ASR&#xff09;、語音活動檢測&#xff08;VAD&#xff09;、標點恢復、語言模型、說話人驗證、說話人分離及多說話人ASR等多種功能。FunASR工具包支持工業級語音識別模型的…

uniapp阿里云驗證碼使用

在 UniApp 中使用阿里云驗證碼插件&#xff08;aliyun-captcha&#xff09;需要完成微信小程序端的插件配置和項目內的組件使用兩個主要步驟&#xff0c;以下是詳細流程&#xff1a; 一、微信公眾平臺配置插件&#xff08;必須&#xff09; 獲取插件 AppID 阿里云驗證碼插件的…

基于開源AI大模型AI智能名片S2B2C商城小程序的情感營銷策略研究

摘要&#xff1a;本文聚焦于開源AI大模型AI智能名片S2B2C商城小程序這一新興商業工具&#xff0c;探討情感在其營銷中的核心地位。情感在營銷里是需突出表現的關鍵要素&#xff0c;價值觀與極致化生活方式均是對情感的闡釋。在開源AI大模型AI智能名片S2B2C商城小程序的背景下&a…

警惕!你和ChatGPT的對話,可能正在制造分布式妄想

2021年圣誕節&#xff0c;19歲的英籍印度裔男子 賈斯旺辛格柴爾 &#xff08;Jaswant Singh Chail&#xff09;帶著一把十字弩闖入溫莎城堡&#xff0c;聲稱要 刺殺英國女王 &#xff0c;為英國歷史上的暴行復仇。 這場荒謬的刺殺注定以失敗告終。被捕后&#xff0c;他自稱是一…

DeepSeek輔助在64位Linux中編譯運行32位的asm-xml-1.4程序

在網上搜快速xml解析器時找到一個2012年的asm-xml-1.4程序說是比expat快幾倍&#xff0c;有點不信&#xff0c;想編譯看看。 下載了源代碼, 解壓縮到/par&#xff0c;其中obj目錄下有預編譯好的.o文件。 然后運行如下命令編譯示例&#xff0c;出錯了 cd /par/asm-xml-1.4/exa…

STM32CubeProgrammer軟件安裝

STM32CubeProgrammer軟件安裝 下載地址 【英文界面】STM32CubeProg | Software - STMicroelectronics 【中文界面】STM32CubeProg | Software - 意法半導體STMicroelectronics 下載 點擊獲取最新版本下載安裝包登錄ST賬號進行下載當Edge瀏覽器下載失敗時, 換個瀏覽器下載下…

數據結構_棧(C語言實現)超詳細_Leetcode_20. 有效的括號

目錄棧引出棧的定義數據定義棧結構體的定義結構操作- intitStack- freeStack()- empty()- isFull()- top()- pop()- push()- outAll()- 測試完整代碼練習題目&#xff1a;Leetcode_20. 有效的括號代碼模擬函數調用棧棧引出 棧&#xff0c;在我們日常生活中也非常常見&#xff…