如何在Kubernetes Deployment YAML中配置Apache httpd启动前等待30秒
实现方法
要在Apache httpd服务正式启动前等待30秒,有两种常用配置方式,可根据需求选择:
方式1:主容器内延迟启动httpd
该方式下主容器会立刻被拉起,仅内部的httpd进程延迟30秒启动,是最常用的实现,完整Deployment YAML如下:
apiVersion: apps/v1 kind: Deployment metadata: name: httpd-deployment labels: app: httpd spec: replicas: 1 selector: matchLabels: app: httpd template: metadata: labels: app: httpd spec: containers: - name: httpd image: httpd:2.4 # 覆盖镜像默认启动命令,先休眠30秒再以前台模式启动httpd command: [ "sh", "-c", "sleep 30 && httpd -D FOREGROUND" ] ports: - containerPort: 80
方式2:主容器启动前等待
该方式下会先执行完等待逻辑,再拉起主httpd容器,适合需要等待外部依赖就绪的场景,只需在spec.template.spec下新增init容器配置即可,完整YAML如下:
apiVersion: apps/v1 kind: Deployment metadata: name: httpd-deployment labels: app: httpd spec: replicas: 1 selector: matchLabels: app: httpd template: metadata: labels: app: httpd spec: # 新增init容器,先执行30秒等待 initContainers: - name: pre-wait image: busybox:latest command: [ "sh", "-c", "sleep 30" ] containers: - name: httpd image: httpd:2.4 ports: - containerPort: 80
注意事项
- 方式1中必须保留
httpd -D FOREGROUND启动命令,否则容器执行完休眠指令后会直接退出,不会运行httpd服务。 - 固定时长的等待适合临时场景,生产环境如果需要等待依赖服务就绪,更推荐使用启动探针替代硬编码的等待时间。
内容的提问来源于stack exchange,提问作者KNC
相关产品推荐
相关产品推荐

