![Digital Ocean 负载均衡器,无法使用 doctl 修改负载均衡器规则](https://linux22.com/image/791023/Digital%20Ocean%20%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%99%A8%EF%BC%8C%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%20doctl%20%E4%BF%AE%E6%94%B9%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1%E5%99%A8%E8%A7%84%E5%88%99.png)
我在 Digital Ocean 上有一个托管的 kubernetes 环境。它有一个负载均衡器。我正在尝试将 target_port 分配给 tcp:3000。
我希望外部端口为 tcp:80,内部端口为 tcp:3000。Kubernetes
对我来说很新,我唯一的参考框架是配置 nginx 反向代理。
以下是当前的转发规则:
entry_protocol:tcp,
entry_port:80,
target_protocol:tcp,
target_port:32726,
certificate_id:,
tls_passthrough:false
这是我尝试用来设置 target_port 规则的命令
doctl compute load-balancer add-forwarding-rules <LB_ID> --forwarding-rules target_port:30000
错误:
Error: POST https://api.digitalocean.com/v2/load_balancers/<LB_ID>/forwarding_rules: 422 (request "") forwarding rule entry port must be between 1 and 65535
我也尝试过使用协议名称
doctl compute load-balancer add-forwarding-rules <LB_ID> --forwarding-rules target_protocol:tcp,target_port:30000
错误:
Error: POST https://api.digitalocean.com/v2/load_balancers/<LB_ID>/forwarding_rules: 422 (request "") protocols are not on the same network layer
答案1
我试图为已经存在的入口端口添加一条规则。因此,我删除了入口端口 80 的规则并添加了另一条规则。我还必须添加占位符规则(未显示),以便始终有一个规则,否则 doctl 会抛出错误。
删除了转发规则
doctl compute load-balancer remove-forwarding-rules <LB> --forwarding-rules entry_protocol:tcp,entry_port:80,target_protocol:tcp,target_port:32726
添加了新的
doctl compute load-balancer add-forwarding-rules <LB_ID> --forwarding-rules entry_protocol:tcp,entry_port:80,target_protocol:tcp,target_port:3000