最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nginx pod hook鉤子優(yōu)雅關(guān)閉示例詳解

 更新時間:2022年11月04日 16:23:16   作者:人生的哲理  
這篇文章主要為大家介紹了nginx pod hook鉤子優(yōu)雅關(guān)閉示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一.系統(tǒng)環(huán)境

服務(wù)器版本docker軟件版本Kubernetes(k8s)集群版本CPU架構(gòu)
CentOS Linux release 7.4.1708 (Core)Docker version 20.10.12v1.21.9x86_64

Kubernetes集群架構(gòu):k8scloude1作為master節(jié)點(diǎn),k8scloude2,k8scloude3作為worker節(jié)點(diǎn)

服務(wù)器操作系統(tǒng)版本CPU架構(gòu)進(jìn)程功能描述
k8scloude1/192.168.110.130CentOS Linux release 7.4.1708 (Core)x86_64docker,kube-apiserver,etcd,kube-scheduler,kube-controller-manager,kubelet,kube-proxy,coredns,calicok8s master節(jié)點(diǎn)
k8scloude2/192.168.110.129CentOS Linux release 7.4.1708 (Core)x86_64docker,kubelet,kube-proxy,calicok8s worker節(jié)點(diǎn)
k8scloude3/192.168.110.128CentOS Linux release 7.4.1708 (Core)x86_64docker,kubelet,kube-proxy,calicok8s worker節(jié)點(diǎn)

二.前言

本文介紹pod hook(pod鉤子)和如何優(yōu)雅的關(guān)閉nginx pod。

管理pod的前提是已經(jīng)有一套可以正常運(yùn)行的Kubernetes集群,關(guān)于Kubernetes(k8s)集群的安裝部署,可以查看博客《Centos7 安裝部署Kubernetes(k8s)集群》http://m.fzitv.net/article/266741.htm

三.pod hook(pod鉤子)

為容器的生命周期事件設(shè)置處理函數(shù),Kubernetes 支持 postStart 和 preStop 事件。 當(dāng)一個容器啟動后,Kubernetes 將立即發(fā)送 postStart 事件;在容器被終結(jié)之前, Kubernetes 將發(fā)送一個 preStop 事件。容器可以為每個事件指定一個處理程序。

pod hook:目前pod3容器里運(yùn)行的是nginx進(jìn)程,在啟動容器的時候,除了主進(jìn)程,還想啟動一個進(jìn)程,怎么辦?這時候就需要使用pod hook(pod 鉤子),pod hook有兩個選項(xiàng):

  • postStart:容器啟動之后執(zhí)行XXXX,和主進(jìn)程是同時運(yùn)行起來的,并沒有先后順序;
  • preStop:在容器關(guān)閉之前執(zhí)行XXXX

postStart例子:容器啟動之后執(zhí)行"/bin/sh","-c","date >> /tmp/bb.txt",打印日期到/tmp/bb.txt文件

[root@k8scloude1 pod]# vim pod3.yaml 
[root@k8scloude1 pod]# cat pod3.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod3
  name: pod3
spec:
  terminationGracePeriodSeconds: 0
  containers:
  - image: nginx
    command: ["sh","-c","date > /tmp/aa.txt ; sleep 10000"]
    imagePullPolicy: IfNotPresent
    name: n1
    resources: {}
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh","-c","date >> /tmp/bb.txt"]
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
[root@k8scloude1 pod]# kubectl apply -f pod3.yaml 
pod/pod3 created
[root@k8scloude1 pod]# kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
pod3    1/1     Running   0          8s

查看文件可以發(fā)現(xiàn),/tmp/aa.txt /tmp/bb.txt 時間是一致的,就說明兩個命令是同時運(yùn)行的,證明了postStart:容器啟動之后執(zhí)行XXXX,和主進(jìn)程是同時運(yùn)行起來的,并沒有先后順序。

[root@k8scloude1 pod]# kubectl exec -it pod3 -- bash
root@pod3:/# cat /tmp/aa.txt /tmp/bb.txt 
Thu Jan 13 07:40:24 UTC 2022
Thu Jan 13 07:40:24 UTC 2022
root@pod3:/# exit
exit
#刪除pod
[root@k8scloude1 pod]# kubectl delete -f pod3.yaml 
pod "pod3" deleted

現(xiàn)在添加preStop處理函數(shù):在容器關(guān)閉之前執(zhí)行"/bin/sh","-c","date >> /tmp/bb.txt ; sleep 100",打印日期到/tmp/bb.txt文件,并休眠100秒。

[root@k8scloude1 pod]# vim pod4.yaml 
[root@k8scloude1 pod]# cat pod4.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod3
  name: pod3
spec:
  terminationGracePeriodSeconds: 600
  containers:
  - image: nginx
    command: ["sh","-c","date > /tmp/aa.txt ; sleep 10000"]
    imagePullPolicy: IfNotPresent
    name: n1
    resources: {}
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh","-c","date >> /tmp/bb.txt"]
      preStop:
        exec:
          command: ["/bin/sh","-c","date >> /tmp/bb.txt ; sleep 100"]
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
[root@k8scloude1 pod]# kubectl apply -f pod4.yaml 
pod/pod3 created
[root@k8scloude1 pod]# kubectl get pod
NAME    READY   STATUS    RESTARTS   AGE
pod3    1/1     Running   0          7s

運(yùn)行一段時間后,刪除pod,在容器關(guān)閉之前執(zhí)行preStop的命令,preStop執(zhí)行完成之后,主程序還要運(yùn)行10000秒,但是寬限期terminationGracePeriodSeconds只有600s,所以600秒之后pod被刪除

[root@k8scloude1 pod]# kubectl delete pod pod3 
pod "pod3" deleted
^C
#強(qiáng)制刪除pod
[root@k8scloude1 pod]# kubectl delete pod pod3 --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod3" force deleted

四.如何優(yōu)雅的關(guān)閉nginx pod

說明: 當(dāng)一個 Pod 被刪除時,執(zhí)行kubectl get pod 命令會展示這個 Pod 的狀態(tài)為 Terminating(終止)。 這個 Terminating 狀態(tài)并不是 Pod 階段之一。 Pod 被賦予一個可以體面終止的期限,默認(rèn)為 30 秒。 你可以使用 --force 參數(shù)來強(qiáng)制終止 Pod。

由于nginx默認(rèn)是fast shutdown,關(guān)閉的時間一般小于30秒,如果想優(yōu)雅的關(guān)閉nginx,可以在關(guān)閉容器之前運(yùn)行nginx -s quit ,達(dá)到優(yōu)雅的關(guān)閉nginx的效果

[root@k8scloude1 pod]# vim pod5.yaml 
#preStop處理函數(shù)指定在容器關(guān)閉之前執(zhí)行"/bin/sh","-c","/usr/sbin/nginx -s quit"
[root@k8scloude1 pod]# cat pod5.yaml 
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: pod5
  name: pod5
spec:
  terminationGracePeriodSeconds: 600
  containers:
  - image: nginx
    command: ["sh","-c","date > /tmp/aa.txt ; sleep 10000"]
    imagePullPolicy: IfNotPresent
    name: n1
    resources: {}
    lifecycle:
      postStart:
        exec:
          command: ["/bin/sh","-c","date >> /tmp/bb.txt"]
      preStop:
        exec:
          command: ["/bin/sh","-c","/usr/sbin/nginx -s quit"]
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}
[root@k8scloude1 pod]# kubectl apply -f pod5.yaml 
pod/pod5 created
[root@k8scloude1 pod]# kubectl get pod
NAME   READY   STATUS    RESTARTS   AGE
pod5   1/1     Running   0          5s
[root@k8scloude1 pod]# kubectl delete pod pod5 
pod "pod5" deleted
^C
[root@k8scloude1 pod]# kubectl delete pod pod5 --force
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "pod5" force deleted

以上就是nginx pod hook鉤子優(yōu)雅關(guān)閉示例詳解的詳細(xì)內(nèi)容,更多關(guān)于nginx pod hook鉤子關(guān)閉的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • nginx隱藏server及版本號的實(shí)現(xiàn)

    nginx隱藏server及版本號的實(shí)現(xiàn)

    為了提高nginx服務(wù)器的安全性,降低被攻擊的風(fēng)險,需要隱藏nginx的server和版本號,本文就來介紹一下nginx如何隱藏server及版本號,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • 詳解Nginx反向代理到Tomcat服務(wù)器

    詳解Nginx反向代理到Tomcat服務(wù)器

    本篇文章主要介紹了詳解Nginx反向代理到Tomcat服務(wù)器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • filebeat收集json格式的tomcat日志詳解

    filebeat收集json格式的tomcat日志詳解

    這篇文章主要為大家介紹了filebeat收集json格式的tomcat日志詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • nginx禁用特定ip的方法詳解

    nginx禁用特定ip的方法詳解

    Nginx是一款輕量級的Web服務(wù)器、反向代理服務(wù)器及電子郵件代理服務(wù)器,其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁服務(wù)器中表現(xiàn)較好,本文主要介紹利用nginx來禁用特定ip的方法,需要的朋友可以參考下
    2023-09-09
  • nginx 平滑重啟與升級的實(shí)現(xiàn)方法

    nginx 平滑重啟與升級的實(shí)現(xiàn)方法

    有時候我們需要平滑重啟nginx服務(wù),防止出現(xiàn)問題,這里簡單的總結(jié),方便需要的朋友
    2013-02-02
  • Linux下Tomcat+Nginx服務(wù)器環(huán)境安裝配置的簡明教程

    Linux下Tomcat+Nginx服務(wù)器環(huán)境安裝配置的簡明教程

    以Nginx作為反向代理再用Tomcat驅(qū)動Java Web程序是當(dāng)今很流行的一種方案,那么這里我們就著眼于最基本的生產(chǎn)環(huán)境搭建,一起來看一下Linux下Tomcat+Nginx服務(wù)器環(huán)境安裝配置的簡明教程
    2016-05-05
  • nginx代理轉(zhuǎn)發(fā)報錯405?Method?Not?Allowed解決

    nginx代理轉(zhuǎn)發(fā)報錯405?Method?Not?Allowed解決

    這篇文章主要為大家介紹了解決nginx代理轉(zhuǎn)發(fā)報錯405?Method?Not?Allowed解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn)

    Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn)

    本文主要介紹了Nginx反向代理轉(zhuǎn)發(fā)tomcat的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • nacos集群搭建Nginx負(fù)載均衡的操作詳解

    nacos集群搭建Nginx負(fù)載均衡的操作詳解

    這篇文章主要介紹了nacos集群搭建Nginx負(fù)載均衡的詳細(xì)操作,文中通過代碼示例和圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • Nginx + consul + upsync 完成動態(tài)負(fù)載均衡的方法詳解

    Nginx + consul + upsync 完成動態(tài)負(fù)載均衡的方法詳解

    這篇文章主要介紹了Nginx + consul + upsync 完成動態(tài)負(fù)載均衡,需要的朋友可以參考下
    2020-11-11

最新評論

鄄城县| 九台市| 沙河市| 松溪县| 江津市| 博爱县| 五大连池市| 额尔古纳市| 南昌市| 绩溪县| 蚌埠市| 横峰县| 贵德县| 平利县| 西吉县| 洪江市| 三明市| 海伦市| 项城市| 栾川县| 新源县| 龙游县| 肃南| 类乌齐县| 威宁| 中山市| 光泽县| 和平县| 博爱县| 嘉峪关市| 星子县| 阳山县| 汉寿县| 沧源| 大庆市| 略阳县| 三门县| 龙海市| 扎赉特旗| 琼结县| 恭城|