Readiness and liveness probes
- это то, как ваш кластер проверяет состояние одного модуля.
Вам необходимо определить их в вашем манифесте:
apiVersion: v1
kind: Pod
metadata:
name: goproxy
labels:
app: goproxy
spec:
containers:
- name: goproxy
image: k8s.gcr.io/goproxy:0.1
ports:
- containerPort: 8080
readinessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
tcpSocket:
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
Когда ваш блок работает kubectl port-forward
будет работать немедленно.
Вы можете прочитать некоторую теорию по адресу:
https://kubernetes.io/docs/tasks/configure-pod-container/configure -liveness-готовности-зонды /
У меня такое же понимание, как и у вас @VKR.
Способ, которым я решил решить это, состоял в том, чтобы каждый цикл зависал, чтобы проверить статус переадресованного порта. Он работает, но я надеялся, что это будет пребедренное решение.
do curl:6379
timer=0
while curl is false and timer <100
timer++
curl:6379
sleep 1
Спасибо @Nicola и @David, я буду помнить об этом, когда пройду тестирование разработки.
Отвечая непосредственно на ваш вопрос - нет, вы не можете определить статус команды kubectl port-forward
. Единственный способ определить, что происходит в фоновом режиме, - проверить вывод этой команды. Результат будет выглядеть примерно так:
Forwarding from 127.0.0.1:6379 -> 6379
Forwarding from [::1]:6379 -> 6379
Я могу предложить использовать тип сервиса NodePort вместо port-forward
. Используя NodePort
, вы можете открыть свое приложение как услугу и получить доступ из-за пределов Кубернетов. Для получения дополнительных примеров используйте этот URL .