Блоки балансировки нагрузки - PullRequest
0 голосов
/ 16 октября 2019

У меня есть кластер ранчеров с 1 узлом, локальный ip: 10.39.93.180
Я запускаю модуль с 3 репликациями и балансировщик нагрузки с ExternalIp: 10.39.93.180
Могу получить доступ к порту модуля, но не могу получить доступ к балансировщику нагрузки.

Под описанием.

Name:           development-review-inventory-api-66b6ccfc44-jm59c
Namespace:      development-review-inventory
Priority:       0
Node:           10.39.93.185/10.39.93.185
Start Time:     Wed, 16 Oct 2019 01:27:59 -0400
Labels:         pod-template-hash=66b6ccfc44
                run=development-review-inventory-api
Annotations:    cni.projectcalico.org/podIP: 10.42.0.13/32
Status:         Running
IP:             10.42.0.13
IPs:            <none>
Controlled By:  ReplicaSet/development-review-inventory-api-66b6ccfc44
Containers:
  development-review-inventory-api:
    Container ID:   docker://103d34497d590cdb391c5c4959b2f308fbacf9abf5e2042314be9583f9cf5dd1
    Image:          10.39.93.29:5000/development-review-inventory-api
    Image ID:       docker-pullable://10.39.93.29:5000/development-review-inventory-api@sha256:b54f5c6e499fb1b9981c97fb00f20a38b75c87c493551d1833928b9e78a1260b
    Port:           8510/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Wed, 16 Oct 2019 01:28:00 -0400
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8ptvb (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  default-token-8ptvb:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-8ptvb
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age    From                   Message
  ----    ------     ----   ----                   -------
  Normal  Scheduled  9m43s  default-scheduler      Successfully assigned development-review-inventory/development-review-inventory-api-66b6ccfc44-jm59c to 10.39.93.185
  Normal  Pulling    9m42s  kubelet, 10.39.93.185  Pulling image "10.39.93.29:5000/development-review-inventory-api"
  Normal  Pulled     9m42s  kubelet, 10.39.93.185  Successfully pulled image "10.39.93.29:5000/development-review-inventory-api"
  Normal  Created    9m42s  kubelet, 10.39.93.185  Created container development-review-inventory-api
  Normal  Started    9m42s  kubelet, 10.39.93.185  Started container development-review-inventory-api

Модуль доступа 8510

<code>[root@localhost inventory-api]# k exec -it -n development-review-inventory   development-review-inventory-api-66b6ccfc44-n4wks -- curl 0.0.0.0:8510
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot GET /

LoadBalancer config

[root@localhost inventory-api]# k get svc -n development-review-inventory   development-review-inventory-api -o=yaml --export
Flag --export has been deprecated, This flag is deprecated and will be removed in future.
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    run: development-review-inventory-api
  name: development-review-inventory-api
  selfLink: /api/v1/namespaces/development-review-inventory/services/development-review-inventory-api
spec:
  externalIPs:
  - 10.39.93.180
  externalTrafficPolicy: Cluster
  ports:
  - nodePort: 31717
    port: 8510
    protocol: TCP
    targetPort: 8510
  selector:
    run: development-review-inventory-api
  sessionAffinity: None
  type: LoadBalancer
status:
  loadBalancer: {}

Path SVC внешний IP

kubectl patch svc -n development-review-inventory   development-review-inventory-api -p '{"spec":{"externalIPs":["10.39.93.180"]}}'

get SVC

[root@localhost inventory-api]# k get svc -n development-review-inventory
NAME                               TYPE           CLUSTER-IP   EXTERNAL-IP    PORT(S)          AGE
development-review-inventory-api   LoadBalancer   10.43.52.1   10.39.93.180   8510:31717/TCP   15m

Невозможно получить доступ через балансировщик

[root@localhost inventory-api]# curl 10.39.93.180:31717
curl: (7) Failed connect to 10.39.93.180:31717; Connection refused

Ответы [ 2 ]

0 голосов
/ 18 октября 2019

Я устанавливаю кластер ранчеров k8s на голое железо, и он не поддерживает тип SVC: LoadBalancer, как облачный провайдер (AWS, GCL ...). Нужно установить https://metallb.universe.tf/, чтобы выполнить работу без каких-либо изменений.

Kubernetes не предлагает реализацию сетевых балансировщиков нагрузки (сервисов типа LoadBalancer) для кластеров с нуля. Все реализации Network LB, с которыми поставляется Kubernetes, представляют собой связующий код, который обращается к различным платформам IaaS (GCP, AWS, Azure…). Если вы не работаете на поддерживаемой платформе IaaS (GCP, AWS, Azure ...), LoadBalancers будет оставаться в состоянии «ожидания» неопределенно долго при создании.

0 голосов
/ 16 октября 2019

Вы должны получить к нему доступ через открытый порт, попробуйте открыть

10.39.93.180:8501 

Будет хорошо, если вы добавите один открытый URI в это приложение (если ему нужен какой-либо токен аутентификации), а затем вы можетенажмите его маршрут, чтобы проверить ответ

10.39.93.180:8501/publicURI

Мне нравится это для моих приложений, и он отлично работает

...