1.容器的重启策略

   always:默认的重启策略,当容器停止,会创建新的容器   onFailure:容器异常退出,重启容器   Never:当容器终止退出,从不重启容器

2.健康策略

  livenessProbe:如果检查失败,根据pod的restartPolicy来操作  readinessProbe:如果检查失败,kubernetes会把pod从service endpoint中删除

3. 健康检查的三种方式

   httpGet: 发送http请求,返回状态200-400状态码为成功   exec:执行shell命令返回为0 表示成功   tcpSocket:发送TCP socket建立成功

4.测试

apiVersion: v1kind: Podmetadata:  name: nginx-pod  labels:    app: nginxspec:  containers:  - name: nginx    image: nginx    ports:    - containerPort: 80    livenessProbe:      httpGet:        path: /index.html        port: 80

5.观察

kubectl  create  -f  nginx.yaml[root@k8s-master ~]# kubectl    logs  nginx-pod    -f 172.17.52.1 - - [13/Oct/2018:09:55:57 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"172.17.52.1 - - [13/Oct/2018:09:56:07 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"172.17.52.1 - - [13/Oct/2018:09:56:17 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"172.17.52.1 - - [13/Oct/2018:09:56:27 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"172.17.52.1 - - [13/Oct/2018:09:56:37 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"172.17.52.1 - - [13/Oct/2018:09:56:47 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"172.17.52.1 - - [13/Oct/2018:09:56:57 +0000] "GET /index.html HTTP/1.1" 200 612 "-" "kube-probe/1.9" "-"[root@k8s-master ~]# kubectl  describe pod  nginx-pod Name:         nginx-podNamespace:    defaultNode:         192.168.56.12/192.168.56.12Start Time:   Sat, 13 Oct 2018 17:55:44 +0800Labels:       app=nginxAnnotations:  
Status:       RunningIP:           172.17.52.2Containers:  nginx:    Container ID:   docker://c03454a77f363b4b3f7dc31091dd92bd234200cb1eb341f262b1573f874a0315    Image:          nginx    Image ID:       docker-pullable://nginx@sha256:9ad0746d8f2ea6df3a17ba89eca40b48c47066dfab55a75e08e2b70fc80d929e    Port:           80/TCP    State:          Running      Started:      Sat, 13 Oct 2018 17:55:51 +0800    Ready:          True    Restart Count:  0    Liveness:       http-get http://:80/index.html delay=0s timeout=1s period=10s #success=1 #failure=3   ##############策略    Environment:    
    Mounts:      /var/run/secrets/kubernetes.io/serviceaccount from default-token-jjkz6 (ro)Conditions:  Type           Status  Initialized    True   Ready          True   PodScheduled   True Volumes:  default-token-jjkz6:    Type:        Secret (a volume populated by a Secret)    SecretName:  default-token-jjkz6    Optional:    falseQoS Class:       BestEffortNode-Selectors:  
Tolerations:     
Events:  Type    Reason                 Age   From                    Message  ----    ------                 ----  ----                    -------  Normal  Scheduled              2m    default-scheduler       Successfully assigned nginx-pod to 192.168.56.12  Normal  SuccessfulMountVolume  2m    kubelet, 192.168.56.12  MountVolume.SetUp succeeded for volume "default-token-jjkz6"  Normal  Pulling                2m    kubelet, 192.168.56.12  pulling image "nginx"  Normal  Pulled                 2m    kubelet, 192.168.56.12  Successfully pulled image "nginx"  Normal  Created                2m    kubelet, 192.168.56.12  Created container  Normal  Started                2m    kubelet, 192.168.56.12  Started container[root@k8s-master ~]# 上面可以看出健康检查的策略 以及频率

6.如果把nginx的默认的index.html删除会出现什么情况呢

1.png

2.png

3.png

删除了容器的index.html以后 容器健康检查 失败 然后根据默认的容器重启策略 新建立容器,restartPolicy可以自定义,新建的容器也是用最初的yaml建立的 而且是一个名字。如下是新建立的容器 index.html还是存在的

root@nginx-pod:/usr/share/nginx/html# llbash: ll: command not foundroot@nginx-pod:/usr/share/nginx/html# ls -ltotal 8-rw-r--r-- 1 root root 494 Oct  2 14:49 50x.html-rw-r--r-- 1 root root 612 Oct  2 14:49 index.htmlroot@nginx-pod:/usr/share/nginx/html#