繁体   English   中英

Kubernetes:通过内部部署从内部注册表中提取映像

[英]Kubernetes: Pull images from internal registry with on-premise deployment

tl; dr如果来自同一k8s群集上托管的私有Docker注册表的镜像没有单独的DNS条目,该如何在Kubernetes Pod引用该映像?

在本地Kubernetes部署中,我已使用带有自签名证书的稳定/ docker-registry舵图设置了私有Docker注册表。 这是前提,我无法设置DNS记录来为注册表提供自己的URL。 我希望将这些清单用作模板,所以我不想对任何特定于环境的配置进行硬编码。

Docker注册表服务的类型为ClusterIP ,如下所示:

apiVersion: v1
kind: Service
metadata:
  name: docker-registry
  labels:
    app: docker-registry
spec:
  type: ClusterIP
  ports:
    - port: 443
      protocol: TCP
      name: registry
      targetPort: 5000
  selector:
    app: docker-registry

如果我已手动将映像推送到此注册表(或将来通过Jenkins构建管道),我将如何在Pod规范中引用该映像?

我努力了:

containers:
- name: my-image
  image: docker-registry.devops.svc.cluster.local/my-image:latest
  imagePullPolicy: IfNotPresent

但是我收到有关节点主机无法解析docker-registry.devops.svc.cluster.local 我认为k8s节点上的Docker守护程序无法解析该URL,因为它是内部k8s DNS记录。

Warning  Failed     20s (x2 over 34s)  kubelet, ciabdev01-node3  
Failed to pull image "docker-registry.devops.svc.cluster.local/hadoop-datanode:2.7.3": 
rpc error: code = Unknown desc = Error response from daemon: Get https://docker-registry.devops.svc.cluster.local/v2/: dial tcp: lookup docker-registry.devops.svc.cluster.local: no such host
Warning  Failed     20s (x2 over 34s)  kubelet, node3  Error: ErrImagePull

那么,在这种内部部署方案中,我将如何引用内部托管的Docker注册表上的映像?

我唯一的选择是使用NodePort类型的服务,在Pod规范中引用节点的主机名之一,然后配置每个节点的docker守护程序以忽略自签名证书吗?

Docker使用节点上配置的DNS设置,默认情况下,它看不到Kubernetes集群中声明的DNS名称。

您可以尝试使用以下解决方案之一:

  1. 将“ docker-registry”服务描述中ClusterIP字段中的IP地址用作docker注册表名称。 在重新创建服务之前,该地址是静态的。 另外,您可以将此IP地址添加到每个节点上的/etc/hosts

    例如,您可以将my-docker-registry 10.11.12.13my-docker-registry 10.11.12.13/etc/hosts文件。 因此,您可以将10.11.12.13:5000说明中的image字段使用10.11.12.13:5000my-docker-registry:5000作为docker注册表名称。

  2. 使用type: NodePort在集群外部公开“ docker-registry”服务。 localhost:<exposed_port>描述中的image字段使用localhost:<exposed_port><one_of_nodes_name>:<exposed_port>作为<one_of_nodes_name>:<exposed_port>注册表名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM