# # 端口转发

微服务环境中，各个服务都通过 TCP / UDP 端口的形式提供访问。按调用者所在位置、通信协议的形式来划分，大致有如下几种情况：

调用者所在位置 | 通信协议 | 临时性 | 常见场景 | 推荐配置方式
--- | --- | --- | --- | ---
VPC外 | http / https | 日常性 | 用户从互联网（亦可能是公司内网） 访问 web 页面，或者 restful 接口 | Kubernetes Ingress （可在Kuboard中直接配置 互联网入口 ）
VPC外 | tcp / udp | 临时性 | 例如，开发者临时需要访问数据库端口、Redis端口等； | 在客户端所在机器配置 kubectl， 并通过 kubectl port-forwad 进行端口转发
VPC外 | tcp / udp | 日常性 | 暂不讨论 |
VPC内/集群外 | http / https | 日常性 | 通过接口网关为周边系统提供服务 | Kubernetes Service NodePort （可在Kuboard中直接配置 访问方式/VPC内访问 ）
VPC内/集群外 | tcp / udp | 同上 | 同上 |
集群内 | http / https | 日常性 | 场景1：Web层访问微服务网关 场景2：微服务网关调用微服务，微服务之间的互相调用等。 | 场景1：Kubernetes Service ClusterIP （可在Kuboard中直接配置 访问方式/集群内访问 ） 场景2：Spring Cloud中使用Eureka/Consul等服务发现 （Kuboard中 访问方式/不配置 ）
集群内 | tcp / udp | 日常性 | 微服务访问数据库、微服务访问Redis等 | Kubernetes Service ClusterIP （可在Kuboard中直接配置 访问方式/集群内访问 ）

## # Feature planned

在作者使用 Kuboard 的运维实践中，有如下两个场景不能脱离 kubeadm / kubectl 命令行：

- 初始化集群 / 向集群添加节点
- 开发者临时需要访问数据库端口、Redis端口时，通过 kubectl port-forward 进行端口转发

Kuboard 计划实现类似 kubectl port-forward 的功能，提高问题诊断过程中的便利性。

Copyright © 2019-present HuanQing Shao