gpt4 book ai didi

kubernetes - Kubernetes中depends_on的等价物是什么

转载 作者:行者123 更新时间:2023-12-03 13:56:57 30 4
gpt4 key购买 nike

我有一个包含以下条目的 docker compose 文件

version: '2.1'

services:
mysql:
container_name: mysql
image: mysql:latest
volumes:
- ./mysqldata:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 'password'
ports:
- '3306:3306'
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3306"]
interval: 30s
timeout: 10s
retries: 5

test1:
container_name: test1
image: test1:latest
ports:
- '4884:4884'
- '8443'
depends_on:
mysql:
condition: service_healthy
links:
- mysql

Test-1 容器依赖于 mysql,它需要启动并运行。

在 docker 中,这可以使用运行状况检查和 depends_on 属性来控制。
kubernetes 中的健康检查等效项是我已经创建的 readinessprobe,但是我们如何控制 pod 中的容器启动??????

非常感谢任何有关这方面的指示。

我的 Kubernetes 文件:
apiVersion: apps/v1beta1 
kind: Deployment
metadata:
name: deployment
spec:
replicas: 1
template:
metadata:
labels:
app: deployment

spec:
containers:
- name: mysqldb
image: "dockerregistry:mysqldatabase"
imagePullPolicy: Always
ports:
- containerPort: 3306
readinessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 15
periodSeconds: 10
- name: test1
image: "dockerregistry::test1"
imagePullPolicy: Always
ports:
- containerPort: 3000

最佳答案

这就是 Docker Compose 和 Docker Swarm 的美妙之处……它们的简单性。

在部署 ELK 堆栈时,我们遇到了同样的 Kubernetes 缺点。
我们通过使用 side-car (initContainer) 解决了这个问题,它只是在同一个 pod 中首先运行的另一个容器,当它完成时,kubernetes 会自动启动 [main] 容器。我们使它成为一个简单的 shell 脚本,它一直在循环中,直到 Elasticsearch 启动并运行,然后它退出并且 Kibana 的容器启动。

下面是一个等待 Grafana 准备好的边车示例。

在 Pod 中的其他容器上方添加这个“initContainer” block :

spec:
initContainers:
- name: wait-for-grafana
image: darthcabs/tiny-tools:1
args:
- /bin/bash
- -c
- >
set -x;
while [[ "$(curl -s -o /dev/null -w ''%{http_code}'' http://grafana:3000/login)" != "200" ]]; do
echo '.'
sleep 15;
done
containers:
.
.
(your other containers)
.
.

关于kubernetes - Kubernetes中depends_on的等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49368047/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com