Невозможно выполнить netcat внутри контейнера Docker / Kubernetes - PullRequest
2 голосов
/ 13 марта 2019

Я пытаюсь развернуть несколько контейнеров Docker через Kubernetes в кластере AWS. У меня нет проблем с самим развертыванием, но я не могу выполнить netcat внутри контейнера.

Если я войду в контейнер (kubectl exec -it example-0 bash) и попытаюсь выполнить: nc -w 1 -q 1 127.0.0.1 2181, произойдет сбой с:

(UNKNOWN) [127.0.0.1] 2181 (?) : Connection refused

Это становится проблемой для некоторых из моих контейнеров, потому что я использую команду netcat для реализации соответствующих тестов готовности.

Пример:

Развертывание контейнера Zookeeper:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zookeeper
  labels:
    app: zookeeper
spec:
  serviceName: zookeeper
  replicas: 1
  selector:
    matchLabels:
      app: zookeeper
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      terminationGracePeriodSeconds: 1800
      nodeSelector:
        proc_host: "yes"
        host_role: "iw"
      containers:
      - name: zookeeper
        image: imageregistry:443/mydomain/zookeeper
        imagePullPolicy: Always
        ports:
        - containerPort: 2181
          name: client
        - containerPort: 2888
          name: peer
        - containerPort: 3888
          name: leader-election
        resources:
          limits:
            memory: 120Mi
          requests:
            cpu: "10m"
            memory: 100Mi
        lifecycle:
          preStop:
            exec:
              command: ["sh", "-ce", "kill -s TERM 1; while $(kill -0 1 2>/dev/null); do sleep 1; done"]
        env:
          - name: LOGGING_LEVEL
            value: WARN
          - name: ID_OFFSET
            value: "4"
          - name: POD_IP
            valueFrom:
              fieldRef:
                fieldPath: status.podIP
        readinessProbe:
          exec:
            command:
            - /bin/bash
            - -c
            - '[ "imok" = "$(echo ruok | nc -w 1 -q 1 127.0.0.1 2181)" ]'
          initialDelaySeconds: 15
          timeoutSeconds: 5
        volumeMounts:
        - name: zookeeper
          mountPath: /tmp/zookeeper
      volumes:
        - name: zookeeper
          hostPath:
            path: /var/lib/kafka/zookeeper

и он развертывается нормально, но проверка готовности завершается с ошибкой:

Readiness probe failed: (UNKNOWN) [127.0.0.1] 2181 (?) : Connection refused

Я новичок в Kubernetes, кто-нибудь знает, что мне не хватает?

Спасибо за вашу помощь.

...