我们如何使用kubernetes创建服务依赖关系

我们如何使用kubernetes创建服务依赖关系,kubernetes,kubectl,kubernetes-helm,Kubernetes,Kubectl,Kubernetes Helm,我有两种服务。一个包含2个pod副本的web应用程序,该应用程序依赖于另一个后端服务,该后端服务具有用于MySQL容器的pod(2个副本) web应用程序使用后端数据库服务设置的环境变量。我将所有json都放在同一个目录中 是否有任何方法来表达依赖关系,以便kubectl在启动web应用程序服务之前始终创建(并运行)后端吊舱和服务?我已经使用kubedeam创建了集群。使用readiness probe或init容器,请参阅我可以建议两种解决方案: 首先,将init容器附加到web服务器,该服务

我有两种服务。一个包含2个pod副本的web应用程序,该应用程序依赖于另一个后端服务,该后端服务具有用于MySQL容器的pod(2个副本)

web应用程序使用后端数据库服务设置的环境变量。我将所有json都放在同一个目录中


是否有任何方法来表达依赖关系,以便kubectl在启动web应用程序服务之前始终创建(并运行)后端吊舱和服务?我已经使用kubedeam创建了集群。

使用readiness probe或init容器,请参阅

我可以建议两种解决方案:

首先,将init容器附加到web服务器,该服务器将等待MySQL启动并运行。部署如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: web
  replicas: 2
  template:
    metadata:
      labels:
        app: web
    spec:
      initContainers:
      - name: init-wait
        image: alpine
        command: ["sh", "-c", "for i in $(seq 1 300); do nc -zvw1 mysql 3306 && exit 0 || sleep 3; done; exit 1"]
      containers:
      - name: web
        image: web-server
        ports:
        - containerPort: 80
          protocol: TCP
它使用netcat尝试每3秒在端口3306上启动到mysql服务的TCP连接。一旦实现连接,init容器将结束,web服务器将正常启动


第二种选择是使用。它允许您根据需要在服务器和数据库部署之间创建依赖项对象。查看他们的回购协议以获取完整的文档。

有相同的问题,并且按照他们的建议,使用k8s解决了我的问题

更新 添加了示例代码

种类:服务
版本:v1
元数据:
名称:博士后服务
规格:
# ...
---
apiVersion:apps/v1
种类:部署
# ...
规格:
# ...
模板:
# ...
规格:
#等待postgres服务先运行
初始化容器:
-名称:init wait for db
图片:阿尔卑斯山
命令:[“/bin/sh”、“-c”、“for i in$(seq 1300);do nc-zvw1 postgres service 5432&&exit 0 | | sleep 3;done;exit 1”]
容器:
-名称:我的django应用程序
图片:dockerhubuser/my django应用程序
命令:[“/bin/sh”、“-c”、“python/root/django/manage.py migrate&&python/root/django/manage.py runserver 0.0.0.0:8000--noreload”]
端口:
-集装箱港口:8000
环境:
# ...

这不允许控制依赖项。您能提供链接以外的更多详细信息吗?@rayryeng,请查看我评论中的更新,了解示例用法。