我们如何使用kubernetes创建服务依赖关系
我有两种服务。一个包含2个pod副本的web应用程序,该应用程序依赖于另一个后端服务,该后端服务具有用于MySQL容器的pod(2个副本) web应用程序使用后端数据库服务设置的环境变量。我将所有json都放在同一个目录中我们如何使用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服务器,该服务
是否有任何方法来表达依赖关系,以便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,请查看我评论中的更新,了解示例用法。