kubectl get services结果集中的外部IP列为空

时间:2016-04-19 03:42:19

标签: amazon-web-services ip kubernetes

我使用以下配置文件创建了服务:

{
   "kind":"Service",
   "apiVersion":"v1",
   "metadata":{
      "name":"my-service",
      "labels":{
         "app":"my-service"
      }
   },
   "spec":{
      "ports": [
         {
           "port":8080,
           "targetPort":"http-server"
         }
      ],
      "selector":{
         "app":"my-service"
      },
      "type": "LoadBalancer"
   }
}

执行以下命令:

$ kubectl create -f my-service.json

            service "my-service" created

然后我想查看服务的外部地址:

$ kubectl get services
NAME             CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
my-service   10.0.203.169                 8080/TCP   3m
kubernetes       10.0.0.1       <none>        443/TCP    32m

在kubernetes应用程序的例子中,它说应该有一个“外部IP”列,它被设置:

$ kubectl get services
NAME              CLUSTER_IP       EXTERNAL_IP       PORT(S)       SELECTOR               AGE
guestbook         10.0.217.218     146.148.81.8      3000/TCP      app=guestbook          1h
redis-master      10.0.136.3       <none>            6379/TCP      app=redis,role=master  1h
redis-slave       10.0.21.92       <none>            6379/TCP      app-redis,role=slave   1h
...

kubectl事件未显示有关负载均衡器和服务的信息。

可能是什么问题?

如果有帮助,我正在使用AWS。

顺便说一下。如果我查看AWS控制台,我可以看到Load Balancer的DNS名称并连接到它。

2 个答案:

答案 0 :(得分:2)

外部IP可能需要几分钟才能显示,因为云提供商(在这种情况下为EC2)需要一段时间才能为您配置负载均衡器。

如果几分钟后它没有出现,请运行kubectl get events以查看哪些内容出错。

答案 1 :(得分:0)

如果您的输出看起来不像示例输出,那么您最有可能使用较早版本的kubectl(人类友好的输出随着时间的推移而变化,变得更加人性化)。检查您的kubectl版本,如果它不是最新版本(1.2.0或更新版本),请获取更新版本。

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.0", GitCommit:"5cb86ee022267586db386f62781338b0483733b3", GitTreeState:"clean"}
Server Version: version.Info{Major:"1", Minor:"2", GitVersion:"v1.2.2", GitCommit:"528f879e7d3790ea4287687ef0ab3f2a01cc2718", GitTreeState:"clean"}