码迷,mamicode.com
首页 > 其他好文 > 详细

Pod进阶

时间:2018-10-30 00:21:28      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:soc   sha   unknown   创建   meta   des   默认   create   exe   

一、Pod生命周期

  • init container:初始化容器,可以有多个
  • main container:主容器
  • post start:在初始化容器执行完后,主容器启动前的操作
  • pre stop:结束前的清理操作
  • liveness probe:在主容器运行是进行存活性检测
  • rediness probe:就绪状态检测

1、Pod的生命周期状态

  • Pending:挂起,没有合适的节点运行
  • Running:运行态
  • Failed:失败态
  • Succeeded:成功态
  • Unknown:未知态

2、创建Pod时

pod生命周期中的重要行为

  • 初始化容器
  • 容器探测
    • liveness:探测pod中容器是否正常
      • restartPolicy:Always(只要容器挂了就重启), OnFailure(只要容器发生错误时重启), Never(从来不会重启),默认为Always
    • readiness:探测是否可以正常提供服务

探针类型

  • ExecAction
  • TCPSocketAction
  • HTTPGetAction

二、存活性探测

# vim liveness-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/healthy; sleep 30; rm -f /tmp/healthy; sleep 3600"]
    livenessProbe:
      exec:
        command: ["test","-e","/tmp/healthy"]
      initialDelaySeconds: 1
      periodSeconds: 3
# kubectl create -f liveness-exec.yaml

三、http的存活性探测

apiVersion: v1
kind: Pod
metadata:
  name: livenessi-httpget-pod
  namespace: default
spec:
  containers:
  - name: liveness-httpget-container
    image: dongfeimg/myapp:v1
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    livenessProbe:
      httpGet:
        port: http
        path: /index.html
      initialDelaySeconds: 1
      periodSeconds: 3
# kubectl describe pod livenessi-httpget-pod
# kubectl exec -it livenessi-httpget-pod -- /bin/sh

四、就绪性探测

# kubectl create -f readness-httpget-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: readness-httpget-pod
  namespace: default
spec:
  containers:
  - name: readness-httpget-container
    image: dongfeimg/myapp:v1
    imagePullPolicy: IfNotPresent
    ports:
    - name: http
      containerPort: 80
    readinessProbe:
      httpGet:
        port: http
        path: /index.html
      initialDelaySeconds: 1
      periodSeconds: 3
# kubectl exec -it readness-httpget-pod -- /bin/sh
/ # rm -f /usr/share/nginx/html/index.html

五、启动后钩子

# vim poststart-pod.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","mkdir -p /data/web/html"]
    command: ["/bin/sh","-c","sleep 3600"]
# kubectl create -f poststart-pod.yaml

command中的命令不能强依赖与postStart中的command所执行的结果

未完待续。。。

Pod进阶

标签:soc   sha   unknown   创建   meta   des   默认   create   exe   

原文地址:https://www.cnblogs.com/L-dongf/p/9874087.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!