Kubernetes(docker desktop)具有多个负载平衡器服务
docker desktop cluster(osx)上不能有两个LoadBalancer服务,因为它们都使用Kubernetes(docker desktop)具有多个负载平衡器服务,docker,kubernetes,docker-desktop,Docker,Kubernetes,Docker Desktop,docker desktop cluster(osx)上不能有两个LoadBalancer服务,因为它们都使用localhost(并且所有端口都被转发),这是真的吗 我创建了一个示例,后一个服务从未分配过外部IP地址,而是处于挂起状态。但是,前者可以在本地主机上访问 > kubectl get all NAME READY STATUS RESTARTS AGE pod/whoami-dep
localhost
(并且所有端口都被转发),这是真的吗
我创建了一个示例,后一个服务从未分配过外部IP地址,而是处于挂起状态。但是,前者可以在本地主机上访问
> kubectl get all
NAME READY STATUS RESTARTS AGE
pod/whoami-deployment-9f9c86c4f-l5lkj 1/1 Running 0 28s
pod/whoareyou-deployment-b896ddb9c-lncdm 1/1 Running 0 27s
pod/whoareyou-deployment-b896ddb9c-s72sc 1/1 Running 0 27s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 95s
service/whoami-service LoadBalancer 10.97.171.139 localhost 80:30024/TCP 27s
service/whoareyou-service LoadBalancer 10.97.171.204 <pending> 80:32083/TCP 27s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/whoami-deployment 1/1 1 1 28s
deployment.apps/whoareyou-deployment 2/2 2 2 27s
NAME DESIRED CURRENT READY AGE
replicaset.apps/whoami-deployment-9f9c86c4f 1 1 1 28s
replicaset.apps/whoareyou-deployment-b896ddb9c 2 2 2 27s
>kubectl获得全部
名称就绪状态重新启动
pod/whoami-deployment-9f9c86c4f-l5lkj 1/1运行0 28秒
pod/whoareyou-deployment-b896ddb9c-LNCMD 1/1运行0 27秒
pod/whoareyou-deployment-b896ddb9c-s72sc 1/1运行0 27秒
名称类型CLUSTER-IP外部IP端口年龄
service/kubernetes ClusterIP 10.96.0.1 443/TCP 95s
服务/whoami服务负载平衡器10.97.171.139本地主机80:30024/TCP 27s
服务/您是谁服务负载平衡器10.97.171.204 80:32083/TCP 27s
姓名就绪最新可用年龄
deployment.apps/whoami-deployment 1/1 28s
deployment.apps/whoareyou-deployment 2/2 27s
名称所需的当前就绪年龄
replicaset.apps/whoami-deployment-9f9c86c4f 1 28s
replicaset.apps/whoareyou-deployment-b896ddb9c 2 27s
您的服务对象的详细状态:
kubectl describe service whoareyou-service
Name: whoareyou-service
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"whoareyou-service","namespace":"default"},"spec":{"ports":[{"name...
Selector: app=whoareyou
Type: LoadBalancer
IP: 10.106.5.8
Port: http 80/TCP
TargetPort: 80/TCP
NodePort: http 30333/TCP
Endpoints: 10.1.0.209:80,10.1.0.210:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
kubectl描述服务您为谁服务
姓名:你为谁服务
名称空间:默认值
标签:
注释:kubectl.kubernetes.io/last-applicated-configuration:
{“apiVersion”:“v1”,“种类”:“服务”,“元数据”:{“注释”:{},“名称”:“whoareyou服务”,“命名空间”:“默认”},“规范”:{“端口”:[{“名称…”。。。
选择器:app=你是谁
类型:负载平衡器
IP:10.106.5.8
端口:http 80/TCP
目标端口:80/TCP
节点端口:http 30333/TCP
终点:10.1.0.209:80,10.1.0.210:80
会话关联:无
外部流量策略:群集
活动:
我决定复制我的评论,因为它们部分解释了问题,并用它们制作了一个社区Wiki
答案,以便社区能够更清晰地看到和进行可能的进一步编辑:
它的工作方式可能与Minikube完全相同。由于docker desktop无法提供真正的负载平衡器
,因此它仍然可以使用节点端口
“模拟”创建此类服务
(从它使用的端口范围可以很容易地看出)。我很确定您不能使用与负载平衡器服务的外部IP
相同的IP地址,如果您再创建一个此类服务,您的docker desktop除了再次使用本地主机之外别无选择。因为它已经被一个服务使用不能被另一个使用,这就是为什么它仍然处于挂起状态的原因
请注意,如果您在云环境中创建realLoadBalancer
,则每次提供新的IP时,您创建的下一个LoadBalancer
都不会获得与现有IP相同的IP。显然,在这里,它不能使用任何其他IP,而不是localhost
中的一个,并且这个IP已经存在正在使用中。无论如何,如果您想将部署
公开给外部世界,我建议您只需使用NodePort
。考虑改用Ingress controller
基本上,安装docker desktop后需要三个步骤:
本地智能卡证书
本地环境的SSL证书
安装入口控制器
此处详细说明:您能否描述服务您为谁提供服务
?您能否从同一物理主机上的控制台访问两个节点端口localhost:30024
和localhost:32083
?我很确定Docker桌面应用程序实际上无法为LoadBalancer类型的服务和服务生成负载平衡器因此,它们的行为就像NodePort服务一样。@DavidMaze你的意思是像Minikube一样,它根本不支持负载平衡器?但是,不,我不能访问它们。它的工作方式可能与Minikube
中的工作方式完全相同。docker desktop
无法提供真正的负载平衡器
它仍然可以“模拟”“使用NodePort
创建此类服务(从它使用的端口范围可以很容易地看到)。我很确定您不能使用与负载平衡器
服务的ExternalIP
相同的IP地址,如果您再创建一个此类服务
,您的docker桌面将别无选择,只能再次使用您的本地主机。因为它已被另一个服务
使用请注意,如果您在云环境中创建realLoadBalancer
,则每次配置新IP时,您创建的下一个LoadBalancer
不会获得与现有IP相同的IP。显然,在这里,它不能使用任何其他IP,而不是本地主机,这一个已经在使用中。无论如何,如果您想将部署
公开给外部世界,我建议您只需使用NodePort
。