容器服务VPC网络使用指南

前言

在使用容器服务的过程中,很多场景下需要使用到VPC网络。但是,目前在用户跟踪过程中发现,大家对于VPC网络的使用存在一点的误区,偶尔会导致一些意外情况的发生,导致使用受挫。该篇文章不会去详细介绍VPC网络的原理,只从容器服务使用VPC网络的角度来介绍如何在容器服务中正确的使用VPC网络以及相应的注意事项。

准备

VPC网段

为了可以顺利的在容器服务中创建VPC的容器集群,首先我们需要根据实际的情况规划网络。创建VPC网络的时候,您必须指定对应的CIDR来划分对应的子网,如果想了解更多的关于CIDR的信息,参见RFC4632了解更多关于 CIDR 的信息.
每个专有网络只能指定 1 个网段,网段范围如下,其中 172.16.0.0/12 是默认专有网络使用的网段。

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16

容器网段

在创建VPC网络的容器服务集群的时候,需要用户指定对应的容器网段,目前容器服务支持的容器网段如下:

  • 192.168.1.0/24
  • 172.[16-31].1.0/24

网络规划

因为为什么保证容器间的网络互通,我们需要把每个容器网段都添加到路由表中,因此为了避免网段冲突,我们需要提前根据VPC和容器网段对自身的应用服务进行相应的网络规划。

网络规划过程中本着避免冲突的原则,需要从以下几个方面考虑
1. 容器网段跟vpc网段不能重合
2. 专有云或者混合云场景下,容器网段建议不要跟私有网段重合

  • 网段规划

在VPC网段和容器网段中,我们发现172网段属于重合的,因此对于VPC网段和容器网段选择172网段的时候,需要特别注意,下面举例来说明一下:

假设VPC网段选择为 172.16.0.0/12
交换机网段设定为 172.18.1.0/24
那么根据交换的网段定义,归属于该交换机的ECS的IP地址应该是在172.18.1.1-172.18.1.252
如果此时,我们的容器网段也定义为 172.18.1.0/24 就会出现容器的IP和ECS重复的情况,在这种情况下会导致容器间的网络通信出现异常,因此在使用VPC网络的时候,必须注意网络的规划。

  • 路由表规划

目前同一个VPC的最大路由表条目是48条,

示例

接下来,我们使用一个完整的实例流程,来看一下整个容器服务VPC网络的集群创建流程

  • 创建VPC网络

登录到阿里云VPC网络控制台,点击创建专有网络,在本示例中,我们为了避免和容器网段可能的冲突,选择了创建10.0.0.0/8网段的VPC网络。

  • 创建交换机

当VPC创建好以后,我们在该VPC下创建相应的交换机。本示例中,我们选择创建华东2可用区10.1.1.0/24的交换机,前面我们介绍过,创建ECS的时候,我们如果选择该交换机的话,最终ECS的IP地址为 10.1.1.1-10.1.1.252,合计252个IP地址(也就是说该网段的交换机下可以购买252台ECS)

  • 查看路由表

当VPC和交换机创建好以后,我们来查看一下路由表的信息

从上图红色框标记可以看到,交换机的网络会被作为默认的系统路由表。

  • 创建容器集群

打开容器服务控制台,选择创建集群,选择华东2地域,专有网络,选择我们之前创建好的VPC和交换机。

此时,红色框里我们选择172.18.0.0/24 作为容器的起始网段。那么也就意味着,该集群内的节点上的容器网段为 172.18.[1-254].0/24,每个节点上容器的IP地址为172.18.x.[1-255]

  • 数据校验

等待容器集群创建成功后,我们可以通过校验集群节点IP地址,路由表,查看应用容器的IP地址等方式来验证我们之前提到的网络规划的理论。

通过查看容器集群的节点列表中ECS的IP地址,即可验证交换的网段,我们从下图可以看到新购的ECS都归属于10.1.1.0/24这个交换机网段

验证完节点IP地址,我们继续校验路由表,此时系统会向该VPC的路由表里新增网段为172.18.x.0/24的路由信息,下一条为对应的ECS实例ID,如下图

最终,我们验证一下容器的IP是否正确,此时我们通过模板从容器服务控制台部署一个系统自带的示例的wordpress应用,然后通过查看某一个节点上的容器列表,来验证一下容器的IP

通过以上的校验,我们成功的创建出来一个VPC网络的容器集群。

总结

对于VPC网络的容器集群来说,其实也并没有那么的复杂,只要我们仔细研究和规划好自身应用的网络,就可以避免在使用过程中的一些问题。

相关文档

  • VPC网络相关资料详见文档
  • 容器服务资料详见文档
时间: 2024-08-03 14:49:28

容器服务VPC网络使用指南的相关文章

容器服务安全组快速指南

容器服务安全组规则 2月28号之后创建容器服务集群,默认创建的安全组已经做了加固,开放的规则如下 VPC安全组: 经典网络安全组(公网入方向和内网入方向): 注意 443端口和80端口可以根据自己的需求选择放开或者关闭. ICMP规则建议保留,方便排查问题.有些工具也依赖ICMP 老集群的安全组规则 2月28之前创建的集群,安全组规则开的比较大,以经典网络安全组规则为例 如果希望收紧规则,可以参考前面安全组的配置.步骤如下 在内网入方向和公网入方向添加允许ICMP规则 如果直接访问VM的80端口

如何保证摘除公网EIP的容器服务VPC集群可以正常访问公网

在使用容器服务的过程中.出于业务的需要,用户需要创建VPC集群,但是又不希望每台ECS都绑定公网EIP,一方面是出于业务私密性的保护,另外一方面是出于节约成本的考虑. 基于以上场景,我们可以让集群内的机器,通过一台有EIP的机器来上网.在这个过程中主要使用到了SNAT相关的知识. 先找一台同Region内的VPC机器,为该机器配置EIP 登陆到配置了EIP的ECS,为机器开启IP转发功能,找到#net.ipv4.ip_forward=1行,去掉注释即可 执行以下命令,让IP转发生效 iptabl

基于容器服务的持续集成与云端交付(二)- 多维度打磨交付能力

前言 在上一篇中,和大家一起讨论了传统软件交付的问题.持续交付的难点.以及为什么云端的容器交付可以协助大家快速的持续交付. 但是当真正的将一个系统通过云端容器交付的时候会发现不能单纯的将Docker作为一种交付工具来对待,更多的时候是作为一个交付平台的基础设施来看待,还需要关心的是使用Docker后网络.存储.安全.性能.监控等等不同方面带来的变革. 因为交付的本质是将一套复杂的软件系统从零到一完成开发.测试.部署.上线的过程,软件的复杂度直接关系到了交付的难度,特别是现在微服务的架构方式越来越

Docker常见故障排查指南 - 阿里云容器服务

对于Docker的初学者而言,当容器或应用出现了问题不知从何入手进行排查.为此,我们准备了一个简单指南来帮助阿里云容器服务的用户进行故障排查. 由于阿里云容器服务完全兼容Docker Swarm,并支持使用原生Docker Client/API,所以很多内容对于 Docker/Docker Swarm的用户也是适用的. Docker问题分类 我们可以把Docker在使用中的问题分为如下几类, 安装故障:Docker Engine 无法正常配置使用 应用故障:应用执行状态与预期不一致 容器故障:无

阿里云容器服务-高可用Kubernetes部署指南

Kubernetes是非常流行的容器管控技术,为了让Kubernetes可以更深度集成阿里云的计算.存储和网络服务,以提供更佳的性能和网络特性支持,阿里云容器服务团队为Kubernetes提供了基于阿里云服务的CloudProvider插件. 同时,基于阿里云资源编排服务ROS的应用部署能力,阿里云用户可以非常方便的快速部署Kubernetes集群.本文接下来会详细介绍部署过程. 依赖条件 需要事先开通访问控制RAM服务,访问https://ram.console.aliyun.com点击开通服

当Docker遇到数据库:在阿里云容器服务中使用RDS

Docker与持久化服务 最近一段时间以来,微服务架构和Docker成为了技术社区的"网红".其背后的原因是将微服务与Docker的结合在一起对现有的软件生命周期从架构设计.开发测试到运维迭代构成了一种"颠覆性"的力量:微服务鼓励开发者将整个软件解构为较小的功能组件:每个组件能够独立开发.运维.伸缩和容错:组件之间通过标准的服务接口进行通信,而组件可以选择最适合的技术栈来实现.而容器技术进一步拓展了这种解耦性,它能够将软件与其部署环境分离,利用容器敏捷和可移植的使得

阿里云容器服务简介

容器服务是阿里云在2015年12月推出的一项新产品,目前正处于公测阶段.   容器服务是一项高性能可扩展的容器管理服务,支持在一组阿里云云服务器上通过 Docker容器来部署或编排应用.用户不再需要安装.运维.扩展自己的集群管理基础设施,而是可以直接通过阿里云控制台图形化界面或API进行容器操作和生命周期管理.容器服务整合了阿里云负载均衡SLB.专有网络 VPC等云产品,为云应用部署与运维场景提供丰富的一站式功能支持.   和业内同类容器服务产品AWS EC2 Container Service

容器服务Open API Python SDK使用详解

阿里云容器服务公测也有一段时间了,这期间接触到不少用户反馈,不知道如何使用openapi进行相关的容器开发.这里我们就准备一篇关于如何使用容器服务Open API进行开发的教程,来讲解容器服务目前已公开的api接口.这里我们不打算自行实现Open API,而采用目前已有的sdk来说明,有兴趣的朋友,也可以尝试在API的接触上自行封装实现SDK. 在本教程过程中,如未特别说明,使用的Python 版本为2.7.10,操作系统为ubuntu 14.04 64位 环境准备 首先我们需要安装sdk的核心

基于容器服务的持续集成与云端交付(一)- 交付之禅

前言 随着微服务架构与容器虚拟化技术的发展,持续集成与持续交付的概念又重新回到了大家的视野,越来越多的公司开始使用持续集成的系统来解决频繁发布带来的质量问题:使用持续交付的工具来实现代码在不同环境上的自动部署.原本有些学院派乌托邦式的思想正被千千万万次的集成与部署证明着它应有的价值.那么究竟是因为什么让持续集成与持续交付这个已经不再年轻的软件开发与交付的思想重新焕发绽放迷人的光彩呢? 传统软件交付之殇 传统软件的开发与交付的周期都很漫长,一款普通的企业软件通常需要十几个开发人员,几个月的时间来完