Kubernetes 集群中 Replication Controller 的自动化

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 63w+ 字,讲解图 2808+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2200+ 小伙伴加入学习 ,欢迎点击围观

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 包装在服务中,并在前端使用负载均衡器。但这是另一个博客的主题!

相关文章