Kubernetes
August 1, 2023

Pod не может сделать запрос к самому себе по ip адресу сервиса 

Из пода не получается сделать запрос на себя же по ip адресу сервиса, который за ним наблюдает.

Если зайти в под и сделать curl -I <serviceIP>, то запрос повиснет и не выполниться.

Данное поведение наблюдается на кластерах с CNI Kubenet. При использовании Cilium таких проблем нет.

Рабочий пример в Cilium.

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
  name: cam-nginx
  namespace: default
  labels:
    app: nginx
    environment: prod
  annotations:
    author: cameda
spec:
  containers:
  - name: nginx
    image: nginx:latest
    imagePullPolicy: IfNotPresent
    ports:
    - containerPort: 80
    - containerPort: 443
    resources:
      requests:
        cpu: 300m
        memory: 300Mi
      limits:
        memory: 400Mi
  restartPolicy: Always
  hostname: nginx
  subdomain: web
---
apiVersion: v1
kind: Service
metadata:
  namespace: default
  name: nginx-service2
  labels:
    environment: prod
  annotations:
    author: cameda
spec:
  type: ClusterIP
  selector:
    app: nginx
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 80
EOF
kubectl get svc | grep nginx-service2
nginx-service2                       ClusterIP      10.21.26.32     <none>          80/TCP                       4m3s
kubectl exec -ti cam-nginx -- /bin/bash
curl -I 10.21.26.32
HTTP/1.1 200 OK
Server: nginx/1.25.1

В Kubenet аналогичный пример curl не выдаст результат.