JupyterHub proxy-public svc没有外部IP(卡在<pending>中)

时间:2019-11-25 17:41:16

标签: amazon-web-services kubernetes-helm amazon-elb amazon-eks jupyterhub

我正在使用头盔将JupyterHub(版本0.8.2)部署到kubernetes(AWS管理的kubernetes“ EKS”)。我有一个头盔配置来描述使用AWS弹性负载均衡器的代理公共服务:

proxy:
  secretToken: ""
  https:
    enabled: true
    type: offload
  service:
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ...
      service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "tcp"
      service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
      service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: '1801'

问题:当我通过头盔将JupyterHub部署到EKS时:

helm upgrade --install jhub jupyterhub/jupyterhub --namespace jhub --version=0.8.2 --values config.yaml

proxy-public svc永远不会获得外部IP。它停留在待处理状态:

> kubectl get svc
NAME           TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
hub            ClusterIP      172.20.241.23    <none>        8081/TCP                     15m
proxy-api      ClusterIP      172.20.170.189   <none>        8001/TCP                     15m
proxy-public   LoadBalancer   172.20.72.196    <pending>     80:31958/TCP,443:30470/TCP   15m

我做了kubectl describe svc proxy-public并且kubectl得到了事件,似乎没有什么异常。没有错误。

3 个答案:

答案 0 :(得分:0)

您将需要另一个这样的注释才能使用AWS经典负载均衡器。

service.beta.kubernetes.io/aws-load-balancer-internal: 0.0.0.0/0

答案 1 :(得分:0)

原来的问题是我错误地将kubernetes集群(和控制平面)仅放置在专用子网中,从而使ELB无法获得外部IP。

答案 2 :(得分:0)

在Kubernetes上部署JupyterHub有时会显得过分,如果您所需要的只是Jupyterhub,可以通过Internet来访问您或您的团队。您可以在AWS或任何其他云中设置VM并安装jupyterhub并作为服务运行,而无需进行复杂的kubernetes设置。

实际上,AWS,GCP和Azure上已经存在VM设置,可用于启动jupyterhub vm,可以在公共ip上访问它,只需单击几下即可支持单用户或多用户会话。如果想尝试,请在下面查看详细信息:

Setup on GCP

Setup on AWS

Setup on Azure