Home > database >  How to ping DaemonSet in kubernetes
How to ping DaemonSet in kubernetes

Time:08-12

I've set up Kubernetes DaemonSet Manifest for handling metrics in my project, and having a little problem of pinging this DaemonSet, So my Eventual Question is, (If I have a daemonset in every pod of my project, how can I ping Specific One or Just the One In order to make sure that everything okay with it?) (Most Likely using curl, but would also consider some other ways too if it's possible:)

Example of DaemonSet I have

apiVersion: v1
kind: DaemonSet 
metadata:
  name: metrics-api-service 
spec:
  selector:
    matchLabels:
      app: api-metrics-app 
  template:
    metadata:
      labels:
        app: api-metrics-app 
    spec:
      terminationGracePeriodSeconds: 60
      containers:
        - name: api-metrics-service 
          image: image 
          livenessProbe:
            exec:
              < what I need to put here In order to ping the DaemonSet ? >
            initialDelaySeconds: 60 
          resources:
            limits:
              cpu: "0.5"
              memory: "500Mi"
            requests:
              cpu: "0.4"
              memory: "200Mi"

Thanks

CodePudding user response:

Healthcheck should be enough to making sure if its working or not, but if you still want to confirm from the external side then make sure your daemon set exposes the port and the security group allow internal traffic, you can ping/curl same node where the daemon set is running, every daemonset will get the node IP as an environment variable.

Pass the HOST_IP in the daemonset environment variable

env:
  - name: HOST_IP
    valueFrom:
      fieldRef:
        fieldPath: status.hostIP

and then update the liveness probe accordingly

livenessProbe:
  exec:
    command:
    - sh
    - -c
    - curl -s $HOST_IP:PORT/healthcheck

I will recommend HTTP check over bash

healthcheck:
    initialDelaySeconds: 100
    periodSeconds: 10
    timeoutSeconds: 5
    httpGet:
      path: /metrics
      port: 3000  

if /metrics seems working, just return 200 status code.

CodePudding user response:

One way to do this would be to lookup for your Pods IP addresses, then query each of them.

for i in $(kubectl get pods -n logging get pods \
    -l app=api-metrics-app \
    -o jsonpath='{.items[*].status.podIP}')
do
    curl http://$i:4242/metrics
done
  • Related