zoukankan      html  css  js  c++  java
  • K8S学习笔记之八-command和探针

    一、普通command命令

    1、创建yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: busybox
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ['sh', '-c', 'echo The app is running! > /tmp/test&& sleep 3600']
    

    2、验证

    二、postStart

    简介:1、应用容器启动之后如果要做点配置之类的 ,可以使用postStart。

    2、postStart 处理函数的调用不保证早于容器的入口点(entrypoint)的执行,postStart和entrypoint异步执行

    3、Kubernetes 的容器管理逻辑会一直阻塞等待 postStart 处理函数执行完毕。只有 postStart 处理函数执行完毕,

    容器的状态才会变成 RUNNING

    1、举例

    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"]
    

    2、验证结果

     三、preStop

    概念:1、Kubernetes 在容器结束前立即发送 preStop 事件

    2、Kubernetes 的容器管理逻辑 会一直阻塞等待 preStop 处理函数执行完毕

    1、举例

    apiVersion: v1
    kind: Pod
    metadata:
      name: hook-demo2
      labels:
        app: hook
    spec:
      containers:
      - name: hook-demo2
        image: nginx
        ports:
        - name: webport
          containerPort: 80
        volumeMounts:
        - name: message
          mountPath: /usr/share/
        lifecycle:
          preStop:
            exec:
              command: ['/bin/sh','-c','echo Hello from the preStop Handler > /usr/share/wuchang']
      volumes:
      - name: message
        hostPath:
          path: /tmp
    

    2、创建之后查看本地/tmp目录下文件

    [root@k8s-master pod]# kubectl apply -f pod1.yaml
    pod "hook-demo2" created
    [root@k8s-master pod]# kubectl get pods
    NAME         READY     STATUS    RESTARTS   AGE
    hook-demo2   1/1       Running   0          1m
    

     3、执行删除pod操作,再查看/tmp目录下,文件存在

    [root@k8s-master pod]# kubectl delete pods --all
    pod "hook-demo2" deleted
    

    四、探针

    liveness探针:影响的是单个容器,

    readiness探针:影响的是整个pod,即如果pod中有多个容器,只要有一个容器的readiness探针诊断失败,那么整个pod都会处于unready状态

    ExecAction:在容器内执行指定命令,如果命令退出时返回码为0,则认为诊断成功
    TCPSocketAction:kubelet尝试打开容器上的某个端口,如果连接成功建立则诊断通过,否则失败
    HTTPGetAction:每进行一次HTTP健康检查都会curl访问一次指定的URL,如果返回的HTTP状态码在200和399之间,则认为容器运转正常,否则认为容器运转不正常

    且小于400,则诊断被认为是成功的

    Ⅰ、就绪探针(readinessProbe)

    简介:指示容器是否准备好服务请求。如果就绪探测失败,断点控制器将从与pod匹配的所有service的端点中删除该

    pod的ip地址。初始延迟之前的就绪状态为Failure。如果容器不提供就绪探测,则默认为Success

    1、创建readinessProbe-httpget

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx-pod
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx-container
        image: nginx
        readinessProbe:
           httpGet:
             port: 80              //通过http访问,访问的是/usr/share/nginx/html下的页面
             path: /index1.html   //检测根目录下是否有该文件
           initialDelaySeconds: 1
           periodSeconds: 3

    2、查看pods的状态为running,但是ready为0/1,证明没有就绪

     3、进入pod内创建文件

    [root@k8s-master probe]# kubectl exec -it nginx-pod -- /bin/sh
    # cd /usr/share/nginx/html
    # echo "123" > index1.html
    

    4、检测pod状态,已经就绪

    Ⅱ、存活探针(livenessProbe)

    简介:指示容器是否正在运行,如果存活探测失败,则kubelet会杀死容器,并且容器将收到其重启策略的影响。

    如果容器不提供存活探针,则默认为success

    1、livenessProbe-exec

    apiVersion: v1
    kind: Pod
    metadata:
      name: liveness-exec-pod
      labels:
        app: busybox
    spec:
      containers:
      - name: liveness-exec-container
        image: busybox
        imagePullPolicy: IfNotPresent
        command: ["/bin/sh","-c","touch /tmp/live ; sleep 60; rm -rf /tmp/live; se=leep 3600"]
        livenessProbe:
           exec:
             command: ["test","-e","/tmp/live"]
           initialDelaySeconds: 1
           periodSeconds: 3
    
  • 相关阅读:
    [转载] 论C#与Java之异同
    MultiThread WebRequest : Timeout
    FCL(2) :: CollectionBase & Collection
    msn 81000306 无法登录,解决方法
    接口一个被我忽略的地方接口重定向技术
    <<Clr Via C#>> Key Points (1) (46章)
    FCL(3):: ArrayList & List (1)
    TCP保活机制
    子网划分
    freopen函数
  • 原文地址:https://www.cnblogs.com/wuchangblog/p/13409485.html
Copyright © 2011-2022 走看看