专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

用阿里云ecs部署kubernetes-K8S的坑

1 阿里云ecs不支持keepalived vip

1.1 场景描述

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

截图如下:
67_1.png

所以只能只用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通,又是一顿自我检查没找出原因,工单求助阿里

主要截图如下

67_2.png

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的两大坑就踩完了
有用请点个推荐,谢了您呢

文章永久链接:https://tech.souyunku.com/22239

未经允许不得转载:搜云库技术团队 » 用阿里云ecs部署kubernetes-K8S的坑

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们