簡體   English   中英

k8s:使 k8s 可以訪問本地圖像

[英]k8s: make local image accessible for k8s

我剛剛安裝了一個 k8s 集群(k3d)。

我只是在玩這個,我正在解決第一個新手問題:如何加載我們本地創建的圖像。

我的意思是,我剛剛創建了一個quarkus/feedly:v1鏡像,標記為quarkus/feedly:v1

  1. 如何使其可用於 k8s 集群?
  2. 哪個是默認的 k8s 容器運行時?
  3. 我的 k8s 集群和我的本地 docker 是否存在任何交互? 我的意思是,每個 k8s 節點都安裝了 docker/rkt/containerd 運行時嗎?
  4. 我可以在 kubernetes 中創建一個 docker 注冊表作為清單嗎? 我怎樣才能讓 kubernetes 訪問它?

我已經部署了我的清單,並且收到了這些事件:

無法拉取圖像“quarkus/feedly:0.0.1-SNAPSHOT”:rpc 錯誤:代碼 = 未知描述 = 無法拉取和解壓圖像“docker.io/quarkus/feedly:0.0.1-SNAPSHOT”:無法解析參考“docker.io/quarkus/feedly:0.0.1-SNAPSHOT”:拉取訪問被拒絕,存儲庫不存在或可能需要授權:服務器消息:不足范圍:授權失敗

我知道這是一個正常錯誤,因為 quarkus 注冊表不存在。

那里有幫助代碼嗎?

這里有一些提示:

  1. 要通過 k8s 集群訪問您的映像,您需要使用可從集群節點訪問的注冊表。 因此,要么在 docker hub 上創建一個帳戶並使用這個帳戶,要么安裝一個本地映像注冊表並使用它。
  2. Docker 是大多數 k8s 發行版使用的默認容器運行時。 但是,您可以使用任何 OCI 兼容的運行時(例如,containerd)。 rkt 不再是一個活項目,所以我建議不要使用它。
  3. 好吧,這取決於您使用的 k8s 發行版。 無論如何,集群上的每個節點都需要在其上安裝一個容器運行時。 這是強制性的。
  4. 將 Docker 注冊表部署為 kubernetes 資源可能不是一個好主意,因為您必須進行大量配置才能使其工作。 但是,最好的解決方案是在您的節點之一內部署 docker 注冊表,然后使用節點 IP 調用它。 您在官方文檔中有一個配置示例。 順便說一下,Docker 提供了一個注冊表作為Docker 鏡像,所以安裝非常簡單。

希望這可以幫助 !

如果您使用的是 k3d,並且這只是為了玩耍(不是用於生產),並且出於任何原因不想使用現有的許多容器注冊表中的任何一個,例如:

您可以通過在registries.yaml指定它們來添加registries.yaml

k3d cluster create mycluster --volume "/home/YOU/my-registries.yaml:/etc/rancher/k3s/registries.yaml"

並使用 docker 在本地創建您自己的注冊表:

docker volume create local_registry
docker container run -d --name registry.localhost -v local_registry:/var/lib/registry --restart always -p 5000:5000 registry:2

👆注意,它的作用是使用此圖像創建注冊表:

來自 DockerHub 🤷‍♂️,這是您避免使用的 Docker 注冊表之一

在這里您可以找到有關如何設置的更多信息: https : //k3d.io/usage/guides/registries/

最后,請記住,當您從私有注冊中心獲取圖像時,您必須告訴 K8s 您私有注冊中心的身份驗證信息,以便它可以下載圖像....否則它會給您這個錯誤:

...拉取訪問被拒絕,存儲庫不存在或可能需要授權:服務器消息:不足范圍:授權失敗

您可以在此處找到有關如何設置的更多文檔:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM