Kubernetes 初始化容器顺序启动
最近工作中需要保证容器启动之前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 初始化容器顺序启动相关推荐
- Kubernetes 上容器的启动顺序如何把控?
作者 | AddoZhang 责编 | 欧阳姝黎 为什么要做容器启动顺序控制?我们都知道 Pod 中除了 init-container 之外,是允许添加多个容器的.类似 TektonCD ...
- Kubernetes的初始化容器initContainers
initContainers是一种专用的容器,在应用程序容器启动之前运行,可以包括一些应用程序镜像中不存在的实用工具和安装脚本,可以完成应用的必要数据初始化等工作.总的来说就是在正式的容器启动之前做一 ...
- kubernetes之初始化容器
参考:https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ 初始化容器是什么? 在kubernetes中,一个pod可 ...
- Kubernetes(k8s)四、Pod生命周期(初始化容器的应用,探针liveness、readliness应用,)
Pod生命周期 学习目标:初始化容器的应用及两个探针的应用 探针 是由 kubelet 对容器执行的定期诊断: Kubelet 可以选择是否执行在容器上运行的三种探针执行和做出反应: liveness ...
- CC00204.CloudKubernetes——|KuberNetes高级调度.V07|——|初始化容器|InitContainer操作|
一.InitContainer概述 ### --- InitContainer概述~~~ # InitContainer: ~~~ 初始化容器:预处理.预判断.与执行命令操作:在我应用容器启动之前做的 ...
- Kubernetes(K8s) —— 容器编排管理技术
K8s 容器编排管理技术 第一章 是什么 1. 背景 2. 基础概念 Pod 控制器 Service 3. 架构 第二章 环境搭建与安装 1. 虚拟机集群搭建 命令批执行技巧 2. K8s相关软件安装 ...
- Spring容器的启动流程
(本文基于 Spring 的 5.1.6.RELEASE 版本) Spring的启动流程可以归纳为三个步骤: 1.初始化Spring容器,注册内置的BeanPostProcessor的BeanDefi ...
- k8s 重启策略、健康检查、环境变量、初始化容器
深入理解Pod对象:基本管理 Pod基本概念 Pod存在意义 Pod资源共享实现机制 Pod管理命令 重启策略 健康检查 环境变量 init Container(初始化容器) 先简单的做出两个运行ht ...
- k8s pod生命周期、初始化容器、钩子函数、容器探测、重启策略
pod结构 Pause容器 Pause容器是每个Pod都会有的一个根容器,它的作用有两个 可以以它为根据,评估整个pod的健康状态 可以在根容器上设置IP地址,其他容器都以此IP(Pod IP),以实 ...
最新文章
- keep 虚拟路线修改器_keep儿童版下载-keep儿童模式6.124.0手机版下载
- 1951: [Sdoi2010]古代猪文
- boost::coroutine2模块实现斐波那契数列的测试程序
- mysql关系数据库引擎_MySQL数据库引擎详解
- pytorch入门使用
- C++运算符重载 摘自网络
- C语言线性表之双向循环链表
- python中和js交互_python和js交互调用的方法
- 如何使用nginx配置SSL证书?
- 计算机云计算中心建设项目,某大学计算机云计算云数据中心建设方案.docx
- fortran语言能用matlab,fortran语言与matlab
- 汇率的思维导图模板下载方法
- H7710s-DDP协议(抄录)
- ROS机器人语音模块
- 三位水仙花数python代码
- 【TensorRT】TensorRT was linked against cudnn 8.6.0 but loaded cudnn 8.3.2
- Criteria大全
- 程序员翻车时的 30 种常见反应!
- 写公号半年,精品文章推荐
- css3 animation 箭头向右滚动渐隐