1 阿里云ecs不支持keepalived vip

1.1 场景描述

本来计划用keepalived配合nginx做VIP漂移,用以反代多台master的apiserver的6443端口,结果部署了vip后,该VIP在其他ecs上访问不到,以为是自己的问题搞了好久搞不定,经工单咨询阿里云工程师,明确告知ecs不支持vip

截图如下:

所以只能只用SLB来实现了,但是slb也有坑,详见解决办法

1.2 解决办法和结论

  1. 阿里云不能使用vip,要用vip只能走slb
  2. slb已经没有免费的了,都要收费,包括内网slb
  3. 不支持手动指定slb的IP地址,所以之前生成的api证书之类的重新弄吧
  4. 要反代https(apiserver),只能用slb的四层反代
  5. slb四层TCP反代(7443),不能直接反代到服务提供者上(即apiserver:6443)
  6. 只能将 tcp反代,先代理到另一个ecs上,ecs再用nginx之类代理到apiserver
  7. 即slb(tcp:7443)-->nginx(tcp:7443)-->apiserver(https:6443)

    (nginx和apiserver不能是同一个机器)

2 阿里云ecs不支持flannel的gw模式

2.1 场景描述

后端node节点不多,且都在同一个vpc下面,计划直接用flannel的host-gw模式来实现容器跨节点通信

选择原因如下:

  1. flannel简单好用,node节点又不多
  2. gw模式只是增加了路由转发条目,性能极高
  3. node节点都在同一个vpc下面,想着二层互通,正好满足gw模式的要求

兴冲冲的开始拿两台ecs部署验证,部署过程很简单,路由条目也自动添加了,但是就是不能互相ping通,又是一顿自我检查没找出原因,工单求助阿里

主要截图如下

2.2 结论和解决办法

2.2.1 结论:

阿里云同一vpc下的ecs,二层不互通

2.2.2 办法1:添加路由

按工程师的要求,在阿里云的路由表中添加了到各容器网段的路由指向后,pod间通信成功,但是问题在于

  1. 添加一个node节点就得来改一次路由表
  2. 路由表是全局生效的,路由器下所有ecs都能访问pod
  3. 要想不全局访问,就得在用安全组来控制

基于上诉问题,最终放弃了改方案

2.2.3 办法2:vxlan模式

gw模式走不通后,只好用flannel的vxlan模式,虽说有性能损耗,但通过压测工具实测,也没有网传的30%-40%的损耗,大概在5%-10%区间,能接受

至此在阿里云ecs部署k8s的两大坑就踩完了

有用请点个推荐,谢了您呢

用阿里云ecs部署kubernetes/K8S的坑(VIP、slb、flannel、gw模式)的更多相关文章

  1. 阿里云ECS安装Kubernetes问题收集与解答

    问题1 kubernetes pod启动报错open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such fil ...

  2. 阿里云ECS部署ES

    背景 最近越来越多的公司把业务搬迁到云上,公司也有这个计划,自己抽时间在阿里云和Azure上做了一些小的尝试,现在把阿里云上部署ES和kibana记录下来.为以后做一个参考,也希望对其他人有帮助. 这 ...

  3. 部署:阿里云ECS部署Docker CE

    1 部署阿里云ECS,选择CentOS操作系统,并启动实例: 2 部署Docker CE: a.检查centos版本: $ cat /etc/redhat-release CentOS Linux r ...

  4. Kubernetes实战总结 - 阿里云ECS自建K8S集群

    一.概述 详情参考阿里云说明:https://help.aliyun.com/document_detail/98886.html?spm=a2c4g.11186623.6.1078.323b1c9b ...

  5. 阿里云ECS部署Redis主备哨兵集群遇到的问题

    一.部署 详细部署步骤:https://blog.csdn.net/lihongtai/article/details/82826809 Redis5.0版本需要注意的参数配置:https://www ...

  6. ECS7天实践进阶训练营Day2:基于阿里云ECS部署MediaWiki

    一.概述 MediaWiki是全球最著名的开源Wiki程序,运行于PHP+MySQL环境,MediaWiki从2002年被作为维基百科的系统软件,并由大量其他应用实例(例如萌娘百科),因此MediaW ...

  7. 阿里云上部署kafka--遇到的坑

    阿里云防火墙关闭,并且配置规则.不然会导致访问不到服务. 问题一: Caused by: java.net.UnknownHostException: iZuf68tztea6l5ccdz7wemZ: ...

  8. Linux学习笔记之阿里云ECS部署LAMP环境

    LAMP指Linux+Apache+MySQL/MariaDB+Perl/PHP/Python,是一组常用来搭建动态网站或者服务器的开源软件.它们本身都是各自独立的程序,但是因为常被放在一起使用,拥有 ...

  9. 阿里云ECS部署maven项目

    1.配置JDK和tomcat: https://www.cnblogs.com/congcongdi/p/11227771.html 2.使用eclipse打包项目 在项目上点击右键-->run ...

随机推荐

  1. Linux echo和cat和grep和tr的基础用法

    Linux vim   搜索 echo  :   显示输出功能 echo oldboy>1.txtx cat 1.txtx >  重定向   文件内容覆盖 >> 追加重定向   ...

  2. 处理Promise.reject()

    一般处理Promise.reject()都是catch住错误,然后进行错误处理,一般都是再次发起请求或者直接打印. 直接打印的情况用console.error()就可以了,而再次发起请求呢? 最好是先 ...

  3. 庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境

    庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境 一.介绍 说起微服务架构来,有一个环节是少不了的,那就是CI/CD持续集成的环境.当然,搭建CI/CD环境的工具很多, ...

  4. ORM框架对比以及Mybatis配置文件详解

    ORM框架对比以及Mybatis配置文件详解 0.数据库操作框架的历程 (1) JDBC ​ JDBC(Java Data Base Connection,java数据库连接)是一种用于执行SQL语句 ...

  5. Python PyCharm安装第三方库

    第一步:在PyCharm菜单中选择File--->Settings 第二步:在设置页出现的搜索框搜索:Project Interpreter 或者直接定位到此处 第三步:输入库名,搜索安装第三方 ...

  6. aio 系列函数是由 POSIX 定义的异步操作接口,可惜的是,Linux 下的 aio 操作,不是真正的操作系统级别支持的,它只是由 GNU libc 库函数在用户空间借由 pthread 方式实现的,而且仅仅针对磁盘类 I/O,套接字 I/O 不支持。

    30 | 真正的大杀器:异步I/O探索 https://time.geekbang.org/column/article/150780

  7. LeetCode上并发题目无Go版本:台湾同胞试水 — 交替打印FooBar

    https://mp.weixin.qq.com/s/I5va3PI1oGIj8R_n3Nw2yw

  8. innodb和myisam原理

    MyISAM索引实现 MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址.如图:  这里设表一共有三列,假设我们以Col1为主键,则上图是一个MyISAM表的主索引 ...

  9. POJ2029 二维线段树

    Get Many Persimmon Trees POJ - 2029 Seiji Hayashi had been a professor of the Nisshinkan Samurai Sch ...

  10. mysql数据恢复:.frm和.ibd,恢复表结构和数据

    mysql数据恢复:.frm和.ibd,恢复表结构和数据 一.恢复表结构 二.恢复表数据 相关内容原文地址: CSDN:她说巷尾的樱花开了:mysql根据.frm和.ibd文件恢复表结构和数据 博客园 ...