当服务类型为ClusterIP
时,kubernetes服务中外部IP地址选项的用途是什么
答案 0 :(得分:1)
ExternalIP
只是可以从集群外部访问服务的终结点,因此仍可以使用其服务在集群内部访问带有ClusterIP
的{{1}}类型的服务.namespace DNS名称,但现在也可以从其外部端点访问它。例如,您可以将ExternalIP
设置为您的一个k8s节点的IP,或者在该IP上创建集群的入口。
答案 1 :(得分:0)
将服务与type: ClusterIP
一起使用时,它只有群集IP,没有外部IP地址<none>
。
答案 2 :(得分:0)
ClusterIP是Kubernetes中的默认服务类型,它使您只能在群集中 内访问服务。
如果您的服务类型设置为LoadBalancer或NodePort,则会自动创建ClusterIP
,并且LoadBalancer
或NodePort
服务将路由到此{{1 }} IP地址。
新的外部IP地址仅分配为ClusterIP
类型。
在将服务设置为LoadBalancer
时,您也可以使用节点的外部IP地址。但是在这种情况下,您将需要为节点设置额外的防火墙规则,以允许暴露的节点端口进入流量。
答案 3 :(得分:0)
ClusterIP是从IP池分配给服务的唯一IP,用于访问该服务集群的Pod IP仅可在集群内部使用.Cluster IP是kubernetes中的默认服务类型。
kubectl expose deployment nginx --port=80 --target-port=80 --type=LoadBalancer
以上示例将创建一个具有外部IP和群集IP的服务。 对于负载均衡器,节点端口服务,可以通过externalIP从其他群集访问该服务
答案 4 :(得分:0)
只需添加到coolinuxoid答案即可。我正在与GKE合作,并且根据他们的documentation,当您添加类型为ClusterIP的服务时,他们提供了通过以下方式进行访问:
访问您的服务 列出您正在运行的Pod:
kubectl获得豆荚
在输出中,复制以以下开头的Pod名称之一 我的部署。
NAME READY STATUS重启年龄 my-deployment-dbd86c8c4-h5wsf 1/1正在运行0 2m51s
将shell放入您正在运行的容器之一:
kubectl exec -it pod-name-sh
其中pod-name是我部署中的其中一个Pod的名称。
在您的外壳中,安装curl:
apk添加--no-cache curl
在容器中,通过使用群集向服务请求 IP地址和端口80。请注意,80是端口字段的值 您的服务。这是您用作客户端的端口 服务。
curl群集IP:80 因此,尽管您可能会找到一种从外部路由到此类服务的方法,但这并不是推荐的/常规的方法。
作为更好的选择,可以使用:
LoadBalancer
,如果您正在从事具有大量服务和详细要求的项目。NodePort
,如果您正在从事不需要云原生负载平衡的小型项目,并且您不介意直接使用节点的IP将其映射到服务。顺便提一句,同一文档确实建议这样做(亲自测试;像超级按钮一样工作):如果群集中的节点具有外部IP地址,请找到 您的节点之一的外部IP地址:
kubectl获取节点-输出宽
输出显示您节点的外部IP地址:
名称状态角色年龄版本外部IP gke-svc -...就绪1h v1.9.7-gke.6 203.0.113.1
并非所有群集都具有节点的外部IP地址。例如, 专用群集中的节点没有外部IP地址。
创建防火墙规则以允许节点端口上的TCP通信:
gcloud计算防火墙规则创建test-node-port --allow tcp:节点端口
其中:node-port是服务的nodePort字段的值。