kubesphere / kubekey

Install Kubernetes/K3s only, both Kubernetes/K3s and KubeSphere, and related cloud-native add-ons, it supports all-in-one, multi-node, and HA 🔥 ⎈ 🐳
https://kubesphere.io
Apache License 2.0
2.39k stars 555 forks source link

manifest failed: Error pushing manifest list/index to registry: #2376

Open xuetong520 opened 3 months ago

xuetong520 commented 3 months ago

What is version of KubeKey has the issue?

3.1.5

What is your os environment?

centos7

KubeKey config file

apiVersion: kubekey.kubesphere.io/v1alpha2
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: app-6-6, address: 192.168.67.64, internalAddress: "192.168.67.64", port: 22, user: root, password: "123123123"}
  roleGroups:
    etcd:
    - app-6-6 # All the nodes in your cluster that serve as the etcd nodes.
    master:
    - app-6-6
    worker:
    - app-6-6
    registry:
    - app-6-6
  controlPlaneEndpoint:
    # Internal loadbalancer for apiservers. Support: haproxy, kube-vip [Default: ""]
    #internalLoadbalancer: haproxy
    # Determines whether to use external dns to resolve the control-plane domain.
    # If 'externalDNS' is set to 'true', the 'address' needs to be set to "".
    externalDNS: false
    domain: lb.kubesphere.local
    # The IP address of your load balancer. If you use internalLoadblancer in "kube-vip" mode, a VIP is required here.
    address: ""
    port: 6443

  kubernetes:
    #kubeletArgs:
      # Directory path for managing kubelet files (volume mounts, etc).
    #  - --root-dir=/var/lib/kubelet
    version: v1.30.4
    # Container Runtime, support: containerd, cri-o, isula. [Default: docker]
    containerManager: docker
    clusterName: cluster.local
    # Whether to install a script which can automatically renew the Kubernetes control plane certificates. [Default: false]
    autoRenewCerts: true
    # masqueradeAll tells kube-proxy to SNAT everything if using the pure iptables proxy mode. [Default: false].
    masqueradeAll: false
    # maxPods is the number of Pods that can run on this Kubelet. [Default: 110]
    maxPods: 110
    # podPidsLimit is the maximum number of PIDs in any pod. [Default: 10000]
    podPidsLimit: 10000
    # The internal network node size allocation. This is the size allocated to each node on your network. [Default: 24]
    nodeCidrMaskSize: 24
    # Specify which proxy mode to use. [Default: ipvs]
    proxyMode: ipvs
  etcd:
    # Specify the type of etcd used by the cluster. When the cluster type is k3s, setting this parameter to kubeadm is invalid. [kubekey | kubeadm | external] [Default: kubekey]
    type: kubekey
    dataDir: "/var/lib/etcd"
  network:
    plugin: calico
    calico:
      ipipMode: Always  # IPIP Mode to use for the IPv4 POOL created at start up. If set to a value other than Never, vxlanMode should be set to "Never". [Always | CrossSubnet | Never] [Default: Always]
      vxlanMode: Never  # VXLAN Mode to use for the IPv4 POOL created at start up. If set to a value other than Never, ipipMode should be set to "Never". [Always | CrossSubnet | Never] [Default: Never]
      vethMTU: 0  # The maximum transmission unit (MTU) setting determines the largest packet size that can be transmitted through your network. By default, MTU is auto-detected. [Default: 0]
    kubePodsCIDR: 10.233.64.0/18,fc00::/48
    kubeServiceCIDR: 10.233.0.0/18,fd00::/108
  storage:
    openebs:
      basePath: /var/openebs/local # base path of the local PV provisioner
  registry:
    registryMirrors: []
    insecureRegistries: []
    privateRegistry: "harbor.local.com"
    namespaceOverride: ""
    auths: # if docker add by `docker login`, if containerd append to `/etc/containerd/config.toml`
      "aiharbor.msxf.local":
        username: "admin"
        password: "Harbor12345"
        skipTLSVerify: true # Allow contacting registries over HTTPS with failed TLS verification.
        plainHTTP: false # Allow contacting registries over HTTP.
        certsPath: "/etc/docker/certs.d/harbor.local.com" # Use certificates at path (*.crt, *.cert, *.key) to connect to the registry.
  addons: [] # You can install cloud-native addons (Chart or YAML) by using this field.

A clear and concise description of what happend.

push image harbor.local.com/kubesphere/node-feature-discovery:v0.10.0 multi-arch manifest failed: Error pushing manifest list/index to registry: sha256:9f4ca145ff90f43228bd179e3ec8b74548064d690da1b38498f136ba99e2e666: failed commit on ref "index-harbor.local.com/kubesphere/node-feature-discovery:v0.10.0@sha256:9f4ca145ff90f43228bd179e3ec8b74548064d690da1b38498f136ba99e2e666": unexpected status: 404 Not Found 19:54:51 CST failed: [LocalHost] error: Pipeline[ArtifactImagesPushPipeline] execute failed: Module[CopyImagesToRegistryModule] exec failed: failed: [LocalHost] [PushManifest] exec failed after 1 retries: push image harbor.local.com/kubesphere/node-feature-discovery:v0.10.0 multi-arch manifest failed: Error pushing manifest list/index to registry: sha256:9f4ca145ff90f43228bd179e3ec8b74548064d690da1b38498f136ba99e2e666: failed commit on ref "index-harbor.local.com/kubesphere/node-feature-discovery:v0.10.0@sha256:9f4ca145ff90f43228bd179e3ec8b74548064d690da1b38498f136ba99e2e666": unexpected status: 404 Not Found

Relevant log output

No response

Additional information

No response

snail2sky commented 3 months ago

It may be caused by the inconsistency between the kk version used to build the offline package and the kk version used when deploying k8s.