如何为自建树莓派Kubernetes集群搭建网络架构并部署网站?
自建树莓派Kubernetes集群网站部署落地流程
你当前需要手动查找网站实际部署节点IP的核心原因,是集群缺少统一的应用层流量入口。原生Kubernetes和Swarm的网络逻辑确实存在差异:K8s不会自动完成跨节点的请求路由,必须显式配置流量转发规则,全链路部署可按以下步骤完成:
1. 搭建统一集群流量入口
- 部署适配ARM64架构的Ingress-Nginx控制器,这是K8s生态通用的入口组件,功能和你之前裸机环境下使用的nginx完全一致,所有组件都运行在集群内部
- 控制器开启
hostNetwork: true配置,让Ingress直接在所有集群节点的80/443端口监听,不需要额外搭建跨节点网络规则。配置完成后,无论网站Pod被调度到哪个节点,访问任意集群节点的80/443端口都能被正确路由,彻底告别手动查找节点IP的操作
2. 打通域名到集群的流量通路
- 根据实际网络环境配置域名解析:如果是无固定公网IP的家庭网络场景,通过动态域名解析将你注册的域名指向当前公网出口IP,在路由器上把公网80/443端口的请求转发到任意一个集群节点的IP即可。因为Ingress已经在全节点监听对应端口,请求路由到哪个节点都能正常处理
- 如果有固定公网IP,直接将域名A记录指向公网IP,搭配对应的端口转发规则即可
3. 配置网站服务的集群内路由规则
- 将网站应用打包为适配ARM64架构的镜像,部署为Kubernetes Deployment资源
- 为应用创建ClusterIP类型的内部Service,这个服务不需要对外暴露公网端口,仅作为集群内部的服务发现端点供Ingress调用
- 在Ingress规则中绑定你注册的域名,建立域名路径和内部Service的映射关系。Ingress收到对应域名的请求时,会自动转发到后端运行的网站Pod
4. 实现HTTPS证书自动配置
- 在集群内部署cert-manager组件,完全替代你之前手动操作certbot的流程
- 配置对应Let's Encrypt的证书签发源后,只需在Ingress规则上添加自动签发的注解,cert-manager会自动完成域名所有权校验、证书申请、到期自动续期全流程,证书会自动挂载到Ingress的443端口,不需要手动执行任何certbot命令
树莓派集群专属注意事项
- 不要强行使用LoadBalancer类型的Service,树莓派自建集群没有对接云厂商负载均衡的能力,配置后不会自动生效
- 所有集群组件、应用镜像都要选择支持ARM64架构的版本,避免出现镜像拉取失败、Pod无法启动的问题
- 如果运营商封锁了家庭网络的80/443入站端口,可以把Ingress的监听端口替换为其他可用端口,路由器对应调整转发规则即可,cert-manager会自动适配端口完成证书校验流程
内容的提问来源于stack exchange,提问作者A.Dumas
相关产品推荐
相关产品推荐

