kubernetes
Kubernetes 1.0构建了14,000个提交和400个贡献者(包括我的一小笔贡献!)。 现在可用 !
该博客讨论了一些Kubernetes设计模式。 下面讨论的设计模式的所有源代码都可以在kubernetes-java-sample上找到 。
Kubernetes的关键概念
在很高的层次上,有三个关键概念:
- Pod是可以创建,计划和管理的最小可部署单元。 它是属于应用程序的容器的逻辑集合。
- 主节点是提供集群统一视图的中央控制点。 有一个控制多个小兵的主节点。
- 节点是一个工作节点,负责运行主节点委托的任务。 奴才可以运行一个或多个吊舱。 它在容器化环境中提供了特定于应用程序的“虚拟主机”。
需要注意的其他一些概念:
- Replication Controller是Master上的资源,可确保所请求数量的Pod始终在节点上运行。
- 服务是主服务器上的一个对象,可在一组重复的Pod之间提供负载平衡。
- 标签是分布式可监视存储中的任意键/值对,Replication Controller将其用于服务发现。
启动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 ,并且可以通过以下方式启动集群:
cd kubernetes export KUBERNETES_PROVIDER=vagrant cluster/kube-up.sh
一个容器的豆荚
本节将说明如何使用一个容器启动Pod。 基于WildFly的Docker映像将用作容器。
Pod,Replication Controller,服务等都是Kubernetes中的资源。 可以使用kubectl通过配置文件来创建它们。
在这种情况下的配置文件:
apiVersion: v1
kind: Pod
metadata:
name: wildfly-pod
labels:
name: wildfly
spec:
containers:
- image: jboss/wildfly
name: wildfly-pod
ports:
- containerPort: 8080
有关如何创建Pod的完整详细信息,请参见github.com/arun-gupta/kubernetes-java-sample#a-pod-with-one-container
在一个容器中的Pod中部署Java EE应用程序
本节将展示如何在具有一个容器的Pod中部署Java EE应用程序。 具有内存H2数据库的WildFly将用作容器。
配置文件为:
apiVersion: v1
kind: ReplicationController
metadata:
name: javaee7-hol
labels:
name: javaee7-hol
spec:
replicas: 1
selector:
name: javaee7-hol
template:
metadata:
labels:
name: javaee7-hol
spec:
containers:
- name: master
image: arungupta/javaee7-hol
ports:
- containerPort: 8080
hostPort: 8080
有关完整的详细信息,请访问github.com/arun-gupta/kubernetes-java-sample#java-ee-application-deployed-in-pod-with-container-wildfly–h2-in-memory-database 。
具有Pod的两个副本的复制控制器
本节将说明如何使用Pod的两个副本启动复制控制器 。 每个Pod都有一个WildFly容器。
配置文件为:
apiVersion: v1
kind: ReplicationController
metadata:
name: wildfly-rc
labels:
name: wildfly
context: docker-k8s-lab
spec:
replicas: 1
template:
metadata:
labels:
name: wildfly
spec:
containers:
- name: wildfly-rc-pod
image: arungupta/wildfly-mysql-javaee7:k8s
ports:
- containerPort: 8080
有关完整的详细信息,请访问github.com/arun-gupta/kubernetes-java-sample#a-replication-controller-with-two-replicas-of-pod-wildfly
重新安排豆荚
Replication Controller确保在任何时候都运行指定数量的Pod“副本”。 如果数量太多,复制控制器将杀死一些吊舱。 如果数量太少,则会重新开始。
有关完整的详细信息,请访问github.com/arun-gupta/kubernetes-java-sample#rescheduling-pods 。
缩放荚
Replication Controller允许动态扩展和缩小Pod。
有关完整的详细信息,请访问github.com/arun-gupta/kubernetes-java-sample#scaling-pods 。
Kubernetes服务
豆荚是短暂的。 不能依赖分配给Pod的IP地址。 Kubernetes(尤其是Replication Controller)可以动态创建和销毁Pod。 消费者 Pod不能依赖生产者 Pod的IP地址。
Kubernetes服务是一种抽象,它定义了一组逻辑Pod。 服务所针对的Pod集由与Pod相关联的标签确定。
本节将展示如何在单独的Pod中运行WildFly和MySQL容器。 WildFly Pod将使用服务与MySQL Pod对话。
有关完整的详细信息,请访问github.com/arun-gupta/kubernetes-java-sample#kubernetes-service 。
以下是几个可以帮助您入门的博客:
完整的Kubernetes博客条目集提供了更多详细信息。
请享用!
翻译自: https://www.javacodegeeks.com/2015/07/kubernetes-design-patterns.html
kubernetes