kubernetes service 如何设置 external IP


我在digitalocean 上面搭建了一个 k8s ,现在不知道如何将 service 设置 external ip,以让外网可以访问这个服务,请教一下各位
core@master ~/kubernetes $ kubectl describe service/guestbook
Name:           guestbook
Namespace:      default
Labels:         app=guestbook
Selector:       app=guestbook
Type:           LoadBalancer
IP:         10.100.66.173
Port:           <unnamed>    3000/TCP
NodePort:       <unnamed>    31801/TCP
Endpoints:      10.244.35.4:3000,10.244.39.3:3000,10.244.39.4:3000
Session Affinity:   None
No events.

core@master ~/kubernetes $ kubectl get svc
NAME           CLUSTER_IP       EXTERNAL_IP   PORT(S)    SELECTOR                AGE
guestbook      10.100.66.173                  3000/TCP   app=guestbook           5m
kubernetes     10.100.0.1       <none>        443/TCP    <none>                  1h
redis-master   10.100.75.69     <none>        6379/TCP   app=redis,role=master   8m
redis-slave    10.100.230.200   <none>        6379/TCP   app=redis,role=slave    6m
core@master ~/kubernetes $
已邀请:

demohi - k8s

赞同来自: tobe


自己回复一下

service type 目前有两种,如果使用 gce 的 kubernetes,可以直接使用LoadBalancer类型,gce 会自动帮忙生成一个对外的 ip,并帮你做负载均衡

如果不是在 gce 平台,可以选择使用NodePort的类型,这样会在 node 里面添加一个对外的端口号,可以通过 nodeIP:nodePORT 来访问。可以自己搭建nginx 或者使用云服务商的负载均衡器来做处理。

使用 NodePort 的方式比较麻烦,大家有什么更容易的方案吗

tobe

赞同来自:


目前只是Cluster、LoadBalancer和NodePort三种方式,Cluster只能在集群内访问,LoadBalancer依赖IaaS服务,如果都不适用建议使用NodePort。

赢在行动_37131

赞同来自:


能设置一组能上网的私有IP作为EXTERNAL_IP吗?怎么才能分配到kubectl get svc中?
EXTERNAL_IP只能依赖Iaas分配吗

xiaoping378

赞同来自:


现在用ingress来做

要回复问题请先登录注册