Изменения не регистрируются при доступе к приложению через Node Port i - PullRequest
0 голосов
/ 02 ноября 2019

Я использую minikube

Мой файл развертывания

apiVersion: apps/v1
kind: Deployment
metadata:
  name: phpdeployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: phpapp
  template:
    metadata:
      labels:
        app: phpapp
    spec:
      containers:
      - image: rajendar38/myhtmlapp:latest
        name: php
        ports:
        - containerPort: 80

ingress
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
spec:
  backend:
    serviceName: php-service
    servicePort: 80

this is my service
apiVersion: v1
kind: Service
metadata:
  name: php-service
spec:
  selector:
    app: phpapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 31000
  type: NodePort

простое php-приложение. Я создаю образ docker. Я могу получить доступ обоими способами

После этого я:

  • обновил свое php-приложение
  • , снова создал изображение, нажалв Docker Hub
  • удалил все ресурсы
  • kubectl удалил все --all
  • Затем принудительно применил развертывание и службу

, но с указанием порта узлаЯ могу получить доступ к старому приложению. но при способе Ingress я могу получить доступ к изменениям

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

это проблема с кешем браузера после использования приватной сессии, она работает нормально

0 голосов
/ 05 ноября 2019

Пожалуйста, посмотрите на похожую проблему .

Вы должны знать, что порт контейнера является портом, который слушает контейнер. Порт службы - это порт, на котором служба kubernetes отображается на внутреннем ip кластера и сопоставляется с портом контейнера. Nodeport - это порт, отображаемый на хосте и сопоставленный со службой kubernetes.

NodePort позволяет вам предоставить службу, указав это значение в типе службы. Ingress, с другой стороны, является полностью независимым ресурсом для вашего сервиса. Вы объявляете, создаете и уничтожаете его отдельно для своих услуг. Благодаря сервису типа NodePort вы можете открыть оба порта (31000, 80).

Ваши файлы конфигурации должны выглядеть примерно так:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: phpdeployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: phpapp
  template:
    metadata:
      labels:
        app: phpapp
    spec:
      containers:
      - image: rajendar38/myhtmlapp:latest
        name: php
        command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]
        ports:
        - containerPort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: example-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
        - path: /example
          backend:
            serviceName: php
            servicePort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: php
spec:
  selector:
    app: php
  ports:
    - port: 31000
      targetPort: 80
      protocol: TCP
      name:
  type: NodePort

Затем открыть развертывание:

$ kubectl expose deployment phpdeployment --type=NodePort

Официальная документация: kubernetes-service-nodeport , kubernestes-ingress , kubernetes-развертывание-раскрытие .

...