Guide complet pour configurer l'entrepôt de miroir containerd

A propos de l'auteur

Wang Hailong, directeur technique de la communauté Rancher China, est responsable de la maintenance et de l'exploitation de la communauté technique Rancher China. Il a 6 ans d'expérience dans le domaine du cloud computing et a connu des changements technologiques d'OpenStack à Kubernetes.
 
 

Préface

 
 

Kubernetes a annoncé dans le journal des modifications que Docker sera obsolète comme environnement d' exécution du conteneur depuis Kubernetes 1.20 , et containerd est devenu une option populaire pour le prochain environnement d'exécution du conteneur. Bien que containerd fasse partie de Docker depuis longtemps, la simple utilisation de containerd pose encore beaucoup de problèmes à tout le monde. Cet article explique comment utiliser containerd pour configurer des entrepôts miroir et des accélérateurs.
 
Cet article prend K3 comme exemple pour configurer containerd. Si votre environnement n'utilise pas K3 mais utilise Kubernetes, vous pouvez également vous référer à cet article pour configurer l'entrepôt miroir de containerd, car la configuration de containerd est universelle.
 
 

À propos des K3 et des conteneurs

 

 
K3s est une distribution Kubernetes légère avec une taille binaire inférieure à 100 Mo et la mémoire requise est inférieure à la moitié de Kubernetes. Afin de réduire la consommation de ressources, K3 a changé le runtime par défaut en containerd, ainsi que les outils CLI Kubernetes intégrés crictl et ctr.
 

Le répertoire du fichier de configuration containerd par défaut de K3s est /var/lib/rancher/k3s/agent/etc/containerd/config.toml, mais il est beaucoup plus compliqué d'utiliser directement le fichier de configuration containerd pour configurer un entrepôt miroir ou un accélérateur que d'utiliser docker. Afin de simplifier la configuration de l'entrepôt miroir containerd, K3s vérifiera /etc/rancher/k3s/s'il existe un fichier registries.yaml au démarrage . Si le fichier existe, il sera converti dans la configuration de containerd et stocké en fonction du contenu des registres. yaml /var/lib/rancher/k3s/agent/etc/containerd/config.toml, réduisant ainsi la complexité de l'entrepôt miroir containerd.
 
 

Utilisez K3 pour configurer l'entrepôt de miroir privé

 

Le fichier de configuration de l'entrepôt miroir K3 se compose de deux parties: mirrorset configs:
 

  • Mirrors est une commande utilisée pour définir le nom et le point de terminaison d'un entrepôt de miroirs dédié

  • La section Configs définit le TLS et la configuration de certificat de chaque miroir. Pour chaque miroir, vous pouvez définir auth et / ou tls

 

Containerd utilise des concepts similaires à svc et endpoint dans K8S. Svc peut être compris comme un nom d'accès, et ce nom sera résolu en endpoint correspondant. On peut également comprendre que la configuration du miroir est un proxy inverse, qui transmet par proxy la demande du client à l'entrepôt de miroirs d'arrière-plan configuré par le point de terminaison. Le nom du miroir peut être renseigné à volonté, mais il doit être conforme aux règles de définition de l'IP ou du nom de domaine. Et vous pouvez configurer plusieurs points de terminaison, analyser le premier point de terminaison par défaut, si le premier point de terminaison ne renvoie pas de données, il basculera automatiquement vers le deuxième point de terminaison, et ainsi de suite.
 

Par exemple, l'exemple de configuration suivant:
 

mirrors:
  "172.31.6.200:5000":
    endpoint:
      - "http://172.31.6.200:5000"
  "rancher.ksd.top:5000":
    endpoint:
      - "http://172.31.6.200:5000"
  "docker.io":
    endpoint:
      - "https://fogjl973.mirror.aliyuncs.com"
      - "https://registry-1.docker.io"

 
Vous pouvez crictl pull 172.31.6.200:5000/library/alpineet crictl pull rancher.ksd.top:5000/library/alpineaccéder au miroir, mais un miroir est disponible de l'entrepôt au même.
 

root@rancher-server:/etc/rancher/k3s# systemctl restart k3s.service
root@rancher-server:/etc/rancher/k3s# crictl pull 172.31.6.200:5000/library/alpine
Image is up to date for sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e
root@rancher-server:/etc/rancher/k3s# crictl pull rancher.ksd.top:5000/library/alpine
Image is up to date for sha256:a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e
root@rancher-server:/etc/rancher/k3s#

 
 

Configuration d'entrepôt privé non sécurisé (http)

 
 

Pour configurer un entrepôt privé non sécurisé (http), il vous suffit de spécifier l'adresse de l'en-tête de protocole http dans le noeud final.

 

S'il n'y a pas de communication TLS, vous devez spécifier http: // pour les points de terminaison, sinon il sera par défaut https.

 

Pas de certification

 
Si vous utilisez un entrepôt privé non sécurisé (http), vous pouvez configurer les K3 pour se connecter à l'entrepôt privé via les paramètres suivants:
 

root@ip-172-31-13-117:~# cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "172.31.6.200:5000":
    endpoint:
      - "http://172.31.6.200:5000"
EOF
systemctl restart k3s

 
Ensuite, vous pouvez tirer le miroir à travers crictl:
 

root@ip-172-31-13-117:~# crictl pull 172.31.6.200:5000/my-ubuntu
Image is up to date for sha256:9499db7817713c4d10240ca9f5386b605ecff7975179f5a46e7ffd59fff462ee

 
Ensuite, après avoir examiné la configuration de containerd, vous pouvez voir que la configuration suivante est ajoutée à la fin du fichier:
 

root@ip-172-31-13-117:~# cat /var/lib/rancher/k3s/agent/etc/containerd/config.toml
[plugins.cri.registry.mirrors]

[plugins.cri.registry.mirrors."172.31.6.200:5000"]
  endpoint = ["http://172.31.6.200:5000"]

[plugins.cri.registry.mirrors."rancher.ksd.top:5000"]
  endpoint = ["http://172.31.6.200:5000"]

 

Agréé

 

Si votre entrepôt privé non sécurisé (http) est certifié, vous pouvez configurer k3s pour qu'il se connecte à l'entrepôt privé via les paramètres suivants:
 

root@ip-172-31-13-117:~# cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "35.182.134.80":
    endpoint:
      - "http://35.182.134.80"
configs:
  "35.182.134.80":
    auth:
      username: admin # this is the registry username
      password: Harbor12345 # this is the registry password
EOF
systemctl restart k3s

 
Pour tirer le miroir à travers Crictl:
 

root@ip-172-31-13-117:~# crictl pull 35.182.134.80/ksd/ubuntu:16.04
Image is up to date for sha256:9499db7817713c4d10240ca9f5386b605ecff7975179f5a46e7ffd59fff462ee

 
La configuration suivante est ajoutée à la fin du fichier de configuration de Containerd:
 
`` `` root @ ip-172-31-13-117: ~ # cat /var/lib/rancher/k3s/agent/etc/containerd/config.toml
[plugins.cri. registry.mirrors]

[plugins.cri.registry.mirrors. "35.182.134.80"]
endpoint = [" http://35.182.134.80 "]

[plugins.cri.registry.configs. "35.182.134.80" .auth]
username = "admin"
password = "Harbor12345"

&nbsp;
&nbsp;
## 安全(https)私有仓库配置
&nbsp;
&nbsp;

>以下示例均启用了认证,所以每个示例都配置了configs.auth,如果实际环境未配置认证,删除configs.auth配置即可。

&nbsp;

### 使用授信 ssl 证书

&nbsp;

与非安全(http)私有仓库配置类似,只需要配置 endpoint 对应的仓库地址为 https 即可。
&nbsp;

root @ ip-172-31-13-117: ~ # cat >> /etc/rancher/k3s/registries.yaml <<
Miroirs EOF :
"port.kingsd.top":
endpoint:

  • " https://harbor.kingsd.top "
    configs:
    "Harbor.kingsd.top":
    auth:
    username: admin # c'est le
    mot de passe du nom d'utilisateur du registre : Harbor12345 # c'est le mot de passe du registre
    EOF
    systemctl restart k3s
    &nbsp;
    通过 crictl 去 pull 镜像:
    &nbsp;

    root @ ip-172-31-13-117: ~ # crictl pull harbour.kingsd.top/ksd/ubuntu:16.04 L'
    image est à jour pour sha256: 9499db7817713c4d10240ca9f5386b605ecff7975179f5a46e7ffd59fff462ee

    &nbsp;
    Containerd 配置文件末尾追加了如下配置:
    &nbsp;

    root @ ip-172-31-13-117: ~ # cat /var/lib/rancher/k3s/agent/etc/containerd/config.toml
    [plugins.cri.registry.mirrors]

[plugins.cri.registry.mirrors. "port.kingsd.top"]
endpoint = [" https://harbor.kingsd.top "]

[plugins.cri.registry.configs. "Harbor.kingsd.top" .auth]
username = "admin"
password = "Harbor12345"

&nbsp;
### 使用自签 ssl 证书

&nbsp;

如果后端仓库使用的是自签名的 ssl 证书,那么需要配置 CA 证书 用于 ssl 证书的校验。
&nbsp;
```root@ip-172-31-13-117:~# cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "harbor-ksd.kingsd.top":
    endpoint:
      - "https://harbor-ksd.kingsd.top"
configs:
  "harbor-ksd.kingsd.top":
    auth:
      username: admin # this is the registry username
      password: Harbor12345 # this is the registry password
    tls:
      ca_file: /opt/certs/ca.crt
EOF
systemctl restart k3s

 
Pour tirer le miroir à travers Crictl:
 

root@ip-172-31-13-117:~# crictl pull harbor-ksd.kingsd.top/ksd/ubuntu:16.04
Image is up to date for sha256:9499db7817713c4d10240ca9f5386b605ecff7975179f5a46e7ffd59fff462ee

 
La configuration suivante est ajoutée à la fin du fichier de configuration de Containerd:
 

root@ip-172-31-13-117:~# cat /var/lib/rancher/k3s/agent/etc/containerd/config.toml
[plugins.cri.registry.mirrors]

[plugins.cri.registry.mirrors."harbor-ksd.kingsd.top"]
  endpoint = ["https://harbor-ksd.kingsd.top"]

[plugins.cri.registry.configs."harbor-ksd.kingsd.top".auth]
  username = "admin"
  password = "Harbor12345"

[plugins.cri.registry.configs."harbor-ksd.kingsd.top".tls]
  ca_file = "/opt/certs/ca.crt"

 

authentification mutuelle SSL

 

Si l'entrepôt miroir est configuré avec une authentification bidirectionnelle, vous devez configurer le certificat SSL pour containerd pour que l'entrepôt miroir authentifie containerd.
 

root@ip-172-31-13-117:~# cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "harbor-ksd.kingsd.top":
    endpoint:
      - "https://harbor-ksd.kingsd.top"
configs:
  "harbor-ksd.kingsd.top":
    auth:
      username: admin # this is the registry username
      password: Harbor12345 # this is the registry password
    tls:
      ca_file: /opt/certs/ca.crt # path to the ca file used in the registry
      cert_file: /opt/certs/harbor-ksd.kingsd.top.cert # path to the cert file used in the registry
      key_file: /opt/certs/harbor-ksd.kingsd.top.key # path to the key file used in the registry
EOF
systemctl restart k3s

 
Pour tirer le miroir à travers Crictl:
 

root@ip-172-31-13-117:~# crictl pull harbor-ksd.kingsd.top/ksd/ubuntu:16.04
Image is up to date for sha256:9499db7817713c4d10240ca9f5386b605ecff7975179f5a46e7ffd59fff462ee

 
La configuration suivante est ajoutée à la fin du fichier de configuration de Containerd:
 

root@ip-172-31-13-117:~# cat /var/lib/rancher/k3s/agent/etc/containerd/config.toml
[plugins.cri.registry.mirrors]

[plugins.cri.registry.mirrors."harbor-ksd.kingsd.top"]
  endpoint = ["https://harbor-ksd.kingsd.top"]

[plugins.cri.registry.configs."harbor-ksd.kingsd.top".auth]
  username = "admin"
  password = "Harbor12345"

[plugins.cri.registry.configs."harbor-ksd.kingsd.top".tls]
  ca_file = "/opt/certs/ca.crt"
  cert_file = "/opt/certs/harbor-ksd.kingsd.top.cert"
  key_file = "/opt/certs/harbor-ksd.kingsd.top.key"

 
 

Configuration de l'accélérateur

 
 

Containerd et docker ont tous deux des référentiels par défaut, tous deux docker.io. Si le miroir n'est pas spécifié comme docker.io dans la configuration, la configuration docker.io sera automatiquement chargée après containerd. Contrairement à docker, containerd peut modifier le point de terminaison correspondant à docker.io (la valeur par défaut est https://registry-1.docker.io ), mais docker ne peut pas le modifier.
 

Dans Docker, vous pouvez définir l'adresse d'accélération du miroir via des miroirs de registre. Si le miroir d'extraction n'a pas d'adresse d'entrepôt (nom du projet + nom du miroir: balise), le miroir sera extrait de l'entrepôt de miroirs par défaut. Si l'adresse d'accélération de miroir est configurée, l'entrepôt d'accélération de miroir sera d'abord accédé, et si aucune donnée n'est renvoyée, l'entrepôt de miroir par défaut sera accédé.

 

Containerd ne configure actuellement pas directement la fonction d'accélération d'image, mais le point de terminaison correspondant à docker.io peut être modifié dans containerd, de sorte que le téléchargement de l'accélération d'image peut être réalisé en modifiant le point de terminaison. Étant donné que le point de terminaison est un accès d'interrogation, vous pouvez configurer plusieurs adresses d'entrepôt pour docker.io afin d'obtenir une adresse accélérée + une adresse d'entrepôt par défaut. L'exemple de configuration suivant:
 

cat >> /etc/rancher/k3s/registries.yaml <<EOF
mirrors:
  "docker.io":
    endpoint:
      - "https://fogjl973.mirror.aliyuncs.com"
      - "https://registry-1.docker.io"
EOF

systemctl restart k3s

 
La configuration suivante est ajoutée à la fin du fichier de configuration de Containerd:
 

root@ip-172-31-13-117:~# cat /var/lib/rancher/k3s/agent/etc/containerd/config.toml
[plugins.cri.registry.mirrors]

[plugins.cri.registry.mirrors."docker.io"]
  endpoint = ["https://fogjl973.mirror.aliyuncs.com", "https://registry-1.docker.io"]

 
Exemple de configuration complet
 
`` `mirrors:
" 192.168.50.119 ":
endpoint:

  • " http://192.168.50.119 "
    "docker.io":
    endpoint:
  • " https://fogjl973.mirror.aliyuncs.com "
  • " https://registry-1.docker.io "
    configs:
    "192.168.50.119":
    auth:
    username: '' # c'est le
    mot de passe du nom d'utilisateur du registre : '' # c'est le mot de passe du registre
    tls:
    cert_file: '' # chemin vers le fichier cert utilisé dans le registre
    key_file: '' # chemin vers le fichier clé utilisé dans le registre
    ca_file: '' # chemin vers le fichier ca utilisé dans le registre
    "docker.io":
    auth:
    username: '' # il s'agit du
    mot de passe du nom d'utilisateur du registre : '' # c'est le mot de passe du registre
    tls:
    cert_file: '' # chemin vers le fichier cert utilisé dans le registre
    key_file: ''# chemin vers le fichier de clé utilisé dans le registre
    ca_file: '' # chemin vers le fichier ca utilisé dans le registre
    
    &nbsp;
    &nbsp;
    ## 参考链接
    &nbsp;
    &nbsp;

Configuration de l'entrepôt de miroir privé K3s:

https://docs.rancher.cn/docs/k3s/installation/private-registry/_index

 
Entrepôt de miroir de configuration de Containerd:

https://github.com/containerd/cri/blob/master/docs/registry.md

Je suppose que tu aimes

Origine blog.51cto.com/12462495/2605409
conseillé
Classement