本頁說明如何為 VMware 專用的 Google Distributed Cloud (僅限軟體) 設定現有容器登錄伺服器。
本文適用於負責設定、監控及管理技術基礎架構的管理員、架構師和作業人員。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
總覽
根據預設,在叢集建立或升級期間,Google Distributed Cloud 會使用元件存取服務帳戶,從 gcr.io/gke-on-prem-release
提取系統映像檔。您也可以選擇提供自己的容器登錄伺服器,這樣系統映像檔就會改為從您的私人登錄伺服器提取。
Google Distributed Cloud 不支援不安全的容器登錄檔。啟動容器登錄伺服器時,您必須提供憑證和金鑰。憑證可由公開憑證授權單位 (CA) 簽署,也可以自行簽署。
建立容器登錄伺服器
如要瞭解如何建立容器登錄伺服器,請參閱 Docker 說明文件中的「執行可從外部存取的登錄」。
設定登錄檔
如要使用私人容器登錄檔,可以透過 gkectl
指令列工具或 Terraform 進行。
gkectl
建立叢集前,請將
privateRegistry
區段新增至管理員叢集設定檔。
填寫這個部分時:
在建立或升級叢集之前執行
gkectl prepare
指令時,該指令會從管理員叢集設定檔的bundlePath
欄位中指定的 tar 檔案擷取映像檔,並將映像檔推送至您的私有登錄伺服器。建立或升級叢集時,系統會從私有登錄伺服器擷取系統映像檔。
Terraform
按照「建立管理員叢集」一文的 Terraform 分頁步驟操作,填寫管理員叢集設定檔。
在管理員叢集設定檔中新增下列項目:
private_registry_config { address = "ADDRESS" ca_cert = "CA_CERT" }
更改下列內容:
"ADDRESS"
:執行私人登錄檔的機器的 IP 位址或 FQDN (完整網域名稱)。"CA_CERT"
:私有登錄檔的 CA 憑證公開金鑰。
繼續按照「建立管理員叢集」的 Terraform 分頁步驟操作,驗證 Terraform 設定檔和方案,然後建立啟動程序叢集。
執行
gkectl register bootstrap
指令時,gkectl
會提示您輸入私有登錄檔的使用者名稱和密碼。
建立叢集時,系統會從您的私有登錄伺服器提取系統映像檔。
進階叢集和完整套件的限制
Google Distributed Cloud 組合包有兩種:完整版和一般版。如要判斷管理員工作站上的套件,請檢查管理員叢集設定檔中的 bundlePath
欄位。如果檔案名稱結尾為 -full
,表示完整套件位於管理員工作站。如果檔案名稱不是以 -full
結尾,表示管理員工作站上是標準套件。
如果您使用 gkeadm
指令建立管理員工作站,該指令會建立管理員工作站 VM,並將完整套件放在 VM 上,然後設定管理員叢集設定檔中的 bundlePath
欄位。
如果啟用進階叢集,透過私人登錄檔使用完整套件時會受到下列限制:
1.31 版:私人登錄檔不支援完整套件。如要在進階叢集上使用私有登錄檔,請按照下列步驟操作:
- 下載一般大小的套裝組合至管理工作站。
- 更新管理員叢集設定檔中
bundlePath
欄位的檔案名稱。
1.32 版:支援使用完整套件,但
gkectl prepare
指令會從gcr.io/gke-on-prem-release
(而非 tar 檔案) 提取映像檔。不過,這項指令會將映像檔推送至私人登錄檔,因此在建立或升級叢集時,系統映像檔會從私人登錄檔提取。
確認映像檔是從登錄伺服器提取
驗證映像檔是否從登錄伺服器提取的方式,取決於是否已啟用進階叢集。
如果未啟用進階叢集,請執行下列指令:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods \ --all-namespaces -o jsonpath="{.items[*].spec['initContainers', 'containers'][*].image}"
將
ADMIN_CLUSTER_KUBECONFIG
替換為管理員叢集的 kubeconfig 檔案路徑。這項指令的輸出內容會顯示叢集中的所有映像檔。您可以確認所有 Google Distributed Cloud 映像檔都來自您自己的登錄伺服器。
如果已啟用進階叢集,請按照下列步驟操作:
如要判斷
containerd
是否從本機登錄檔提取映像檔,請按照下列步驟檢查名為config.toml
的檔案內容:- 登入節點並檢查
/etc/containerd/config.toml
檔案的內容。 檢查
config.toml
檔案的plugins."io.containerd.grpc.v1.cri".registry.mirrors
欄位,看看您的登錄伺服器是否列在endpoint
欄位中。以下摘錄自範例
config.toml
檔案。version = 2 root = "/var/lib/containerd" state = "/run/containerd" ... [plugins."io.containerd.grpc.v1.cri".registry] [plugins."io.containerd.grpc.v1.cri".registry.configs] [plugins."io.containerd.grpc.v1.cri".registry.configs."gcr.io"] [plugins."io.containerd.grpc.v1.cri".registry.configs."privateregistry2.io".tls] ca_file = '/etc/containerd/certs.d/privateregistry2.io/ca.crt' [plugins."io.containerd.grpc.v1.cri".registry.mirrors] [plugins."io.containerd.grpc.v1.cri".registry.mirrors."gcr.io"] endpoint = ["http://privateregistry.io", "http://privateregistry2.io"] ...
如果註冊資料庫鏡像顯示在
endpoint
欄位中,表示節點是從註冊資料庫鏡像提取映像檔,而不是從 Artifact Registry 提取。
- 登入節點並檢查