Я пытаюсь развернуть несколько контейнеров 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, кто-нибудь знает, что мне не хватает?
Спасибо за вашу помощь.