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 博客条目 集提供了更多详细信息。