Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes(docker desktop)具有多个负载平衡器服务_Docker_Kubernetes_Docker Desktop - Fatal编程技术网

Kubernetes(docker desktop)具有多个负载平衡器服务

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

docker desktop cluster(osx)上不能有两个LoadBalancer服务,因为它们都使用
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除了再次使用本地主机之外别无选择。因为它已经被一个
服务
使用不能被另一个使用,这就是为什么它仍然处于挂起状态的原因


请注意,如果您在云环境中创建real
LoadBalancer
,则每次提供新的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桌面将别无选择,只能再次使用您的本地主机。因为它已被另一个
    服务
    使用请注意,如果您在云环境中创建real
    LoadBalancer
    ,则每次配置新IP时,您创建的下一个
    LoadBalancer
    不会获得与现有IP相同的IP。显然,在这里,它不能使用任何其他IP,而不是本地主机,这一个已经在使用中。无论如何,如果您想将
    部署
    公开给外部世界,我建议您只需使用
    NodePort