Ubuntu 18.04
Sponsored Link

Kubernetes : Private Registry の設定
2018/10/22
 
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 155 Oct 22 15:47 /root/.docker/config.json
# ファイルを BASE64エンコード

root@dlp:~#
cat ~/.docker/config.json | base64

ewoJImF1dGhzIjogewoJCSJkbHAuc3J2.....
root@dlp:~#
vi regcred.yml
# 新規作成

# [.dockerconfigjson] 行に BASE64エンコードで表示された内容を一行にして貼り付け

apiVersion: v1
kind: Secret
data:
  .dockerconfigjson: ewoJImF1dGhzIjogewoJ.....
metadata:
  name: regcred
type: kubernetes.io/dockerconfigjson

root@dlp:~#
kubectl create -f regcred.yml

secret "regcred" created
root@dlp:~#
kubectl get secrets

NAME                  TYPE                                  DATA   AGE
default-token-xmw6s   kubernetes.io/service-account-token   3      77m
regcred               kubernetes.io/dockerconfigjson        1      4s
[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              dbfc48660aeb        6 days ago          109MB

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:~#
kubectl create -f private-nginx.yml

pod "private-nginx" created
root@dlp:~#
kubectl get pods

NAME            READY   STATUS    RESTARTS   AGE
private-nginx   1/1     Running   0          5s
root@dlp:~#
kubectl describe pods private-nginx

Name:               private-nginx
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               node02.srv.world/10.0.0.52
Start Time:         Mon, 22 Oct 2018 15:54:31 +0900
Labels:             <none>
Annotations:        <none>
Status:             Running
IP:                 10.244.2.5
Containers:
  private-nginx:
    Container ID:   docker://15236772cdfa400546ee4f9392f394b71a2419...
    Image:          dlp.srv.world:5000/nginx
    Image ID:       docker-pullable://dlp.srv.world:5000/nginx@sha2...
.....
.....
Events:
  Type    Reason     Age   From                       Message
  ----    ------     ----  ----                       -------
  Normal  Scheduled  18s   default-scheduler          Successfully assigned default/private-nginx to node02.srv.world
  Normal  Pulling    17s   kubelet, node02.srv.world  pulling image "dlp.srv.world:5000/nginx"
  Normal  Pulled     17s   kubelet, node02.srv.world  Successfully pulled image "dlp.srv.world:5000/nginx"
  Normal  Created    17s   kubelet, node02.srv.world  Created container
  Normal  Started    17s   kubelet, node02.srv.world  Started container
関連コンテンツ
 
Tweet