自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Kubernetes 鏡像拉取策略全解析:如何根據(jù)需求選擇最佳配置?

云計(jì)算 開發(fā)
為了提升集群的穩(wěn)定性、速度和安全性,Kubernetes提供了幾種不同的鏡像拉取策略。這篇文章會(huì)詳細(xì)解釋這些策略以及如何配置它們,幫助你在不同情況下做出最佳選擇。

在Kubernetes集群里,拉取容器鏡像是一個(gè)非常關(guān)鍵的步驟。這些鏡像包含了應(yīng)用程序及其所有需要的依賴項(xiàng),Kubernetes通過(guò)拉取這些鏡像來(lái)啟動(dòng)Pod中的容器。為了提升集群的穩(wěn)定性、速度和安全性,Kubernetes提供了幾種不同的鏡像拉取策略。這篇文章會(huì)詳細(xì)解釋這些策略以及如何配置它們,幫助你在不同情況下做出最佳選擇。

一、什么是容器拉取策略?

容器拉取策略Image Pull Policy是 Kubernetes中的一種配置選項(xiàng),決定了容器鏡像在啟動(dòng)時(shí)是否需要從鏡像倉(cāng)庫(kù)拉取,以及如何管理和更新鏡像版本。拉取策略控制 Kubernetes 在調(diào)度 Pod 時(shí)是否重新拉取鏡像。

二、Kubernetes中的拉取策略

我們可以通過(guò)以下命令查看 kubernetes支持那幾種拉取策略。

kubectl explain pod.spec.containers.imagePullPolicy

從上面的結(jié)果可以看出,Kubernetes 支持三種策略,每種策略適用于不同的使用場(chǎng)景。

1. Alawys

如果你把容器的imagePullPolicy設(shè)成Always,那么每次創(chuàng)建Pod 或者重啟容器的時(shí)候kubelet都會(huì)去鏡像倉(cāng)庫(kù)拉取最新的鏡像。它會(huì)對(duì)比本地和遠(yuǎn)程倉(cāng)庫(kù)的鏡像摘要,確保你用的是最新的版本。

(1) 使用場(chǎng)景:

  • 開發(fā)環(huán)境:在開發(fā)過(guò)程中,我們經(jīng)常需要快速迭代和更新鏡像,使用 Always 可以確保每次啟動(dòng)容器時(shí)都能拉取到最新的鏡像。
  • 測(cè)試環(huán)境:在自動(dòng)化測(cè)試中,拉取最新鏡像可以確保每次測(cè)試時(shí)都使用的是最新的鏡像版本。

(2) 案例演示:

現(xiàn)在部署一個(gè)簡(jiǎn)單的Pod,yaml文件內(nèi)容如下:

apiVersion: v1
kind: Pod
metadata:
  name: simple-pod
spec:
  containers:
    - name: nginx-container
      image: nginx:latest
      imagePullPolicy: Always
      ports:
        - containerPort: 80

在執(zhí)行這個(gè)yaml文件之前,我們先查看一下本地是否存在這個(gè)鏡像,結(jié)果如下:

controlplane $ docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

這時(shí)執(zhí)行會(huì)從遠(yuǎn)端倉(cāng)庫(kù)拉取鏡像到本地進(jìn)行啟動(dòng)Pod。

2. IfNotPresent:

當(dāng)拉取策略設(shè)置為 IfNotPresent 時(shí),Kubernetes 只有在本地節(jié)點(diǎn)上沒(méi)有該鏡像時(shí),才會(huì)去遠(yuǎn)程鏡像倉(cāng)庫(kù)拉取鏡像。如果節(jié)點(diǎn)上已經(jīng)存在該鏡像,則不會(huì)再次拉取,直接使用本地鏡像。

(1) 使用場(chǎng)景

  • 生產(chǎn)環(huán)境:為了提高啟動(dòng)速度并減少帶寬消耗,IfNotPresent 是一種較為常見的選擇。如果你已經(jīng)確保容器鏡像是經(jīng)過(guò)驗(yàn)證和測(cè)試的,并且不會(huì)頻繁更改,那么這個(gè)策略就很合適。
  • 節(jié)點(diǎn)具有高效的鏡像緩存時(shí),IfNotPresent 可以避免重復(fù)拉取鏡像,減少網(wǎng)絡(luò)壓力。

(2) 案例演示

修改上述的yaml文件,內(nèi)容如下:

apiVersion: v1
kind: Pod
metadata:
  name: simple-pod
spec:
  containers:
    - name: nginx-container
      image: nginx
      imagePullPolicy: IfNotPresent 
      ports:
        - containerPort: 80

刪除之前創(chuàng)建的Pod,然后在重新執(zhí)行創(chuàng)建命令,結(jié)果如下:

通過(guò)上述的日志可以看到該鏡像已經(jīng)存在這臺(tái)機(jī)器上,所以,沒(méi)有向遠(yuǎn)端倉(cāng)庫(kù)進(jìn)行拉取。

3. Never

當(dāng)拉取策略設(shè)置為 Never 時(shí),Kubernetes無(wú)論如何都不會(huì)從鏡像倉(cāng)庫(kù)拉取鏡像。如果節(jié)點(diǎn)本地沒(méi)有該鏡像,容器啟動(dòng)將失敗。此策略通常用于確保容器使用的是本地已有的鏡像。

(1) 使用場(chǎng)景

  • 本地鏡像部署:如果你已經(jīng)手動(dòng)將鏡像拉取到本地,并希望避免 Kubernetes再次去遠(yuǎn)程拉取,Never 策略可以避免不必要的拉取操作。
  • 離線環(huán)境:在一些沒(méi)有外網(wǎng)的離線環(huán)境中,所有的鏡像都已經(jīng)提前下載,使用 Never 可以確保容器啟動(dòng)時(shí)不進(jìn)行拉取操作。

(2) 案例演示

我們通過(guò)docker search查詢遠(yuǎn)端倉(cāng)庫(kù)存在的鏡像。如下圖:

把上述yaml進(jìn)行修改,把nginx鏡像修改成bitnami/nginx,內(nèi)容如下:

apiVersion: v1
kind: Pod
metadata:
  name: simple-pod
spec:
  containers:
    - name: bitnami-nginx
      image: bitnami/nginx
      imagePullPolicy: Never 
      ports:
        - containerPort: 80

執(zhí)行創(chuàng)建命令,結(jié)果如下:

通過(guò)上述日志可以看到這個(gè)pod部署失敗,原因是本地不存在這個(gè)鏡像,由于配置了Never拉取策略,所以,不會(huì)在遠(yuǎn)端倉(cāng)庫(kù)拉取的。

小結(jié)

Kubernetes 提供了三種鏡像拉取策略:Always、IfNotPresent 和 Never。根據(jù)應(yīng)用場(chǎng)景的不同,用戶可以選擇適合的策略,以平衡鏡像拉取的頻率、網(wǎng)絡(luò)帶寬和鏡像更新的需求。在生產(chǎn)環(huán)境中,通常推薦使用 IfNotPresent 策略,而在開發(fā)環(huán)境中,Always 策略則更為常見。

責(zé)任編輯:趙寧寧 來(lái)源: 攻城獅成長(zhǎng)日記
相關(guān)推薦

2024-12-09 08:54:49

2025-02-18 08:10:00

SQL數(shù)據(jù)表數(shù)據(jù)庫(kù)

2018-06-15 10:06:46

服務(wù)器配置行業(yè)

2011-07-07 08:42:32

AccessLotus Notes

2010-01-12 15:59:12

最佳路由路徑

2017-12-11 17:19:10

閃存CIO硬件

2022-05-20 06:14:57

人工智能AI

2018-04-26 15:00:29

云存儲(chǔ)云計(jì)算數(shù)據(jù)中心

2018-08-01 11:16:18

閃存陣列數(shù)據(jù)中心

2009-05-22 09:25:00

SQL Server版本SQL Server

2016-03-31 17:33:52

移動(dòng)信息化研究中心

2022-05-23 08:20:29

Kafka生產(chǎn)者元數(shù)據(jù)管理

2020-09-15 10:28:42

Kubernetes容器

2015-11-02 10:48:43

Android開發(fā)環(huán)境

2023-06-20 16:17:41

智能建筑可持續(xù)發(fā)展

2020-11-02 09:53:13

Hive數(shù)據(jù)算法

2010-01-19 09:49:01

服務(wù)器需求及選擇要素

2025-03-27 08:10:19

Spring開發(fā)架構(gòu)

2022-11-24 09:55:12

Kubernetes監(jiān)控

2025-02-11 08:00:00

數(shù)據(jù)治理大數(shù)據(jù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)