Kubernetes(5)---控制器

一、控制器简介

自主POD调度绑定至节点若主程序崩溃则节点kubelet能够自动重启容器,但若是非主进程崩溃类的容器kubelet无从感知。这便需要依赖于POD对象定义的存活探测,以便kubelet能够探知到此类故障,但若pod被删除或者工作节点自身发生故障(工作节点上都有kubelet,kubelet不可用,因此其健康状态便无法保证),则便需要控制器来处理相应的容器重启和配置。
Kubernetes 中内建了很多 controller(控制器),这些相当于一个状态机,用来控制 Pod 的具体状态和行为。

Pod 的分类:

  • 自主式 Pod:Pod 退出后不会被创建
  • 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目

控制器类型:

  • ReplicationController和ReplicaSet
  • Deployment
  • DaemonSet
  • StatefulSet
  • Job
  • CronJob
  • HPA全称Horizontal Pod Autoscaler

二、各控制器示例

1.Deployment控制器

  • ReplicaSet 是下一代的 Replication Controller,官方推荐使用ReplicaSet。
  • ReplicaSet 和 Replication Controller 的唯一区别是选择器的支持,ReplicaSet 支持新的基于集合的选择器需求。
  • ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行
  • 虽然 ReplicaSets 可以独立使用,但今天它主要被Deployments 用作协调 Pod 创建、删除和更新的机制。

Deployment 为 Pod 和 ReplicaSet 提供了一个申明式的定义方法。

典型的应用场景:

  • 用来创建Pod和ReplicaSet
  • 滚动更新和回滚
  • 扩容和缩容
  • 暂停与恢复

 (1)删除已有的pod,编辑Deployment控制器清单文件deploy.yml,读取该文件新建pod

vim depoly.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-myapp
  labels:
    app: myapp
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:v1
        ports:
        - containerPort: 80
[root@server2 pod]# kubectl apply -f depoly.yml 

 (2)查看pod信息可以看到由RS控制器管理的三个pod副本成功创建

  • 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、付费专栏及课程。

余额充值