Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Need a CURL binary availble inside kubernetes pod

I would like to sh myself inside a kubernetes pod and execute a CURL command. Unfortunatly I can't find anywhere a working image with curl availble (and compatible with kubernetes)...

  1. I tried some docker images with Alpine and CURL but each time it ended with crashLoopBackOff. I guess it means the container exited because the docker image exits after executing itself...
  2. I also tried using the image of alpine and ubuntu alone but each time it also ended with crashloopBackOff.
  3. I manage to exec in a few images but it never had CURL installed and neither APT-GET or APK were working.

To exec into a container I'm doing a simple kubectl exec -it POD_ID /bin/bash

Does someone knows of a minimal docker image that contains a CURL binary and wont crash in kubernetes ?

PS: This is for testing purpose so it does not need to be rock solid or anything

Thx


UPDATE 1 This is the yaml I use to deploy all potential image :

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: blue
  namespace: default
spec:
  replicas: 1
  template:
    metadata:
      labels:
        name: blue
    spec:
      containers:
      - name: blue-website
        image: SOME_IMAGE:latest
        resources:
          requests:
            cpu: 0.1
            memory: 200

I don't think that its broken because it works on certain image.

like image 549
Doctor Avatar asked Nov 29 '22 21:11

Doctor


2 Answers

You can skip the manifest and use kubectl run to spin up one of these pods on demand. i.e.

kubectl run curl -it --rm --image=curlimages/curl -- sh

This would create a deployment named curl from the curlimages/curl image and give you an interactive (-it) shell inside it. When you exit, the deployment will be deleted (--rm).

like image 69
switchboard.op Avatar answered Dec 04 '22 02:12

switchboard.op


You can use this image nightfury1204/alpine-curl

I created above image for my own testing purpose.

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: curl
  labels:
    name: curl
spec:
  serviceName: "curl"
  selector:
    matchLabels:
      app: curl
  replicas: 1
  template:
    metadata:
      labels:
        app: curl
    spec:
      containers:
      - name: curl
        image: nightfury1204/alpine-curl
        command:
          - "sh"
          - "-c"
          - >
            while true; do
              sleep 3600;
            done

To exec into the pod use this kubectl exec -it curl-0 sh

like image 24
nightfury1204 Avatar answered Dec 04 '22 02:12

nightfury1204