zoukankan      html  css  js  c++  java
  • pod 生命周期

    1、init 容器

    init 模板

    apiVersion: v1
    kind: Pod
    metadata:
      name: initctest
    spec:
      containers:
      - name: busybox
        image: hub.wufujie.com/library/busybox:v1
        command: ['sh','-c','echo The app is running! && sleep 3600']
      initContainers:
      - name: init-myservice
        image: hub.wufujie.com/library/busybox:v1
        command: ['sh','-c','until nslookup myservice;do echo waiting for myservice;sleep 2;done;']
      - name: init-mydb
        image: hub.wufujie.com/library/busybox:v1
        command: ['sh','-c','until nslookup mydb;do echo waiting for mydb;sleep 2;done;']

    service

    apiVersion: v1
    kind: Service
    metadata:
      name: myservice
    spec:
      ports:
      - protocol: TCP
        port: 80
        targetPort: 9375
    apiVersion: v1
    kind: Service
    metadata:
      name: mydb
    spec:
      ports:
        - protocol: TCP
          port: 80
          targetPort: 9377

    2、检测探针——就绪检测

    readiness-httpget-pod.yml

    apiVersion: v1
    kind: Pod
    metadata:
      name: readiness-httpget-pod
      namespace: default
    spec:
      containers:
      - name: readiness-httpget-container
        image: hub.wufujie.com/library/httpd:v1
        imagePullPolicy: IfNotPresent
        readinessProbe:
          httpGet:
            port: 80
            path: /index1.html
          initialDelaySeconds: 1
          periodSeconds: 3

    此刻创建 pod

    kubectl create -f readiness-httpget-pod.yml

     因为容器的路径下没有 index1.html 这个文件,所有 pod 一直处在 ready 状态

    我们进入容器,在网页根目录下创建一个 index1.html 的文件

    [root@master ~]# kubectl exec -it readiness-httpget-pod -- /bin/bash
    root@readiness-httpget-pod:/usr/local/apache2# cd htdocs/
    root@readiness-httpget-pod:/usr/local/apache2/htdocs# echo "hello world!" > index1.html
    root@readiness-httpget-pod:/usr/local/apache2/htdocs# exit
    exit

    此刻查看 pod 状态,发现 pod 已经 ready

     3、探针检测——存活检测

    livenessProbe-exec.yml

    apiVersion: v1
    kind: Pod
    metadata:
      name: liveness-exec-pod
      namespace: default
    spec:
      containers:
      - name: liveness-exec-container
        image: hub.wufujie.com/library/busybox:v1
        imagePullPolicy: IfNotPresent
        command: ["/bin/sh","-c","touch /tmp/live;sleep 60;rm -rf /tmp/live;sleep 3600"]
        livenessProbe:
          exec:
            command: ["test","-e","/tmp/live"]
          initialDelaySeconds: 1
          periodSeconds: 3

     command 命令的意思是:1、创建 /tmp/live 文件;2、休眠 60 秒;3、删除文件 /tmp/live;4、休眠 3600 秒

    下一个 command 检测 /tmp/live 这个文件是否存在

    initailDelaySeconds: 1的意思是容器初始化 1 秒后,才开始检测 /tmp/live 文件

    periodSeconds: 3的意思是,检测的循环周期是 3 秒

    从下图可以看到,如果检测不到文件,pod 会重启

     livenessProbe-httpget.yml

    通过 http 能够访问网页,来检测是否存活

    apiVersion: v1
    kind: Pod
    metadata:
      name: liveness-httpget-pod
      namespace: default
    spec:
      containers:
      - name: liveness-httpget-container
        image: hub.wufujie.com/library/httpd:v1
        imagePullPolicy: IfNotPresent
        ports:
        - name: http
          containerPort: 80
        livenessProbe:
          httpGet:
            port: http
            path: /index.html
          initialDelaySeconds: 1
          periodSeconds: 3
          timeoutSeconds: 10

    查看状态,已经在 running 了

     我们进去容器,把 index.html 改成 index1.html,再看看

    已经看到已经重启一次了

     livenessProbe-tcp.yml

    检查 tcp 连接,80端口是否再通信

    apiVersion: v1
    kind: Pod
    metadata:
      name: probe-tcp
    spec:
      containers:
      - name: nginx
        image: hub.wufujie.com/library/httpd:v1
        livenessProbe:
          initialDelaySeconds: 5
          timeoutSeconds: 1
          tcpSocket:
            port: 80

    4、启动退出动作

    在容器启动的时候执行命令

    在容器停止前执行命令

    apiVersion: v1
    kind: Pod
    metadata:  
      name: lifecycle-demo
    spec:  
      containers:  
      - name: lifecycle-demo-container    
        image: nginx    
        lifecycle:      
          postStart:        
            exec:          
              command: ["/bin/sh", "-c", "echo Hello from the postStart handler >/usr/share/message"]      
          preStop:        
            exec:
              command: ["/bin/sh", "-c", "echo Hello from the poststop handler >/usr/share/message"]
  • 相关阅读:
    学用 TStringGrid [8] 字体列表
    学用 TStringGrid [6] Options
    学用 TStringGrid [5] FixedCols、FixedRows、Color、FixedColor
    学用 TStringGrid [4] ColWidths、RowHeights
    Delphi 的字符及字符串[6] Char(AnsiChar)、WideChar 与其编码的相互转换
    学用 TStringGrid [2] DefaultColWidth、DefaultRowHeight、Col、Row
    学用 TStringGrid [3] Cols、Rows
    动画演示 Delphi 2007 IDE 功能[5] 虚拟屏幕
    js string format
    jquery select(列表)的操作(取值/赋值)
  • 原文地址:https://www.cnblogs.com/wufj/p/13138659.html
Copyright © 2011-2022 走看看