Kubernetes 设计模式
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 82w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2900+ 小伙伴加入学习 ,欢迎点击围观
14,000 个提交和 400 个贡献者(包括 我的一个小提交 !)是构建 Kubernetes 1.0 的基础。 现在可用 !
本博客讨论了一些 Kubernetes 设计模式。下面讨论的设计模式的所有源代码都可以在 kubernetes-java-sample 中找到。
Kubernetes 的关键概念
在一个非常高的层次上,有三个关键概念:
- Pod 是可以创建、调度和管理的最小可部署单元。它是属于应用程序的容器的逻辑集合。
- Master 是提供集群统一视图的中央控制点。有一个主节点控制多个 minions。
- 节点 是一个工作节点,它运行由主节点委派的任务。 Minion 可以运行一个或多个 pod。它在容器化环境中提供特定于应用程序的“虚拟主机”。
其他一些需要注意的概念:
- Replication Controller 是 Master 的一种资源,可确保请求数量的 Pod 始终在节点上运行。
- Service 是 master 上的一个对象,它在一组复制的 pod 之间提供负载平衡。
- 标签 是复制控制器用于服务发现的分布式可监视存储中的任意键/值对。
启动 Kubernetes 集群
-
在 Mac OS 上启动 Kubernetes 集群的最简单方法是使用
Vagrant
:
export KUBERNETES_PROVIDER=vagrant curl -sS https://get.k8s.io | bash
-
或者,可以从
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
具有 Pod 的两个副本的 Replication Controller
本节将解释如何使用 Pod 的两个副本启动 Replication Controller 。每个 Pod 将有一个 WildFly 容器。
配置文件是:
export KUBERNETES_PROVIDER=vagrant
curl -sS https://get.k8s.io | bash
重新安排 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 博客条目 集提供了更多详细信息。