Верно ли, что у меня не может быть двух служб LoadBalancer в кластере докер-десктоп (osx), потому что они обе будут использовать localhost
(и все порты перенаправляются)?
Я создал пример, и последней службе никогда не назначается внешний IP-адрес, но она остается в состоянии pending
. Однако первый доступен на localhost.
> 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
Подробное описание whoareyou-сервиса:
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>
describe service whoareyou-service
? - person mario   schedule 19.12.2019localhost:30024
иlocalhost:32083
с консоли на том же физическом хосте? Я почти уверен, что настольные приложения Docker не могут создать балансировщик нагрузки для служб типа LoadBalancer, поэтому они будут действовать так же, как службы NodePort. - person David Maze   schedule 20.12.2019Minikube
. Посколькуdocker-desktop
не может предоставить реальныйLoadBalancer
, он все еще может имитировать создание службы такого типа с помощьюNodePort
(это легко увидеть по диапазону портов, который он использует). Я почти уверен, что вы не можете использовать тот же IP-адрес, что иExternalIP
службыLoadBalancer
, и если вы создадите еще одинService
такого типа, у вашего рабочего стола докера не останется другого выбора, кроме как использовать ваш локальный хост еще раз. Поскольку он уже используется другимService
, он не может использоваться другим и поэтому остается в состоянии ожидания. - person mario   schedule 20.12.2019LoadBalancer
в облачной среде, каждый раз, когда предоставляется новый IP-адрес, и нет ситуации, когда следующийLoadBalancer
, который вы создаете, получит тот же IP-адрес, который уже используется существующим. По-видимому, здесь он не может использовать какой-либо другой IP-адрес, кроме localhost, и этот уже используется. В любом случае я бы порекомендовал вам просто использоватьNodePort
, если вы хотите открыть свойDeployment
внешнему миру. - person mario   schedule 20.12.2019