Kubernetes : Private Registry の設定2019/08/26 |
Docker Private Registry を設定して、自身の Private Registry から Docker イメージを Pull できるよう設定します。
当例では以下のように 3台のホストを使用して Kubernetes クラスターを構成しています。
-----------+---------------------------+--------------------------+------------ | | | eth0|10.0.0.30 eth0|10.0.0.51 eth0|10.0.0.52 +----------+-----------+ +-----------+----------+ +-----------+----------+ | [ dlp.srv.world ] | | [ node01.srv.world ] | | [ node02.srv.world ] | | Master Node | | Worker Node | | Worker Node | +----------------------+ +----------------------+ +----------------------+ |
[1] |
Registry Pod を起動したいノードで
こちらの [1]-[4] を参考に、認証が必要な Docker Registry を起動しておきます。
当例では Master ノード上に Registry Pod を起動します。 |
[2] | 認証トークンを Kubernetes に登録します。 |
# Registry に一旦ログインする root@dlp:~# docker login dlp.srv.world:5000 Username: admin Password: Login Succeeded # ログインすると下記ファイルが生成される root@dlp:~# ll ~/.docker/config.json -rw------- 1 root root 152 Aug 26 13:42 /root/.docker/config.json
root@dlp:~#
vi regcred.yml # 新規作成 # [.dockerconfigjson] 行に BASE64エンコードで表示された内容を一行にして貼り付け apiVersion: v1 kind: Secret data: .dockerconfigjson: ewoJImF1dGhzIjogewoJ..... metadata: name: regcred type: kubernetes.io/dockerconfigjson kubectl create -f regcred.yml secret "regcred" created root@dlp:~# kubectl get secrets NAME TYPE DATA AGE default-token-tmkxz kubernetes.io/service-account-token 3 135m regcred kubernetes.io/dockerconfigjson 1 7s |
[3] | Private Registry から Pull するには 登録した Secret と Private Registry の image を指定して Pod をデプロイします。 |
root@dlp:~# docker images dlp.srv.world:5000/nginx REPOSITORY TAG IMAGE ID CREATED SIZE dlp.srv.world:5000/nginx latest 5a3221f0137b 10 days ago 126MB
root@dlp:~#
vi private-nginx.yml apiVersion: v1 kind: Pod metadata: name: private-nginx spec: containers: - name: private-nginx # Private Registry の image image: dlp.srv.world:5000/nginx imagePullSecrets: # 登録した Secret名 - name: regcred
root@dlp:~#
root@dlp:~# kubectl create -f private-nginx.yml pod "private-nginx" created kubectl get pods NAME READY STATUS RESTARTS AGE private-nginx 1/1 Running 0 6sroot@dlp:~# kubectl describe pods private-nginx Name: private-nginx Namespace: default Priority: 0 Node: node02.srv.world/10.0.0.52 Start Time: Mon, 26 Aug 2019 13:46:41 +0900 Labels: <none> Annotations: <none> Status: Running IP: 10.244.2.6 Containers: private-nginx: Container ID: docker://91cb9af6c062e34fee66f0c1dbbdec41d934b5cf18e0db0b47837a26bbcba52f Image: dlp.srv.world:5000/nginx ..... ..... Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 42s default-scheduler Successfully assigned default/private-nginx to node02.srv.world Normal Pulling 41s kubelet, node02.srv.world Pulling image "dlp.srv.world:5000/nginx" Normal Pulled 41s kubelet, node02.srv.world Successfully pulled image "dlp.srv.world:5000/nginx" Normal Created 41s kubelet, node02.srv.world Created container private-nginx Normal Started 40s kubelet, node02.srv.world Started container private-nginx |
Sponsored Link |