Quantcast
Channel: Active questions tagged docker-registry - DevOps Stack Exchange
Viewing all articles
Browse latest Browse all 60

How to push and deploy to Microk8s built-in registry

$
0
0

I am studying how to create a Proxmox-Microk8s workflow. I can deploy basic apps with my yaml, like Wekan or Wordpress. I cannot deploy a custom image. It's the most basic npm create vite@latest app with no custom code at all. I can build, tag, and push to the registry, but deployment always fails with ErrImagePull. Below are the steps I've taken to try to diagnose why, and the result of each.

  • The image is listed in the Microk8s built-in registry:

    Command: curl http://localhost:32000/v2/_catalog

    Response: {"repositories":["my-test-app","nginx"]}

  • The tag looks valid:

    Command: curl http://localhost:32000/v2/my-test-app/tags/list

    Response: {"name":"my-test-app","tags":["latest"]}

  • Examining its manifest reports no error:

    Command: curl -I -X GET http://localhost:32000/v2/my-test-app/manifests/latest

    Response (abbreviated): HTTP/1.1 200 OK

  • I can pull and run the image from this registry to another PCWorks on another node form the kube clusterWorks on Docker for Windows; same local network, but not part of proxmox or kube clusters

  • I believe my deployment yaml is as simple as possible:

apiVersion: apps/v1kind: Deploymentmetadata:  namespace: my-namespace  name: my-deployment  labels:    app: my-test-appspec:  replicas: 1  selector:    matchLabels:      app: my-test-app  template:    metadata:      labels:        app: my-test-app    spec:      containers:      - name: my-test-app        image: 10.0.0.144:32000/my-test-app:latest # also tried `localhost:32000/my-test-app:latest`        ports:        - containerPort: 80---apiVersion: v1kind: Servicemetadata:  namespace: my-namespace  name: my-deployment-servicespec:  selector:    app: my-test-app  ports:    - protocol: TCP      port: 80      targetPort: 80  type: ClusterIP
  • Applying the yaml appears successful:

    Command: sudo microk8s kubectl apply -f deploy-my-test-app.yaml

    Response: deployment.apps/my-deployment createdservice/my-deployment-service unchanged

  • The deployment reports the error:

    Command: sudo microk8s kubectl get pods -n my-namespace

    Response: my-deployment-69fcdbb744-z8t6t 0/1 😒 ImagePullBackOff 🤦

    • Investigating the errors:

      Command: sudo microk8s kubectl describe pod abbriviated...

      Responses (abbriviated):

      1. Warning FailedCreatePodSandBox 3m12s kubelet Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "..." : plugin type="calico" failed (add): error getting ClusterInformation: Get "https://10.152.183.1:443/apis/crd.projectcalico.org/v1/clusterinformations/default": dial tcp 10.152.183.1:443: connect: connection refused
        • I have no idea what this could be. I have not done any "custom tweaks" to the Microk8s install.
      2. Warning Failed 2m14s kubelet Failed to pull image "localhost:32000/my-test-app:latest": failed to pull and unpack image "localhost:32000/my-test-app:latest": failed to read expected number of bytes: unexpected EOF
        • As previously stated: I can pull and run this image on other OS's (made sure to also test on one that didn't origianlly push the image, to make sure it wasn't cached)

    Ultimately, I intend to expose this to Cloudflared with an ingress. This is my attempt to get the basic build-tag-push-deploy workflow operational. Any advice would be greatly appreciated.


Viewing all articles
Browse latest Browse all 60

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>