Kubernetes Cookbook 编程指南 中文版教程
创建时间:2018-12-07  访问量:3661  7  0

Kubernetes Cookbook 编程指南 中文版教程

在AWS上构建Kubernetes基础设施

Amaxon Web Service(AWS)是非常流行的云服务。你可以在Amazon数据中心运行几个虚拟机器。本节包含登录、AWS基础设施的设置和在AWS上启动Kubernetes。

开始

你必须注册AWS创建一个帐户。访问http://aws.amazon.com ,输入你的信息与凭证:

注册完成后,由于需要验证你的帐户,你可能需要等待24小时。之后,你登录到AWS控制台后看到如下所示的页面:

如何去做...

AWS支持多区域数据中心;你可以选择最近最便宜的区域。在区域内部,有几个Availability Zones(AZ),在物理上是隔离的可用位置。

一旦你选择一个区域,你可以为Virtual Private Cloud(VPC)设置网络,如10.0.0.0/16,在VPC内部,你也可定义一个公共和私有的子网,如下所示:

  • 公共子网:允许你分配一个公网IP地址并通过网关访问公共网络

  • 私有子网:仅分配一个私有IP地址;不可以访问公共网络,外部网络访问要通过NAT进行

  • 在公共子网与私有子网之间的可访问性

每个子网必须被放在单独的AZ中。因此,为了避免单点故障(SPOF)最好创建多个公共子网和多个私有子网。

最好为NAT考虑multAZ;然而,在本书中,我们将忽略它,因为它不是必须的。更多关于NAT网关的信息,请查看这个http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-nat-gateway.html 链接。

让我们在AWS上创建这个VPC。

VPC和子网

  1. 在AWS控制台上,访问VPC并点击Create VPC。然后,将名称标记输入为My Kubernetes VPC并且CIDR输入为10.0.0.0/16:

在VPC下,在前面提到的multiAZ上的公有和私有子网如下表所示:

Name Tag CIDR Block Availability Zone Auto-Assign Public IP
My Kubernetes Pub lic A 10.0.0.0/24 us-east-1a Yes
My Kubernetes Pub lic D 10.0.1.0/24 us-east-1d Yes
My Kubernetes Pri vate A 10.0.2.0/24 us-east-1a No (Default)
My Kubernetes Pri vate D 10.0.3.0/24 us-east-1d No (Default)
  1. 单击左侧导航的Subnets链接。然后,单击Create Subnet按钮。为每个子网填写信息并选择VPC和Availability Zone。重复这个过程4次创建4个子网:

  1. 选择公共子网并单击Subnet Actions按钮。然后,选择Modify Auto-Assign Public IP来启用自动分配公供IP。

网关和NAT

每个子网都有一个网关来访问外部网络。有两种类型的网关,如下所示:

  • 内部网关(IGW):它允许你双向访问一个具有公有IP地址服务器上的网络

  • 网络地址转换(NAT):它允许你在一个方向上访问一个具有私有IP地址的服务中的网络

公共子网与网关相关联;另一方面,私有子网可以通过NAT访问网络。让我们创建IGW和NAT,如下所示:

Type Associate to
Internet Gateway VPC
NAT Gateway Public Subnet A

路由表

  1. 在创建IGW和NAT之后,你需要调整路由表来将黙认的网关设置为IGW或NAT,如下所示:

Route Table Name Route Destination Association
My Kubernetes Public Route 10.0.0.0/16 local 0.0.0.0/0 IGW Public Subnet A Public Subnet D
My Kubernetes Private Route 10.0.0.0/16 local 0.0.0.0/0 NAT Private Subnet A Private Subnet D
  1. 在AWS控制台上,在左侧导航面板中单击Route Tables。然后,单点Create Route Table按钮。填写Table Name并选择你创建的VPN。对于公共路由与私有路由,重复这个过程两次。

  2. 在创建路径之后,你需要添加一个黙认路由作为网关(IGW)或NAT。

对于公共路由,单击Routes标签页并单击Edit。然后,添加黙认路由为0.0.0.0/0并且目标为IGW ID。

对于私有路由,单击Routes标签页并单击Edit。然后,添加黙认的路由为0.0.0.0/0并且目标为NAT网关ID。

  1. 最后,单击Subnet Associatons标签页,然后单击Edit按钮,然后为公共路由选择公共子网并为私有路由选择私有子网,如下所示:

安全组

安全组是防火墙的一种,用来设置允许流入或流出的规则。对于Kubernetes,有一些已知的流通规则,应该作如下设置:

My Kubernetes master SG f 8080/tcp f My Kubernetes node
My Kubernetes node SG f 30000-32767/ tcp (Service) f 0.0.0.0/0

 

My etcd SG f 7001/tcp f 4001/tcp f 2379/tcp f 2380/tcp f My etcd SG f My Kubernetes master SG f My Kubernetes node SG
My flannel SG f 8285/udp f 8472/udp f My flannel SG
My ssh SG f 22/tcp f 0.0.0.0/0

在AWS控制台上,单击左侧导航面板中的Security Groups,创建和个Secrity Group,并添加流入规则,如下所示:

它是如何工作的...

一旦你创建了你自己的VPC和相关的子网和安全组,你可以运行EC2实例来设置你自己的Kubernetes集群。注意到EC2实例应该已经运行并与子网和安全组相关联,如下所示:

Instance Subnet Security Group
etcd Private f My etcd SG f My ssh SG
Kubernetes node (with flannel) Public f My flannel SG f My Kubernetes node SG f My ssh SG
Kubernetes master (with flannel) Private f My flannel SG f My Kubernetes master SG f My ssh SG

还可以参考

在本节中,你学习了如何注册Amazon Web Service和如何创建你自己的基础设施。AWS提供了大量的服务;然而,它有很多的文档和在线论坛。它建议你读取并监示理解AWS基础设施的最佳实践。下面是一些好的资源列表:

此外,可以查看以下章节:

  • 第1章构建你自己的Kubernetes,构建数据存储和创建一个层叠网络这两节

  • 使用AWS OpsWorks管理应用

  • 通过Chef recipe自动部署Kubernetes

  • 使用AWS CloudFormation快速供给