Kubernetes 集群中 Replication Controller 的自动化

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

Kubernetes 的一个关键特性是它能够使用声明的原语来维持“期望的状态”。 Replication Controllers 是帮助实现这种状态的关键概念。

复制控制器确保指定数量的 pod“副本”在任何时候都在运行。如果有太多,它会杀死一些。如果太少,它会开始更多。

复制控制器

让我们看一下如何使用 Pod 的两个副本启动 Replication Controller。然后我们将杀死一个 pod,看看 Kubernetes 如何自动启动另一个 Pod。

启动 Kubernetes 集群

  1. 在 Mac OS 上启动 Kubernetes 集群的最简单方法是使用 Vagrant
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
  2. 或者,可以从 github.com/GoogleCloudPlatform/kubernetes/releases/download/v1.0.0/kubernetes.tar.gz 下载 Kubernetes,集群可以启动为:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    

启动并验证 Replication Controller 和 Pod

  1. Kubernetes 启动 Replication Controller 所需的所有配置文件都在 kubernetes-java-sample 项目中。克隆工作区:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
  2. 启动一个 Replication Controller,它有一个 pod 的两个副本,每个副本都有一个 WildFly 容器:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
    使用的配置文件如下所示:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
    这里使用默认的 WildFly Docker 镜像
  3. 获取 Pod 的状态:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
    注意 -w 会在有更改时刷新状态。状态从 Pending 变为 Running,然后变为 Ready to receive requests。
  4. 获取复制控制器的状态:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
    如果多个 Replication Controllers 正在运行,那么您可以使用标签查询这个特定的控制器:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
  5. 获取正在运行的 Pod 的名称:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
  6. 查找每个 Pod 的 IP 地址(使用名称):
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
    还有另一个 Pod:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    
  7. Pod 的 IP 地址只能在集群内部访问。登录 minion 以访问容器托管的 WildFly 主页:
    
     export KUBERNETES_PROVIDER=vagrant
    curl -sS https://get.k8s.io | bash
    

Pod 的自动重启

让我们删除一个 Pod,看看如何自动创建一个新的 Pod。


 export KUBERNETES_PROVIDER=vagrant
curl -sS https://get.k8s.io | bash

请注意如何删除名称为 wildfly-rc-15xg5 Pod 并创建名称为 wildfly-rc-0xoms 新 Pod。

最后,删除 Replication Controller:


 export KUBERNETES_PROVIDER=vagrant
curl -sS https://get.k8s.io | bash

最新的配置文件和详细说明位于 kubernetes-java-sample

在现实世界中,您通常会将此 Replication Controller 包装在服务中,并在前端使用负载均衡器。但这是另一个博客的主题!