新聞中心
從私有倉庫拉取鏡像
本文介紹如何使用 Secret 從私有的鏡像倉庫或代碼倉庫拉取鏡像來創(chuàng)建 Pod。 有很多私有鏡像倉庫正在使用中。這個任務使用的鏡像倉庫是 Docker Hub

創(chuàng)新互聯(lián)建站專注于瑯琊企業(yè)網(wǎng)站建設,響應式網(wǎng)站建設,商城系統(tǒng)網(wǎng)站開發(fā)?,樼鹁W(wǎng)站建設公司,為瑯琊等地區(qū)提供建站服務。全流程按需定制制作,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務
在開始之前
- 你必須擁有一個 Kubernetes 的集群,同時你的 Kubernetes 集群必須帶有 kubectl 命令行工具。 建議在至少有兩個節(jié)點的集群上運行本教程,且這些節(jié)點不作為控制平面主機。 如果你還沒有集群,你可以通過 Minikube 構(gòu)建一個你自己的集群,或者你可以使用下面任意一個 Kubernetes 工具構(gòu)建:
- Katacoda
- 玩轉(zhuǎn) Kubernetes
- 要進行此練習,你需要 ?
docker?命令行工具和一個知道密碼的 Docker ID。 - 如果你要使用不同的私有的鏡像倉庫,你需要有對應鏡像倉庫的命令行工具和登錄信息。
登錄 Docker 鏡像倉庫
在個人電腦上,要想拉取私有鏡像必須在鏡像倉庫上進行身份驗證。
docker login
當出現(xiàn)提示時,輸入你的 Docker ID 和登錄憑證(訪問令牌、 或 Docker ID 的密碼)。
登錄過程會創(chuàng)建或更新保存有授權(quán)令牌的 ?config.json? 文件。
查看 ?config.json? 文件:
cat ~/.docker/config.json
輸出結(jié)果包含類似于以下內(nèi)容的部分:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "c3R...zE2"
}
}
}Note: 如果使用 Docker 憑證倉庫,則不會看到 ?
auth?條目,看到的將是以倉庫名稱作為值的 ?credsStore?條目。
創(chuàng)建一個基于現(xiàn)有憑證的 Secret
Kubernetes 集群使用 ?kubernetes.io/dockerconfigjson? 類型的 Secret 來通過鏡像倉庫的身份驗證,進而提取私有鏡像。
如果你已經(jīng)運行了 ?docker login? 命令,你可以復制該鏡像倉庫的憑證到 Kubernetes:
kubectl create secret generic regcred \
--from-file=.dockerconfigjson= \
--type=kubernetes.io/dockerconfigjson 如果你需要更多的設置(例如,為新 Secret 設置名字空間或標簽), 則可以在存儲 Secret 之前對它進行自定義。 請務必:
- 將 data 項中的名稱設置為 ?
.dockerconfigjson? - 使用 base64 編碼方法對 Docker 配置文件進行編碼,然后粘貼該字符串的內(nèi)容,作為字段 ?
data[".dockerconfigjson"]? 的值 - 將 ?
type?設置為 ?kubernetes.io/dockerconfigjson?
示例:
apiVersion: v1
kind: Secret
metadata:
name: myregistrykey
namespace: awesomeapps
data:
.dockerconfigjson: UmVhbGx5IHJlYWxseSByZWVlZWVlZWVlZWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGx5eXl5eXl5eXl5eXl5eXl5eXl5eSBsbGxsbGxsbGxsbGxsbG9vb29vb29vb29vb29vb29vb29vb29vb29vb25ubm5ubm5ubm5ubm5ubm5ubm5ubm5ubmdnZ2dnZ2dnZ2dnZ2dnZ2dnZ2cgYXV0aCBrZXlzCg==
type: kubernetes.io/dockerconfigjson如果你收到錯誤消息:?error: no objects passed to create?, 這可能意味著 base64 編碼的字符串是無效的。 如果你收到類似 ?Secret "myregistrykey" is invalid: data[.dockerconfigjson]: invalid value ...? 的錯誤消息,則表示數(shù)據(jù)中的 base64 編碼字符串已成功解碼,但無法解析為 ?.docker/config.json? 文件。
在命令行上提供憑證來創(chuàng)建 Secret
創(chuàng)建 Secret,命名為 ?regcred?:
kubectl create secret docker-registry regcred \
--docker-server=<你的鏡像倉庫服務器> \
--docker-username=<你的用戶名> \
--docker-password=<你的密碼> \
--docker-email=<你的郵箱地址>在這里:
- ?
? 是你的私有 Docker 倉庫全限定域名(FQDN)。 DockerHub 使用 ?https://index.docker.io/v1/?。 - ?
?是你的 Docker 用戶名。 - ?
?是你的 Docker 密碼。 - ?
? 是你的 Docker 郵箱。
這樣你就成功地將集群中的 Docker 憑證設置為名為 ?regcred ?的 Secret。
Note: 在命令行上鍵入 Secret 可能會將它們存儲在你的 shell 歷史記錄中而不受保護, 并且這些 Secret 信息也可能在 ?
kubectl?運行期間對你 PC 上的其他用戶可見。
檢查 Secret regcred
要了解你創(chuàng)建的 ?regcred ?Secret 的內(nèi)容,可以用 YAML 格式進行查看:
kubectl get secret regcred --output=yaml
輸出和下面類似:
apiVersion: v1
data:
.dockerconfigjson: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0=
kind: Secret
metadata:
...
name: regcred
...
type: kubernetes.io/dockerconfigjson?.dockerconfigjson? 字段的值是 Docker 憑證的 base64 表示。
要了解 ?dockerconfigjson ?字段中的內(nèi)容,請將 Secret 數(shù)據(jù)轉(zhuǎn)換為可讀格式:
kubectl get secret regcred --output="jsonpath={.data.\.dockerconfigjson}" | base64 --decode
輸出和下面類似:
{"auths":{"yourprivateregistry.com":{"username":"janedoe","password":"xxxxxxxxxxx","email":"[email protected]","auth":"c3R...zE2"}}}
要了解 ?auth ?字段中的內(nèi)容,請將 base64 編碼過的數(shù)據(jù)轉(zhuǎn)換為可讀格式:
echo "c3R...zE2" | base64 --decode
輸出結(jié)果中,用戶名和密碼用 ?:? 鏈接,類似下面這樣:
janedoe:xxxxxxxxxxx
注意,Secret 數(shù)據(jù)包含與本地 ?~/.docker/config.json? 文件類似的授權(quán)令牌。
這樣你就已經(jīng)成功地將 Docker 憑證設置為集群中的名為 ?regcred ?的 Secret。
創(chuàng)建一個使用你的 Secret 的 Pod
下面是一個 Pod 配置清單示例,該示例中 Pod 需要訪問你的 Docker 憑證 ?regcred?:
apiVersion: v1
kind: Pod
metadata:
name: private-reg
spec:
containers:
- name: private-reg-container
image:
imagePullSecrets:
- name: regcred
將上述文件下載到你的計算機中:
curl -L -O my-private-reg-pod.yaml https://K8S.io/examples/pods/private-reg-pod.yaml
在?my-private-reg-pod.yaml? 文件中,使用私有倉庫的鏡像路徑替換 ??,例如:
janedoe/jdoe-private:v1
要從私有倉庫拉取鏡像,Kubernetes 需要憑證。 配置文件中的 ?imagePullSecrets ?字段表明 Kubernetes 應該通過名為 ?regcred ?的 Secret 獲取憑證。
創(chuàng)建使用了你的 Secret 的 Pod,并檢查它是否正常運行:
kubectl apply -f my-private-reg-pod.yaml
kubectl get pod private-reg 網(wǎng)站名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes從私有倉庫拉取鏡像
分享鏈接:http://m.fisionsoft.com.cn/article/djgoioh.html


咨詢
建站咨詢
