av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:65日期:2023-03-13 15:37:57
目錄
  • 一.系統(tǒng)環(huán)境
  • 二.前言
  • 三.pod hook(pod鉤子)
  • 四.如何優(yōu)雅的關(guān)閉nginx pod

一.系統(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é)點,k8scloude2,k8scloude3作為worker節(jié)點

服務(wù)器操作系統(tǒng)版本CPU架構(gòu)進程功能描述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é)點k8scloude2/192.168.110.129CentOS Linux release 7.4.1708 (Core)x86_64docker,kubelet,kube-proxy,calicok8s worker節(jié)點k8scloude3/192.168.110.128CentOS Linux release 7.4.1708 (Core)x86_64docker,kubelet,kube-proxy,calicok8s worker節(jié)點

二.前言

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

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

三.pod hook(pod鉤子)

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

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

  • postStart:容器啟動之后執(zhí)行XXXX,和主進程是同時運行起來的,并沒有先后順序;
  • 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 時間是一致的,就說明兩個命令是同時運行的,證明了postStart:容器啟動之后執(zhí)行XXXX,和主進程是同時運行起來的,并沒有先后順序。

[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

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

[root@k8scloude1 pod]# kubectl delete pod pod3 
pod "pod3" deleted
^C
#強制刪除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ù)來強制終止 Pod。

由于nginx默認(rèn)是fast shutdown,關(guān)閉的時間一般小于30秒,如果想優(yōu)雅的關(guān)閉nginx,可以在關(guā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)文章!

標(biāo)簽: Nginx
主站蜘蛛池模板: 国产在线成人 | 欧美不卡视频 | 日韩欧美中文字幕在线观看 | 日韩免费在线观看 | 在线观看视频国产 | 97av在线| 国产一区中文字幕 | 男人添女人囗交图 | 久久99精品久久久久久 | 日韩小视频 | 成人网在线观看 | 红桃av在线 | 亚洲视频在线免费观看 | 亚洲色在线视频 | 国产a毛片| 久草成人 | 免费的一级片 | 久久中文字幕视频 | 亚洲一区二区三区在线播放 | 欧美午夜精品久久久久免费视 | 亚洲性网站| 亚洲精品在线观看视频 | 美女国产精品 | 亚洲专区一区 | 国产成人一区二区三区 | 亚洲欧美日韩成人 | 一级黄色免费 | 两性午夜视频 | 国产精品久久久久永久免费看 | 国产成年妇视频 | 欧美成人激情视频 | 成人午夜在线观看 | 亚洲精品成人在线 | 国产免费高清视频 | 国产区免费 | 高清免费视频日本 | 国内精品久久久久久久久 | 亚洲国产精 | 欧美日韩在线一区 | 国产欧美一区二区精品性色超碰 | 激情av网 |