最近工作中需要保证容器启动之前PostgreSQL先启动,然后Apollo再启动,不然会出现配置加载错误的问题。Kubernetes的初始化容器就能够满足这种场景。

InitContainers能够按照资源文件中初始化容器的顺序依次启动

apiVersion: apps/v1
kind: Deployment
metadata:name: openailab-discovery-servicenamespace: oas-uatlabels:name: openailab-discovery-service
spec:replicas: 1selector:matchLabels:name: openailab-discovery-servicetemplate:metadata:labels:name: openailab-discovery-servicespec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: envoperator: Invalues:- devcontainers:- name: openailab-discovery-serviceimage: 192.168.3.202:8088/oascloud/openailab-discovery-service:latestenv:- name: APOLLO_APP_IDvalue: 'openailab-discovery-service'- name: APOLLO_EUREKA_URIvalue: 'http://10.98.100.95:8082/'- name: APOLLO_NAMESPACEvalue: 'application'volumeMounts:- name: openailab-discovery-servicemountPath: /usr/local/logscommand: ['sh','-c','java -server -Xms512m -Xmx1024m -Djava.io.tmpdir=/var/tmp -Duser.timezone=Asia/Shanghai -jar openailab-discovery-service-*.jar --server.port=8080 --spring.profiles.active=remote']ports:- containerPort: 8080resources:requests:memory: 512Micpu: 250mlimits:memory: 1024Micpu: 500minitContainers:- name: init-postgresqlimage: busyboxcommand: ['sh', '-c']args:- echo Prepare to postgresql initialize..;until nc -w 1 -z 10.98.70.86 5432;do echo Waiting for postgresql initialization to complete..; sleep 10; done;echo Postgresql Initialization successful!;- name: init-apolloimage: busyboxcommand: ['sh', '-c']args:- echo Prepare to apollo initialize..;until nc -w 1 -z 10.98.100.95 8081;do echo Waiting for eureka initialization to complete..; sleep 10; done;echo Eureka is ready.;until nc -w 1 -z 10.98.100.95 8091;do echo Waiting for admin initialization to complete..; sleep 10; done;echo Admin is ready.;echo Apollo Initialization successful!;volumes:- name: openailab-discovery-servicehostPath:path: /usr/local/logs

其中10.98.70.86是PostgreSQL容器集群IP(clusterIP),5432是PostgreSQL端口,10.98.100.95是Apollo的容器集群IP,8081、8091分别是Apollo的Eureka、Admin端口,以上配置方式就能够保证在PostgreSQL完全起来之后,再启动Apollo,待两个初始化容器都启动完成之后,最后启动我们的 openailab-discovery-service 容器就可以了。

Kubernetes 初始化容器顺序启动相关推荐

  1. Kubernetes 上容器的启动顺序如何把控?

    作者 | AddoZhang       责编 | 欧阳姝黎 为什么要做容器启动顺序控制?我们都知道 Pod 中除了 init-container 之外,是允许添加多个容器的.类似 TektonCD ...

  2. Kubernetes的初始化容器initContainers

    initContainers是一种专用的容器,在应用程序容器启动之前运行,可以包括一些应用程序镜像中不存在的实用工具和安装脚本,可以完成应用的必要数据初始化等工作.总的来说就是在正式的容器启动之前做一 ...

  3. kubernetes之初始化容器

    参考:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ 初始化容器是什么? 在kubernetes中,一个pod可 ...

  4. Kubernetes(k8s)四、Pod生命周期(初始化容器的应用,探针liveness、readliness应用,)

    Pod生命周期 学习目标:初始化容器的应用及两个探针的应用 探针 是由 kubelet 对容器执行的定期诊断: Kubelet 可以选择是否执行在容器上运行的三种探针执行和做出反应: liveness ...

  5. CC00204.CloudKubernetes——|KuberNetes高级调度.V07|——|初始化容器|InitContainer操作|

    一.InitContainer概述 ### --- InitContainer概述~~~ # InitContainer: ~~~ 初始化容器:预处理.预判断.与执行命令操作:在我应用容器启动之前做的 ...

  6. Kubernetes(K8s) —— 容器编排管理技术

    K8s 容器编排管理技术 第一章 是什么 1. 背景 2. 基础概念 Pod 控制器 Service 3. 架构 第二章 环境搭建与安装 1. 虚拟机集群搭建 命令批执行技巧 2. K8s相关软件安装 ...

  7. Spring容器的启动流程

    (本文基于 Spring 的 5.1.6.RELEASE 版本) Spring的启动流程可以归纳为三个步骤: 1.初始化Spring容器,注册内置的BeanPostProcessor的BeanDefi ...

  8. k8s 重启策略、健康检查、环境变量、初始化容器

    深入理解Pod对象:基本管理 Pod基本概念 Pod存在意义 Pod资源共享实现机制 Pod管理命令 重启策略 健康检查 环境变量 init Container(初始化容器) 先简单的做出两个运行ht ...

  9. k8s pod生命周期、初始化容器、钩子函数、容器探测、重启策略

    pod结构 Pause容器 Pause容器是每个Pod都会有的一个根容器,它的作用有两个 可以以它为根据,评估整个pod的健康状态 可以在根容器上设置IP地址,其他容器都以此IP(Pod IP),以实 ...

最新文章

  1. keep 虚拟路线修改器_keep儿童版下载-keep儿童模式6.124.0手机版下载
  2. 1951: [Sdoi2010]古代猪文
  3. boost::coroutine2模块实现斐波那契数列的测试程序
  4. mysql关系数据库引擎_MySQL数据库引擎详解
  5. pytorch入门使用
  6. C++运算符重载 摘自网络
  7. C语言线性表之双向循环链表
  8. python中和js交互_python和js交互调用的方法
  9. 如何使用nginx配置SSL证书?
  10. 计算机云计算中心建设项目,某大学计算机云计算云数据中心建设方案.docx
  11. fortran语言能用matlab,fortran语言与matlab
  12. 汇率的思维导图模板下载方法
  13. H7710s-DDP协议(抄录)
  14. ROS机器人语音模块
  15. 三位水仙花数python代码
  16. 【TensorRT】TensorRT was linked against cudnn 8.6.0 but loaded cudnn 8.3.2
  17. Criteria大全
  18. 程序员翻车时的 30 种常见反应!
  19. 写公号半年,精品文章推荐
  20. css3 animation 箭头向右滚动渐隐

热门文章

  1. 转: FFMpeg 封装MP4 文件
  2. VK1650是LED数显驱动IC/数码管显示驱动控制电路(IC),8*4共阴/4*8共阳驱动,SOP16封装,可兼容替代市面上1650,FAE技术支持
  3. 红帽网络yum常用源地址
  4. js中的原型(prototype)是什么?如何理解?
  5. Android短信中的Contacts类
  6. 前端笔记87——clearTimeout
  7. Unity 烘焙Lightmap会出现曝光过度的解决方法
  8. HACK ME PLEASE: 1实战演练
  9. 十八、十九天笔记总结
  10. 三十四 我在软件园的那些日子里