开发机对外暴露服务
开发机对外暴露服务,推荐 2 种方式:
- SSH 隧道转发
- 公网 IP
前者适合轻量级实验验证,后者更适合部署稳定的生产级服务。
配置 SSH 隧道转发
SSH 隧道转发原理,是通过在用户的本地 pc 启动一个 SSH 转发代理,从而实现将发往本地 pc 的请求,通过 SSH 隧道转发至远端开发机,举例如下:
# 在开发机内,启动一个http服务,监听端口8000,监听所有ip
python3 -m http.server 8000 --bind 0.0.0.0
# 启动转发代理,将远端的 8000 端口通过隧道映射到本地的 9000 端口(若是需要启动到后台,增加 -f 参数)
ssh -p 3xxxx -L 9000:127.0.0.1:8000 root@ssh-cn-huabei1.ebcloud.com -N
# 本地访问,请求9000端口
curl 127.0.0.1:9000
# 或者浏览器打开:
http://127.0.0.1:9000/
注意:
- 查看开发机的 SSH 访问地址及密码,参考这里
配置公网 IP
为开发机配置公网 IP 您需要通过 kubectl 命令进行操作,关于 kubectl 工具,具体参考这里。
注意:
- 本文档仅限于为开发机(ContainerServer)配置公网 IP,为普通 K8S 工作负载配置公网 IP,请参考这里。
申请公网 IP
通过命令:kubectl -n <namesapce> edit containerserver {containerserver-name},修改如下部分:
...
spec:
...
network:
public: true # 开启公网IP
tcp:
ports: # 对外暴露的端口
- 80
- 443
注意:
- 关机不会取消已分配的公网 IP,如您不需要使用公网 IP,请及时关闭。
- 关闭公网 IP 重新申请,可能会改变您的公网 IP。
- 完整的 ContainerServer CR 的示例及字段解释,参考这里
查看申请到的公网 IP
命令:kubectl -n <namesapce> get containerserver <containerserverName> -owide 输出的信息中,EXTERNAL-IP 即为申请到的公网IP
NAME STATUS AGE ENABLE-DOCKER SERVER-POD SSH-ACCESS EXTERNAL-IP SERVER-CLUSTER-IP DIND-CLUSTER-IP
test Poweroff 1d false cs-xxx-server ssh -p 37630 root@ssh-cn-huabei1.ebcloud.com 61.135.x.x 10.233.24.1 10.233.24.2
关闭公网 IP
通过命令:kubectl -n <namesapce> edit containerserver {containerserver-name}
将network -> public改为false,可以关闭公网 IP,如下所示。
...
spec:
...
network:
public: false # 关闭公网 IP
tcp:
ports: # 关闭公网 IP 时,这部分可以保留,用于下次开启使用
- 80
- 443