汕头建站模板源码,做网站只开发手机端可不可以,如何选择o2o网站建设,网站模版上线需要什么意思k8s 使用 Init Container 确保依赖的服务已经启动Intro最近 helm 3 正式发布了#xff0c;dotnetcore 3.1 也正式发布了#xff0c;最近打算把我的活动室预约项目做一个升级#xff0c;项目已经升级到了 dotnetcore 3.1#xff0c;最近几天则在准备把项目打包一个 helm 包dotnetcore 3.1 也正式发布了最近打算把我的活动室预约项目做一个升级项目已经升级到了 dotnetcore 3.1最近几天则在准备把项目打包一个 helm 包使得想要在 k8s 上部署的童鞋可以更方便的部署目前已经基本完成本来打算发布到阿里云的 AppHub 上但是前几天更新的 angular client 的 chart 还没有更新不知道最近是不更新了还是怎么回事所以现在暂时还没发布到阿里云的 AppHub。你如果想要现在体验可以直接拉取 Github 上的 chart 配置自己打包安装。一个 Pod 中可以有多个 container也可以有多个 init containerinit container 会在应用启动之前启动并且如果有多个应用会依次启动只有一个运行成功了才会启动下一个所有 init container 都运行结束了应用才会启动因此我们可以借助 init container 来检查应用的依赖如db/redis/es...是否已经可用。Init Container 使用示例apiVersion: v1
kind: Pod
metadata:name: myapp-podlabels:app: myapp
spec:containers:- name: reservation-serverimage: weihanli/activityreservation:devports:- name: httpcontainerPort: 80protocol: TCPlivenessProbe:httpGet:path: /healthport: httpinitialDelaySeconds: 60periodSeconds: 10readinessProbe:httpGet:path: /api/noticeport: httpinitialDelaySeconds: 60periodSeconds: 10initContainers:- name: init-redisimage: busybox:1.31command: [sh, -c, until nslookup redis-server; do echo waiting for redis; sleep 2; done;]- name: init-mysqlimage: busybox:1.31command: [sh, -c, until nslookup mysql-server; do echo waiting for mysql; sleep 2; done;]
上面这一示例定义了两个 init container一个用来检查 redis 是否启动成功另外一个用来检查 mysql 是否启动成功开始部署的时候首先会通过 nslookup 检查 redis 是否成功启动检测到 redis 启动了之后域名解析也就会成功然后会检查 mysql 的状态mysql 也成功启动之后才会开始启动 reservation-server container查看 pod 信息kubectl describe po reservation-server-59fb5447f7-gb5jg
从上面的信息可以看到结果是符合预期的首先是创建并启动 init-redis 的容器然后创建并启动 init-mysql 容器最后创建并启动 reservation-server 容器从 pod 状态来看redis 和 mysql 还未 ready 时 resrvation-server 容器也不会启动查看 init-redis 的日志kubectl logs reservation-server-59fb5447f7-gb5jg -c init-redis
查看 init-mysql 的日志kubectl logs reservation-server-59fb5447f7-gb5jg -c init-mysql
Memo通过 init container 的配置终于可以解决依赖的服务还没有 ready 应用就启动从而导致应用多次重启之后才能正常工作的问题~~Referencehttps://kubernetes.io/docs/concepts/workloads/pods/init-containershttps://github.com/WeihanLi/ActivityReservation/blob/dev/k8s/charts/reservation-server/templates/deployment.yamlhttps://github.com/WeihanLi/ActivityReservation/tree/dev/k8s/charts/reservation-server