日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

k8s 查看mysql 日志_k8s 使用 Init Container 确保依赖的服务已经启动

發(fā)布時(shí)間:2024/9/19 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 k8s 查看mysql 日志_k8s 使用 Init Container 确保依赖的服务已经启动 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

k8s 使用 Init Container 確保依賴的服務(wù)已經(jīng)啟動(dòng)

Intro

最近 helm 3 正式發(fā)布了,dotnetcore 3.1 也正式發(fā)布了,最近打算把我的活動(dòng)室預(yù)約項(xiàng)目做一個(gè)升級(jí),項(xiàng)目已經(jīng)升級(jí)到了 dotnetcore 3.1,最近幾天則在準(zhǔn)備把項(xiàng)目打包一個(gè) helm 包,使得想要在 k8s 上部署的童鞋可以更方便的部署,目前已經(jīng)基本完成,本來打算發(fā)布到阿里云的 AppHub 上,但是前幾天更新的 angular client 的 chart 還沒有更新,不知道最近是不更新了還是怎么回事,所以現(xiàn)在暫時(shí)還沒發(fā)布到阿里云的 AppHub。你如果想要現(xiàn)在體驗(yàn),可以直接拉取 Github 上的 chart 配置,自己打包安裝。

一個(gè) Pod 中可以有多個(gè) container,也可以有多個(gè) init container,init container 會(huì)在應(yīng)用啟動(dòng)之前啟動(dòng),并且如果有多個(gè)應(yīng)用會(huì)依次啟動(dòng),只有一個(gè)運(yùn)行成功了,才會(huì)啟動(dòng)下一個(gè),所有 init container 都運(yùn)行結(jié)束了,應(yīng)用才會(huì)啟動(dòng),因此,我們可以借助 init container 來檢查應(yīng)用的依賴(如:db/redis/es...)是否已經(jīng)可用。

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;']

上面這一示例定義了兩個(gè) init container,一個(gè)用來檢查 redis 是否啟動(dòng)成功,另外一個(gè)用來檢查 mysql 是否啟動(dòng)成功,開始部署的時(shí)候,首先會(huì)通過 nslookup 檢查 redis 是否成功啟動(dòng),檢測(cè)到 redis 啟動(dòng)了之后,域名解析也就會(huì)成功,然后會(huì)檢查 mysql 的狀態(tài),mysql 也成功啟動(dòng)之后才會(huì)開始啟動(dòng) reservation-server container

查看 pod 信息:

kubectl describe po reservation-server-59fb5447f7-gb5jg

從上面的信息可以看到結(jié)果是符合預(yù)期的,首先是創(chuàng)建并啟動(dòng) init-redis 的容器,然后創(chuàng)建并啟動(dòng) init-mysql 容器,最后創(chuàng)建并啟動(dòng) reservation-server 容器,從 pod 狀態(tài)來看,redis 和 mysql 還未 ready 時(shí),resrvation-server 容器也不會(huì)啟動(dòng)

查看 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 的配置終于可以解決依賴的服務(wù)還沒有 ready 應(yīng)用就啟動(dòng)從而導(dǎo)致應(yīng)用多次重啟之后才能正常工作的問題~~

Reference

  • https://kubernetes.io/docs/concepts/workloads/pods/init-containers
  • https://github.com/WeihanLi/ActivityReservation/blob/dev/k8s/charts/reservation-server/templates/deployment.yaml
  • https://github.com/WeihanLi/ActivityReservation/tree/dev/k8s/charts/reservation-server

總結(jié)

以上是生活随笔為你收集整理的k8s 查看mysql 日志_k8s 使用 Init Container 确保依赖的服务已经启动的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。