Kubernetes 设计模式

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 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+ 小伙伴加入学习 ,欢迎点击围观

14,000 个提交和 400 个贡献者(包括 我的一个小提交 !)是构建 Kubernetes 1.0 的基础。 现在可用

本博客讨论了一些 Kubernetes 设计模式。下面讨论的设计模式的所有源代码都可以在 kubernetes-java-sample 中找到。

Kubernetes 的关键概念

在一个非常高的层次上,有三个关键概念:

  • Pod 是可以创建、调度和管理的最小可部署单元。它是属于应用程序的容器的逻辑集合。
  • Master 是提供集群统一视图的中央控制点。有一个主节点控制多个 minions。
  • 节点 是一个工作节点,它运行由主节点委派的任务。 Minion 可以运行一个或多个 pod。它在容器化环境中提供特定于应用程序的“虚拟主机”。

其他一些需要注意的概念:

  • Replication Controller 是 Master 的一种资源,可确保请求数量的 Pod 始终在节点上运行。
  • Service 是 master 上的一个对象,它在一组复制的 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
    

一个容器一个容器

本节将解释如何使用一个 Container 启动一个 Pod。 WildFly 基础 Docker 镜像将用作容器。

Pod、Replication Controller、Service等都是Kubernetes中的资源。它们可以通过配置文件使用 kubectl 创建。

本例中的配置文件:


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

有关如何创建 Pod 的完整详细信息,请访问 github.com/arun-gupta/kubernetes-java-sample#a-pod-with-one-container

使用一个容器部署在一个 Pod 中的 Java EE 应用程序

本节将展示如何在具有一个容器的 Pod 中部署 Java EE 应用程序。带有内存 H2 数据库的 WildFly 将用作容器。

配置文件是:


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

完整的详细信息,请访问 github.com/arun-gupta/kubernetes-java-sample#java-ee-application-deployed-in-a-pod-with-one-container-wildfly–h2-in-memory-database

具有 Pod 的两个副本的 Replication Controller

本节将解释如何使用 Pod 的两个副本启动 Replication Controller 。每个 Pod 将有一个 WildFly 容器。

配置文件是:


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

完整的细节在 github.com/arun-gupta/kubernetes-java-sample#a-replication-controller-with-two-replicas-of-a-pod-wildfly

重新安排 Pod

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

完整的详细信息,请访问 github.com/arun-gupta/kubernetes-java-sample#rescheduling-pods

缩放 Pod

Replication Controller 允许动态扩展和缩小 Pod。

完整的详细信息,请访问 github.com/arun-gupta/kubernetes-java-sample#scaling-pods

Kubernetes 服务

Pod 是短暂的。不能依赖分配给 Pod 的 IP 地址。 Kubernetes,特别是 Replication Controller,动态创建和销毁 Pod。 消费者 Pod 不能依赖 生产者 Pod 的 IP 地址。

Kubernetes Service 是一种抽象,它定义了一组逻辑 Pod。 Service 的目标 Pod 集由与 Pod 关联的标签确定。

本节将展示如何在单独的 Pod 中运行 WildFly 和 MySQL 容器。 WildFly Pod 将使用服务与 MySQL Pod 对话。

完整的详细信息,请访问 github.com/arun-gupta/kubernetes-java-sample#kubernetes-service

以下是一些可以帮助您入门的博客:

完整的 Kubernetes 博客条目 集提供了更多详细信息。

相关文章