1.
准备与前提(硬件与账号)
- 准备清单:列出香港云提供商账号(如香港云主机/裸金属)、本地机房信息(公网地址、私有网络)、域名注册与DNS管理权限。
- 公网/专线:确认是否有VPC、VPN或专线(如AWS Direct Connect、Azure ExpressRoute或ISP MPLS)。若没有,优先规划VPN/SD-WAN或BGP对等。
- 证书与密钥:提前生成SSH密钥对、TLS证书(或准备使用ACME+DNS验证)。
2.
网络拓扑设计与IP规划
- 拓扑建议:采用双层网络:私有内网用于节点间通信(Pod/Overlay),公网用于外部流量与管理。
- IP规划:为香港节点分配固定私有IP段(如10.10.0.0/16),为服务VIP预留一段(如10.10.255.0/24),并在域名计划中设置香港子域(hk.example.com)。
- 路由与NAT:确定路由策略,跨云路由使用静态路由或BGP;避免默认NAT影响ClusterIP访问。
3.
建立安全互联(VPN/专线/SD-WAN)
- VPN步骤(以OpenVPN/StrongSwan为例):在本地或云端部署VPN服务器,生成CA与客户端证书,配置路由推送。
- 专线对接:与云厂商确认BGP ASN、子网公告方式与MTU(通常设置为1500或更高)。
- 校验:从本地ping香港私有IP并traceroute确认路径,确保两端可以route到对方私有网段。
4.
节点初始化(操作系统与内核配置)
- 系统准备(以Ubuntu 22.04为例):apt update && apt upgrade -y;关闭swap(swapoff -a 并注释 /etc/fstab 中swap行)。
- 内核参数:写入 /etc/sysctl.d/99-k8s.conf,包含 net.bridge.bridge-nf-call-iptables=1、net.ipv4.ip_forward=1,然后 sysctl --system。
- 时间与DNS:配置ntp或chrony,确保时钟同步;配置resolv.conf使用可靠DNS或内部DNS。
5.
Kubernetes集群部署(控制平面与香港节点加入)
- 控制平面:建议控制平面部署在主数据中心或多活模式(三节点)。使用kubeadm init --apiserver-advertise-address=<控制平面IP> --pod-network-cidr=192.168.0.0/16。保存join命令。
- 香港节点加入:在香港主机上安装kubeadm、kubelet、kubectl,执行 kubeadm join
--token ... --discovery-token-ca-cert-hash sha256:...。
- 网络插件:推荐使用Calico或Cilium,按官方步骤在集群中apply对应yaml,确认Pod网络互通(kubectl get pods -n kube-system -o wide)。
6.
存储与数据同步(本地与云端一致性)
- 选择策略:对数据库类建议主从/读写分离并在主数据中心保留主写节点;对文件使用分布式存储(如Ceph、Rook)或云存储网关。
- NFS/SMB:小规模可用NFS服务器导出,香港节点mount为PersistentVolume。
- 备份同步:使用rsync或对象存储(S3兼容)做跨域异地备份,设定RPO/RTO指标并定期演练恢复。
7.
负载均衡与高可用(外部流量调度)
- 方案选择:外部用云LB(如负载均衡器)+内部使用MetalLB或keepalived+HAProxy实现VIP漂移。
- keepalived配置示例:在两台香港边缘节点配置VRRP虚拟IP并设置优先级,确保VIP在主节点失败时漂移。
- 健康检查:配置LB的健康检查路径(/healthz),并在应用层提供快速就绪探针。
8.
安全加固(防火墙、访问控制与审计)
- 网络安全:限制安全组,仅开放必要端口(22、6443、NodePort范围等),在VPN/专线上允许管理端口。
- 身份管理:使用RBAC细化权限,集成OIDC/LDAP或云IAM。
- 日志与审计:启用Kubernetes审计日志,集中收集到ELK/Prometheus+Grafana以便追踪异常。
9.
监控、告警与容量规划
- 监控栈:部署Prometheus + node_exporter + kube-state-metrics,并用Grafana建面板(节点网络、Pod延迟、磁盘IO)。
- 告警规则:设置CPU/内存阈值、网络丢包、VPN隧道掉线告警,并通过Webhook/SMS/邮箱通知SRE。
- 容量计划:根据峰值流量和容器密度预留节点冗余(至少20%-30%余量)。
10.
部署流水线与蓝绿/灰度发布
- CI/CD:在主数据中心搭建Jenkins/GitLab CI,将香港作为目标环境,使用kubectl/helm自动化部署。
- 发布策略:推荐使用蓝绿或Canary(Istio/Argo Rollouts),先在小流量上验证再全量切换。
- 回滚:保留历史镜像与Helm release,确保一键回滚流程并测试。
11.
故障演练与日常运维建议
- 灾备演练:定期模拟单点节点故障、链路中断、数据恢复,验证RTO/RPO。
- 文档与runbook:为常见故障准备步骤(例如VPN重连、节点重置、kubelet重启),并在值班时速查。
- 自动化:通过脚本自动化常用运维操作,减少人工误操作。
12.
问:在混合云中,香港节点网络延迟如何优化?
答:优化措施包括使用专线或BGP对等替换公网;调整MTU避免分片;在应用层开启连接复用与缓存(CDN/边缘缓存);数据库读写分离减少跨域同步;并通过QoS策略优先保障关键流量。
13.
问:如何保证跨云Kubernetes集群的服务发现与流量路由?
答:可采用全局DNS(基于GeoDNS或EDNS)结合服务网格(Istio/Linkerd)做跨域流量治理;内部服务用ClusterIP +跨域Service Mesh或Federation实现发现;对于外部流量用云LB做入口,内部使用VPN直连。
14.
问:部署时最常见的踩坑有哪些,如何避免?
答:常见问题包括路由冲突(私网IP重复)、MTU导致的丢包、时间不同步引起证书校验失败、未关闭swap导致kubelet异常。避免方法是提前做网络规划、测试VPN和MTU、启用NTP、严格按Kubernetes要求配置系统参数并在上线前做压力与故障测试。
来源:香港服务器集群 混合云环境下的香港节点集群部署经验