как включить переадресацию портов в сервисе k8s yaml - PullRequest
0 голосов
/ 13 февраля 2020

Я пытаюсь автоматизировать развертывание модуля и не могу понять, как перенаправить трафик c из кластера на модуль из конфигурации yaml.

Доступ возможен только из localhost, но не при доступе к главному IP. При отдельном применении 'kubectl port-forward --адрес 0.0.0.0 POD LISTEN_PORT: DEST_PORT' это работает.

apiVersion: v1
kind: Service
type:
metadata:
  labels:
    name: app1
  name: app1
spec:
  ports:
  - name: "80"
    port: 8888
    targetPort: 80
  selector:
    name: app1
---
apiVersion: v1
kind: Pod
metadata:
  labels:
    name: app1
  name: app1
spec:
  containers:
  - image: nginx
    name: app1
    ports:
    - containerPort: 80
    resources:
      limits:
        cpu: 500m
        memory: "52428800"
      requests:
        cpu: 250m
        memory: "20971520"
  nodeSelector:
    slave: "one"
  restartPolicy: Never

Ответы [ 3 ]

2 голосов
/ 13 февраля 2020

Kubernetes ServiceTypes позволяет вам указать, какой тип сервиса вы хотите. По умолчанию используется ClusterIP .

ClusterIP : Предоставляет службу для внутреннего IP-адреса кластера. Выбор этого значения делает Сервис доступным только из кластера. Это тип ServiceType по умолчанию.

NodePort : Предоставляет Сервису IP-адрес каждого узла на статическом c порту (NodePort). Служба ClusterIP, к которой маршрутизируется служба NodePort , автоматически создается . Вы сможете связаться со службой NodePort из-за пределов кластера, запросив <NodeIP>:<NodePort>.

Вам следует обновить yaml службы, как показано ниже, чтобы создать NodePort для доступа по NodePort

apiVersion: v1
kind: Service
type:
metadata:
  labels:
    name: app1
  name: app1
spec:
  ports:
  - name: "80"
    port: 8888
    targetPort: 80
  selector:
    name: app1
  type: NodePort
0 голосов
/ 13 февраля 2020

Ingress : предоставляет маршруты HTTP и HTTPS извне кластера для служб внутри кластера. Маршрутизация Traffi c контролируется правилами, определенными на ресурсе Ingress.

    internet
        |
   [ Ingress ]
   --|-----|--
   [ Services ]

Ingress - это не тип службы, а объект, который действует как обратный прокси-сервер и единственная точка входа для вашего сервера. кластер, который направляет запрос к различным службам.

Для создания базового c входа,

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: testsvc
    servicePort: 80
0 голосов
/ 13 февраля 2020

Вам необходимо обновить тип сервиса до NodePort.

type: NodePort

И тогда вы сможете получить доступ к сервису с помощью http://NODE_HOST: NODE_PORT

...