Доступ к сервису Kubernetes, преобразованному из Docker Compose - PullRequest
0 голосов
/ 09 мая 2019

Я создал приложение с помощью Docker Compose, которое включало экземпляр Nginx, принимающий соединения через порт 80:

  nginx:
    image: nginx:1.15.12-alpine
    container_name: nginx
    volumes:
      - etc.
    ports:
      - 80:80

Я бы хотел раскрутить это приложение на Kubernetes, работающем на моей локальной машине (macOS). Итак, я запустил kompose convert, задокументировано здесь .

Получено nginx-service.yaml, которое выглядит так:

apiVersion: v1
kind: Service
metadata:
  annotations:
    kompose.cmd: kompose convert
    kompose.version: 1.18.0 ()
  creationTimestamp: null
  labels:
    io.kompose.service: nginx
  name: nginx
spec:
  ports:
  - name: "80"
    port: 80
    targetPort: 80
  selector:
    io.kompose.service: nginx
status:
  loadBalancer: {}

Я запустил kubectl apply со всеми файлами YAML, созданными kompose, а затем kubectl describe svc nginx:

Name:              nginx
Namespace:         myproject
Labels:            io.kompose.service=nginx
Annotations:       kompose.cmd=kompose convert
                   kompose.version=1.18.0 ()
                   kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"v1","kind":"Service","metadata":{"annotations":{"kompose.cmd":"kompose convert","kompose.version":"1.18.0 ()"},"creationTimestamp":null,...
Selector:          io.kompose.service=nginx
Type:              ClusterIP
IP:                172.30.110.242
Port:              80  80/TCP
TargetPort:        80/TCP
Endpoints:         
Session Affinity:  None
Events:            <none>

Однако я не могу получить доступ к веб-серверу, перейдя на http://172.30.110.242:80 на том же компьютере.

Существует документация по доступу к службам, работающим в кластерах . Я новичок в k8s и не знаю, как диагностировать проблему и выбрать правильное решение из перечисленных опций.

Является ли дефектом в kompose то, что он не сгенерировал сопоставимый файл конфигурации службы?

1 Ответ

0 голосов
/ 09 мая 2019

См .:

https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport

Ваш URL "подключения к" с вашего локального компьютера в мир K8 не будет "172.xxx".Вероятно, это будет 192.168.99.100:33333 (номер порта будет другим) .. запустите это:

minikube service myservicename -n "default" --url

посмотрите, что это даст вам

, но в основном,вам нужно «открыть» мир k8 для внешнего мира.

этот yml должен помочь

apiVersion: v1
kind: Service
metadata: 
  name: myservicename
  namespace: mycustomnamespace
  labels: 
    name: myservicemetadatalabel
spec: 
  type: NodePort
  ports:
  - name: myfirstportname
    port: 80
    targetPort: 80    
  selector: 
    myexamplelabelone: mylabelonevalue
    myexamplelabeltwo: mylabeltwovalue

селектор будет ссылаться на настройки вашего контейнера / контейнера.

apiVersion: v1
kind: Pod
metadata:
  name: myfirstpodmetadataname
  namespace: mycustomnamespace
  labels:
    myexamplelabelone: mylabelonevalue
    myexamplelabeltwo: mylabeltwovalue

«селекторы» выходят за рамки этого вопроса ... но вышеизложенное даст вам необходимые хлебные крошки

также см .:

Как выставить k8 pod дляобщедоступный интернет?

...