Служба в недоступном снаружи - PullRequest
0 голосов
/ 01 декабря 2018

У меня проблема с доступностью моего сервиса извне.Прежде всего, вот мои файлы conf yaml:

nginx-pod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  namespace: development
spec:
  selector:
    matchLabels:
      app: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: development
spec:
  type: LoadBalancer
  selector:
    app: my-nginx
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP

metallb-config.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 51.15.41.227-51.15.41.227

Затем я создал кластер.Команда kubectl get all -o wide печатает:

NAME                            READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE
pod/my-nginx-5796dcf6c4-rxl6k   1/1     Running   1          20h   10.244.0.16   scw-7d6c86   
pod/my-nginx-5796dcf6c4-zf7vd   1/1     Running   0          20h   10.244.1.4    scw-7a7908   

NAME                    TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE   SELECTOR
service/nginx-service   LoadBalancer   10.100.63.177   51.15.41.227   80:30883/TCP   54m   app=my-nginx

NAME                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES        SELECTOR
deployment.apps/my-nginx   2         2         2            2           20h   my-nginx     nginx:1.7.9   app=my-nginx

NAME                                  DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES        SELECTOR
replicaset.apps/my-nginx-5796dcf6c4   2         2         2       20h   my-nginx     nginx:1.7.9   app=my-nginx,pod-template-hash=5796dcf6c4

Все в порядке, также kubectl describe service/nginx-service печатает:

Name:                     nginx-service
Namespace:                development
Labels:                   
Annotations:              
Selector:                 app=my-nginx
Type:                     LoadBalancer
IP:                       10.100.63.177
LoadBalancer Ingress:     51.15.41.227
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  30883/TCP
Endpoints:                10.244.0.16:80,10.244.1.4:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason       Age   From                Message
  ----    ------       ----  ----                -------
  Normal  IPAllocated  56m   metallb-controller  Assigned IP "51.15.41.227"

Команда скручивания внутри главного сервера curl 51.15.41.227 печатает Welcome to nginx blablabla.Затем я попытался открыть из другой сети, он не работает, однако я добавил порт узла, он работает curl 51.15.41.227:30883.Все это я делал на голом металле.Я ожидал, что curl 51.15.41.227 с внешнего хоста должен достичь результата.Что я сделал не так?

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Определенно это будет работать с http://51.15.41.227 или 51.15.41.227:80.Вы можете проголосовать, нажав кнопку вверх.

0 голосов
/ 01 декабря 2018

При доступе из внешней сети вы обязательно должны использовать порт узла 30883 (случайным образом назначенный порт).В противном случае он не знает, куда направить запрос.

curl http://51.15.41.227:30883

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...