• k8s 的pod进阶


    容器探测的具体实现方法;三种探针类型

    ExecAction、TCPSocketAction、HTTPGetAction

       lifecycle	<Object>
         Actions that the management system should take in response to container
         lifecycle events. Cannot be updated.
    
       livenessProbe	<Object>
         Periodic probe of container liveness. Container will be restarted if the
         probe fails. Cannot be updated. More info:
         https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
       readinessProbe	<Object>
         Periodic probe of container service readiness. Container will be removed
         from service endpoints if the probe fails. Cannot be updated. More info:
         https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
    

      livenessProbe 介绍

    [root@master manifests]# kubectl explain pods.spec.containers.livenessProbe
    KIND:     Pod
    VERSION:  v1
    
    RESOURCE: livenessProbe <Object>
    
    DESCRIPTION:
         Periodic probe of container liveness. Container will be restarted if the
         probe fails. Cannot be updated. More info:
         https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
    
         Probe describes a health check to be performed against a container to
         determine whether it is alive or ready to receive traffic.
    
    FIELDS:
       exec	<Object>   探针
         One and only one of the following should be specified. Exec specifies the
         action to take.
    
       failureThreshold	<integer>  失败次数
         Minimum consecutive failures for the probe to be considered failed after
         having succeeded. Defaults to 3. Minimum value is 1.
    
       httpGet	<Object>  http探针
         HTTPGet specifies the http request to perform.
    
       initialDelaySeconds	<integer>  启动后等待多长时间,开始探测
         Number of seconds after the container has started before liveness probes
         are initiated. More info:
         https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
    
       periodSeconds	<integer>  每一次间隔时间;默认10秒
         How often (in seconds) to perform the probe. Default to 10 seconds. Minimum
         value is 1.
    
       successThreshold	<integer>  成功次数
         Minimum consecutive successes for the probe to be considered successful
         after having failed. Defaults to 1. Must be 1 for liveness. Minimum value
         is 1.
    
       tcpSocket	<Object>   tcp探针
         TCPSocket specifies an action involving a TCP port. TCP hooks not yet
         supported
    
       timeoutSeconds	<integer>  每一超时时间;默认1秒
         Number of seconds after which the probe times out. Defaults to 1 second.
         Minimum value is 1. More info:
         https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
    

      exec探测方法介绍

    [root@master manifests]# kubectl explain pods.spec.containers.livenessProbe.exec 
    KIND:     Pod
    VERSION:  v1
    
    RESOURCE: exec <Object>
    
    DESCRIPTION:
         One and only one of the following should be specified. Exec specifies the
         action to take.
    
         ExecAction describes a "run in container" action.
    
    FIELDS:
       command	<[]string>  #指定运行的命令,容器里必须支持
         Command is the command line to execute inside the container, the working
         directory for the command is root ('/') in the container's filesystem. The
         command is simply exec'd, it is not run inside a shell, so traditional
         shell instructions ('|', etc) won't work. To use a shell, you need to
         explicitly call out to that shell. Exit status of 0 is treated as
         live/healthy and non-zero is unhealthy.
    

      编写测试

    [root@master manifests]# cat chenxi-exec.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
            name: liveness-exec-pod
            namespace: default
    spec:
            containers:
            - name: liveness-exec-container
              image: busybox:latest
              imagePullPolicy: IfNotPresent
              command: ["/bin/sh","-c","touch /tmp/chenxi; sleep 60; rm -rf /tmp/chenxi; sleep 3600"]
              livenessProbe:
                 exec:
                    command: ["test","-e","/tmp/chenxi"]
                 initialDelaySeconds: 2
            restartPolicy: OnFailure
    

      启动这个pod

    [root@master manifests]# kubectl create -f chenxi-exec.yaml 
    pod/liveness-exec-pod created
    

      测试

    [root@master manifests]# kubectl get pods
    NAME                     READY   STATUS    RESTARTS   AGE
    liveness-exec-pod        1/1     Running   0          2m
    myapp-84cd4b7f95-g6ldp   1/1     Running   3          10d
    nginx-5896f46c8-zblcs    1/1     Running   3          10d
    pod-demo                 2/2     Running   0          162m
    [root@master manifests]# kubectl get pods
    NAME                     READY   STATUS    RESTARTS   AGE
    liveness-exec-pod        1/1     Running   1          2m1s
    myapp-84cd4b7f95-g6ldp   1/1     Running   3          10d
    nginx-5896f46c8-zblcs    1/1     Running   3          10d
    pod-demo                 2/2     Running   0          162m
    [root@master manifests]# kubectl get pods
    NAME                     READY   STATUS    RESTARTS   AGE
    liveness-exec-pod        1/1     Running   1          2m2s
    myapp-84cd4b7f95-g6ldp   1/1     Running   3          10d
    nginx-5896f46c8-zblcs    1/1     Running   3          10d
    pod-demo                 2/2     Running   0          162m
    

      容器创建后,终止前操作

    [root@master manifests]# kubectl explain pods.spec.containers.lifecycle
    KIND:     Pod
    VERSION:  v1
    
    RESOURCE: lifecycle <Object>
    
    DESCRIPTION:
         Actions that the management system should take in response to container
         lifecycle events. Cannot be updated.
    
         Lifecycle describes actions that the management system should take in
         response to container lifecycle events. For the PostStart and PreStop
         lifecycle handlers, management of the container blocks until the action is
         complete, unless the container process fails, in which case the handler is
         aborted.
    
    FIELDS:
       postStart	<Object>
         PostStart is called immediately after a container is created. If the
         handler fails, the container is terminated and restarted according to its
         restart policy. Other management of the container blocks until the hook
         completes. More info:
         https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
    
       preStop	<Object>
         PreStop is called immediately before a container is terminated due to an
         API request or management event such as liveness probe failure, preemption,
         resource contention, etc. The handler is not called if the container
         crashes or exits. The reason for termination is passed to the handler. The
         Pod's termination grace period countdown begins before the PreStop hooked
         is executed. Regardless of the outcome of the handler, the container will
         eventually terminate within the Pod's termination grace period. Other
         management of the container blocks until the hook completes or until the
         termination grace period is reached. More info:
         https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
    

      创建后操作

    [root@master manifests]# kubectl explain pods.spec.containers.lifecycle.postStart
    KIND:     Pod
    VERSION:  v1
    
    RESOURCE: postStart <Object>
    
    DESCRIPTION:
         PostStart is called immediately after a container is created. If the
         handler fails, the container is terminated and restarted according to its
         restart policy. Other management of the container blocks until the hook
         completes. More info:
         https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
    
         Handler defines a specific action that should be taken
    
    FIELDS:
       exec	<Object>
         One and only one of the following should be specified. Exec specifies the
         action to take.
    
       httpGet	<Object>
         HTTPGet specifies the http request to perform.
    
       tcpSocket	<Object>
         TCPSocket specifies an action involving a TCP port. TCP hooks not yet
         supported
    

      停止前操作

    [root@master manifests]# kubectl explain pods.spec.containers.lifecycle.preStop
    KIND:     Pod
    VERSION:  v1
    
    RESOURCE: preStop <Object>
    
    DESCRIPTION:
         PreStop is called immediately before a container is terminated due to an
         API request or management event such as liveness probe failure, preemption,
         resource contention, etc. The handler is not called if the container
         crashes or exits. The reason for termination is passed to the handler. The
         Pod's termination grace period countdown begins before the PreStop hooked
         is executed. Regardless of the outcome of the handler, the container will
         eventually terminate within the Pod's termination grace period. Other
         management of the container blocks until the hook completes or until the
         termination grace period is reached. More info:
         https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
    
         Handler defines a specific action that should be taken
    
    FIELDS:
       exec	<Object>
         One and only one of the following should be specified. Exec specifies the
         action to take.
    
       httpGet	<Object>
         HTTPGet specifies the http request to perform.
    
       tcpSocket	<Object>
         TCPSocket specifies an action involving a TCP port. TCP hooks not yet
         supported
    

      编写podyaml文件

    [root@master manifests]# cat pot.yaml 
    apiVersion: v1
    kind: Pod
    metadata:
            name: poststart-pod
            namespace: default
    spec:
            containers:
            - name: busybox-httpd
              image: busybox:latest
              imagePullPolicy: IfNotPresent
              lifecycle:
                postStart:
                  exec:
                    command: ['/bin/sh','-c','echo Home_Page >> /tmp/index.html']
              #command: ['/bin/sh','-c','sleep 3600']
              command: ["/bin/httpd"]
              args: ["-f","-h /tmp"]
    

      

      

    草都可以从石头缝隙中长出来更可况你呢
  • 相关阅读:
    解决:error: Cannot find libmysqlclient_r under /usr/local/mysql.
    LDFLAGS 与 LDLIBS
    一些有用的github收藏(持续更新中...)
    ros 学习 array 的添加
    visual studio code利用自身携带debug调试
    declaration of 'int ret' shadows a parameter
    invalid application of ‘sizeof’ to incomplete type
    qml demo分析(samegame-拼图游戏)
    qml demo分析(rssnews-常见新闻布局)
    qml demo分析(photosurface-图片涅拉)
  • 原文地址:https://www.cnblogs.com/rdchenxi/p/11310318.html
Copyright © 2020-2023  润新知