KUBERNETES-1-5-控制器应用二

本文详细介绍了Kubernetes中用于监控容器健康状况的livenessProbe和readinessProbe,包括它们的作用、配置选项以及如何通过kubectl命令查看和配置。通过示例展示了livenessProbe的exec、httpGet和tcpSocket三种类型的探测,并通过创建和修改yaml文件来模拟容器的健康检查,探讨了探测失败后的容器重启策略。同时,还提及了postStart生命周期钩子的使用。
摘要由CSDN通过智能技术生成

1.kubectl explain pods.spec.containers查看容器信息。 lifecycle    <Object>选取pod整个生命周期针,针对启动后和终止前。livenessProbe    <Object>进行存活性探测针状态描述。 readinessProbe    <Object>进行就绪性探测针状态描述。

[root@master manifests]# kubectl explain pods.spec.containers
   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
 

2.kubectl explain pods.spec.containers.livenessProbe查看livenessProbe下的三种探针类型,exec    <Object>,httpGet    <Object>,tcpSocket    <Object>。   failureThreshold    <integer>指明失败后继续探测的次数。periodSeconds    <integer>指明再次探测间隔的时间。timeoutSeconds    <integer>指明探测等待的时间。initialDelaySeconds    <integer>指初始化延迟探测的时间,因为容器不可能一启动就马上运行,等待一段时间其完全启动。

[root@master manifests]# kubectl explain pods.spec.containers.livenessProbe

   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>
     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>
     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>
     TCPSocket specifies an action involving a TCP port. TCP hooks not yet
     supported

   timeoutSeconds    <integer>
     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
 

3.编辑liveness-exec.yaml 文件,kubectl create -f liveness-exec.yaml使用资源脚本创建pod,使用 livenessProbe:探针探测/tmp/healty文件,因为command: 在执行的过程中已经将/tmp/healty文件删除,kubectl get pods可以获得liveness-exec-pod的RESTARTS的次数为3,对liveness-exec.yaml 进行验证。

[root@master manifests]# vim liveness-exec.yaml
[root@master manifests]# cat 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/healty"]
      initialDelaySeconds: 1
      periodSeconds: 3
[root@master manifests]# kubectl create -f liveness-exec.yaml 
pod/liveness-exec-pod created
[root@master manifests]# kubectl get pods
NAME                          READY     STAT

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将 io.fabric8 kubernetes-client 集成到 Spring Boot 应用程序,需要进行以下步骤: 1. 在 pom.xml 文件添加以下依赖: ```xml <dependency> <groupId>io.fabric8</groupId> <artifactId>kubernetes-client</artifactId> <version>5.7.0</version> </dependency> ``` 2. 在 Spring Boot 应用程序的配置文件,添加 Kubernetes 的配置信息。例如,可以在 application.yml 文件添加以下信息: ```yaml kubernetes: masterUrl: https://your-kubernetes-master-url.com namespace: your-namespace authToken: your-auth-token ``` 其,masterUrl 指定了 Kubernetes API Server 的地址,namespace 指定了要操作的 Kubernetes 命名空间,authToken 指定了访问 Kubernetes API Server 的认证令牌。 3. 在 Spring Boot 应用程序,注入 KubernetesClient 对象。例如,可以在一个自定义的 Spring Bean 注入 KubernetesClient 对象,然后在该 Bean 实现对 Kubernetes 资源的操作。例如: ```java @Component public class KubernetesService { @Autowired private KubernetesClient kubernetesClient; public void createDeployment(Deployment deployment) { kubernetesClient.apps().deployments().inNamespace("default").create(deployment); } public void deleteDeployment(String name) { kubernetesClient.apps().deployments().inNamespace("default").withName(name).delete(); } } ``` 在上面的代码KubernetesService 是一个自定义的 Spring Bean,其注入了 KubernetesClient 对象。然后,可以在该 Bean 实现对 Kubernetes Deployment 的创建和删除操作。 4. 最后,可以在 Spring Boot 应用程序的控制器或其他组件使用 KubernetesService Bean 的方法,以实现对 Kubernetes 资源的操作。例如: ```java @RestController public class KubernetesController { @Autowired private KubernetesService kubernetesService; @PostMapping("/deployments") public void createDeployment(@RequestBody Deployment deployment) { kubernetesService.createDeployment(deployment); } @DeleteMapping("/deployments/{name}") public void deleteDeployment(@PathVariable String name) { kubernetesService.deleteDeployment(name); } } ``` 在上面的代码KubernetesController 是一个 Spring MVC 控制器,其注入了 KubernetesService Bean,可以通过该 Bean 的方法实现对 Kubernetes Deployment 的创建和删除操作。然后,可以通过 Spring MVC 的注解将这些方法映射到 REST API ,以供外部调用。 通过以上步骤,就可以将 io.fabric8 kubernetes-client 集成到 Spring Boot 应用程序,实现对 Kubernetes 资源的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值