Kubernetes DaemonSet无法从集群中拉取Docker镜像解决方案

38次阅读
没有评论

问题描述

在Kubernetes集群中使用DaemonSet时遇到了问题。他在集群上部署了一个YAML文件,但是看起来DaemonSet在从镜像仓库中拉取Docker镜像时失败了。

以下是他提供的YAML文件内容:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: oci-la-fluentd-daemonset
  namespace: kube-system
  labels:
    app: oci-la-fluentd-logs
    version: v1
spec:
  selector:
    matchLabels:
      app: oci-la-fluentd-logs
      version: v1
  template:
    metadata:
      labels:
        app: oci-la-fluentd-logs
        version: v1
    spec:
      serviceAccountName: oci-la-fluentd-serviceaccount
      tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule
      imagePullSecrets:
        - name: regcred
      containers:
        - name: oci-la-fluentd-logs
          image: iad.ocir.io/kobie/oke_logging/fluentd_oci_la
          imagePullPolicy: Always
          env:
            - name: awx_lower
              valueFrom:
                fieldRef:
                  fieldPath: spec.nodeName

用户尝试了将镜像拉取的凭证附加到了YAML文件中。

这是他在查看Pod时在集群上看到的错误消息:

Failed to pull image iad.ocir.io/kobie/oke_logging/fluentd_oci_la:latest rpc error: code = Unknown desc denied: Anonymous users are only allowed read access on public repos

解决方案

在解决此问题之前,请确保你已经理解并了解操作所涉及的风险。以下是两种可能的解决方案:

方案1:设置不安全的镜像仓库访问

如果允许的话,你可以在主机的Docker配置中设置不安全的镜像仓库:
1. 打开主机上的/etc/docker/daemon.json文件(如果文件不存在,可以创建它)。
2. 将以下内容添加到文件中,并将其中的10.10.10.10:5000替换为你的仓库地址:

{
    "insecure-registries" : [ "10.10.10.10:5000" ]
}
  1. 保存文件并关闭。
  2. 重新启动Docker守护进程以使更改生效:
sudo systemctl restart docker

请注意,这种方法可能会带来安全风险,因为你正在允许不安全的镜像仓库访问。

方案2:使用正确的镜像访问凭证

确保你在imagePullSecrets字段中使用了正确的镜像访问凭证。如果你正在尝试从OCI Registry中拉取镜像,你需要确保regcred这个Secret已经正确创建,并且包含了正确的凭证信息。

在以上的YAML文件中,imagePullSecrets字段指向了一个名为regcred的Secret。确保这个Secret 包含了访问OCI Registry所需的凭证。

方案3:解决OCI Registry访问权限问题

根据你提供的评论,这个问题可能与OCI Registry的访问权限有关。确保你已经正确设置了访问OCI Registry的权限,并且你的集群可以在访问时通过凭证进行身份验证。

总结

在使用Kubernetes DaemonSet时,出现Docker镜像拉取失败的问题可能涉及到凭证、访问权限以及Docker配置等多个方面。请根据上述解决方案中的指导进行排查和修复,以解决你遇到的问题。

请注意,在实际操作中可能会存在版本差异或其他情况,因此在进行任何更改之前,请确保备份相关配置,并根据实际情况进行操作。

以上是针对你提供的问题的解决方案,希望能够帮助你解决问题。如果还有其他问题或需要进一步的指导,请随时提问。

正文完