Kubernetes-等待其他吊舱准备就绪

Kubernetes-等待其他吊舱准备就绪,kubernetes,Kubernetes,我有两个应用程序-app1和app2,其中app1是一个config服务器,它为app2保存配置。我已经在app1中定义了/readiness端点,需要等待它返回OK状态才能启动app2的POD app2的部署必须等到kubernetes接收到/readiness中/readiness端点发出的Http状态OK,这一点至关重要,因为它是一个配置服务器,并保存着app2的关键配置 有可能实现这种部署依赖关系吗?是的,可以使用(另外,请参阅此了解一些后台重新计时),但更好、更具Kubernetes特

我有两个应用程序-app1app2,其中app1是一个
config服务器
,它为app2保存配置。我已经在app1中定义了
/readiness
端点,需要等待它返回
OK
状态才能启动app2的POD

app2的部署必须等到
kubernetes
接收到/readiness中/readiness端点发出的
Http状态OK
,这一点至关重要,因为它是一个配置服务器,并保存着app2的关键配置

有可能实现这种部署依赖关系吗?

是的,可以使用(另外,请参阅此了解一些后台重新计时),但更好、更具Kubernetes特性的本机模式是使用重试和超时,而不是以这种方式硬编码依赖关系。

您需要使用。下面是如何在
YAML
文件中执行的示例

initContainers:
- name: wait-for-other-pod
  image: docker.some.image
  args:
  - /bin/sh
  - -c
  - >
    set -x;
    while [ $(curl -sw '%{http_code}' "http://www.<your_pod_health_check_end_point>.com" -o /dev/null) -ne 200 ]; do
      sleep 15;
    done
initContainers:
-名称:等待其他吊舱
图片:docker.some.image
args:
-/bin/sh
--c
- >
set-x;
而[$(curl-sw“{http_code}”http://www..com“-o/dev/null)-ne 200];做
睡眠15;
完成
我使用了
curl
来点击运行状况检查端点,您可以使用任何其他UNIX命令来检查另一个pod是否准备就绪。

使用它实际上非常简单:

  initContainers:
  - name: wait-for-app1
    image: image-docker-containing-sh
    args:
    - /bin/sh
    - -c
    - /usr/app/wait-for-it.sh app1:<portapp1> -t 0
initContainers:
-名称:wait-for-app1
image:image docker包含sh
args:
-/bin/sh
--c
-/usr/app/wait-for-it.sh app1:-t 0
当然,重试和超时是可行的,但这是一个很好的解决方法。

initContainers:
-名称:等待相关服务
图片:StefanDevice/wait-for-200
环境:
-名称:URL
价值:http://dependent-service.{{.Release.Namespace}}.svc.cluster.local:3000

使用

我知道“使用重试和超时”是Kubernetes的方法,但它会因为失败而阻塞我的日志记录。它产生了一个新问题;筛选此设计模式导致的“正常”故障。一个“简单”的依赖关系管理,如“在准备就绪之前不要计划”将非常有助于减少此问题,并且在监视集群时比查看要运行的“initContainer”更明显,而您不知道它实际上正在初始化或只是等待。
200]
在“200”和“]”之间需要有一个空格请为像我这样的新手修复:)对于
docker.some.image
,可以使用docker Hub的
k8s.gcr.io/busybox
busybox