在 google 容器引擎上,如何将 "expose" 与“--public-ip”一起使用?
on google container engine, how do i use "expose" with "--public-ip"?
我已经使用 Google 的容器引擎工具通过 Kubernetes 集群在 GCE 上部署了 Docker 容器。
在服务上设置 'type': 'LoadBalancer' 不支持 websockets。我想公开我自己的 nginx 服务以支持 websockets 但 运行 它在 kubernetes 中用于 dns / 服务 disco。
我看到 kubectl expose
命令有一个 --public-ip=
参数。任何关于如何设置该 ip 的提示表示赞赏。
更新,尝试使用 --dry-运行 -o yaml 进行公开以传递关联参数:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
name: tfe
name: mytfe
spec:
sessionAffinity: ClientIP
ports:
- name: default
nodePort: 0
port: 80
protocol: TCP
targetPort: 80
selector:
name: tfe
type: LoadBalancer
status:
loadBalancer: {}
它可以正常打开 http 但我在 ws GET 上得到 400(在 POST 得到 200 之后)
"GET /socket.io/?EIO=3&transport=polling&t=1437780794642-2313&sid=JuLWBlEy4Wjk3zHSAAH0 HTTP/1.1" 400
为什么它不支持网络套接字?这应该。您需要将会话关联设置为开启。
遗憾的是 kubectl expose
目前没有会话亲和力的标志(它应该)但是如果你 运行 kubectl expose --dry-run=true ...
它会转储 API 对象它会发送,然后您可以将 service.spec.sessionAffinity
添加到 "ClientIP"
然后 运行 kubectl create -f <file>
应该可以。如果没有,请访问 IRC 或提交一个 github issue with a repro。
我提出:https://github.com/GoogleCloudPlatform/kubernetes/issues/11718 向 kubectl 添加一个标志来执行此操作。
谢谢!
我已经使用 Google 的容器引擎工具通过 Kubernetes 集群在 GCE 上部署了 Docker 容器。
在服务上设置 'type': 'LoadBalancer' 不支持 websockets。我想公开我自己的 nginx 服务以支持 websockets 但 运行 它在 kubernetes 中用于 dns / 服务 disco。
我看到 kubectl expose
命令有一个 --public-ip=
参数。任何关于如何设置该 ip 的提示表示赞赏。
更新,尝试使用 --dry-运行 -o yaml 进行公开以传递关联参数:
apiVersion: v1
kind: Service
metadata:
creationTimestamp: null
labels:
name: tfe
name: mytfe
spec:
sessionAffinity: ClientIP
ports:
- name: default
nodePort: 0
port: 80
protocol: TCP
targetPort: 80
selector:
name: tfe
type: LoadBalancer
status:
loadBalancer: {}
它可以正常打开 http 但我在 ws GET 上得到 400(在 POST 得到 200 之后)
"GET /socket.io/?EIO=3&transport=polling&t=1437780794642-2313&sid=JuLWBlEy4Wjk3zHSAAH0 HTTP/1.1" 400
为什么它不支持网络套接字?这应该。您需要将会话关联设置为开启。
遗憾的是 kubectl expose
目前没有会话亲和力的标志(它应该)但是如果你 运行 kubectl expose --dry-run=true ...
它会转储 API 对象它会发送,然后您可以将 service.spec.sessionAffinity
添加到 "ClientIP"
然后 运行 kubectl create -f <file>
应该可以。如果没有,请访问 IRC 或提交一个 github issue with a repro。
我提出:https://github.com/GoogleCloudPlatform/kubernetes/issues/11718 向 kubectl 添加一个标志来执行此操作。
谢谢!