Как создать сервис на миникубе с конфигурацией yaml, который доступен с хоста?

Как правильно написать конфигурацию yaml для модуля и службы kubernetes в кластере minikube с драйвером на докере с одним требованием: 80 портов контейнера должны быть доступны с хоста. Решение с nodePort не работает должным образом:

 type: NodePort 
 ports:
  - port: 80
    targetPort: 8006
  selector:
    app: blogapp

Ярлык приложения: blogapp установлен на контейнере. Можете ли вы показать правильную конфигурацию для образа nginx, например, с портом, доступным с хоста.

1 ответ

Вы должны создать развертывание Kubernetes вместо создания NodePort, Как только вы создадите развертывание (которое также автоматически создаст ReplicaSet и Pod), вы можете expose Это. blogapp по умолчанию не будет доступен для внешнего мира, поэтому вы должны предоставить его, если хотите иметь доступ к нему вне кластера.

Экспонирование развертывания автоматически создаст service также.

deployment.yml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: blogapp
  labels:
    app: blogapp
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      labels:
        app: blogapp
    spec:
      containers:
      - image: <YOUR_NGINX_IMAGE>
        name: blogapp
        ports:
        - containerPort: 8006
        resources: {}
      restartPolicy: Always
status: {}

Создать развертывание

kubectl create -f deployment.yml

Выставить развертывание

kubectl expose deployment blogapp --name=blogapp --type=LoadBalancer --target-port=8006

Получить выставленный URL

minikube service blogapp --url

Вы можете использовать следующую конфигурацию:

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: blog-app-server-instance
  labels:
    app: blog-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: blog-app
  template:
    metadata:
      labels:
        app: blog-app
    spec:
      containers:
      - name: blog-app-server-instance
        image: blog-app-server
        ports:
        - containerPort: 8006
---
apiVersion: v1
kind: Service
metadata:
  name: blog-app-service
  labels:
    app: blog-app
spec:
  selector:
    app: blog-app
  type: NodePort
  ports:
  - port: 80
    nodePort: 31364
    targetPort: 8006
    protocol: TCP
    name: http

Я думаю ты пропал spec.ports[0].nodePort.

Другие вопросы по тегам