kubernetes_Kubernetes设计模式

kubernetes

Kubernetes 1.0构建了14,000个提交和400个贡献者(包括我的笔贡献!)。 现在可用

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

Kubernetes的关键概念

在很高的层次上,有三个关键概念:

  • Pod是可以创建,计划和管理的最小可部署单元。 它是属于应用程序的容器的逻辑集合。
  • 主节点是提供集群统一视图的中央控制点。 有一个控制多个小兵的主节点。
  • 节点是一个工作节点,负责运行主节点委托的任务。 奴才可以运行一个或多个吊舱。 它在容器化环境中提供了特定于应用程序的“虚拟主机”。

kubernetes密钥概念

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

  • Replication Controller是Master上的资源,可确保所请求数量的Pod始终在节点上运行。
  • 服务是主服务器上的一个对象,可在一组重复的Pod之间提供负载平衡。
  • 标签是分布式可监视存储中的任意键/值对,Replication Controller将其用于服务发现。

启动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 ,并且可以通过以下方式启动集群:
    cd kubernetes
    export KUBERNETES_PROVIDER=vagrant
    cluster/kube-up.sh

kubernetes集群无用

一个容器的豆荚

本节将说明如何使用一个容器启动Pod。 基于WildFly的Docker映像将用作容器。

kubernetes-one-pod

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将用作容器。

javaee7-hol

配置文件为:

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容器。

kubernetes-rc

配置文件为:

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“副本”。 如果数量太多,复制控制器将杀死一些吊舱。 如果数量太少,则会重新开始。

kubernetes-pod重新安排

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

缩放荚

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

kubernetes-scaling-pods

有关完整的详细信息,请访问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对话。

kubernetes服务

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

以下是几个可以帮助您入门的博客:

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

请享用!

翻译自: https://www.javacodegeeks.com/2015/07/kubernetes-design-patterns.html

kubernetes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值