Kubernetes выставлять не работает из файла - PullRequest
0 голосов
/ 25 апреля 2020

Если я запускаю команду

kubectl expose deployments/some-app --type=NodePort

, она работает.

Если я запускаю команду

kubectl apply -f expose.yml

Где содержимое файла expose.yml равно

apiVersion: v1
kind: Service
metadata:
  name: some-app
  labels:
    app: some-app
spec:
  type: NodePort
  ports:
    - port: 8080
  selector:
    app: some-app

Я не могу связаться с сервисом.

В чем разница? Почему 2-й подход не работает?

РЕДАКТИРОВАТЬ: Используйте NodePort также в yml

РЕДАКТИРОВАТЬ: Результат команды kubectl expose deployments/some-app --type=NodePort --dry-run -o yaml:

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: some-app
    type: spring-app
  name: some-app
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    name: some-app
  type: NodePort
status:
  loadBalancer: {}

Ответы [ 2 ]

2 голосов
/ 25 апреля 2020

В вашей команде expose вы используете --type=NodePort, но в sv c type=ClusterIP. Если вы хотите увидеть, какая команда expose создана, добавьте --dry-run --o yaml в конце команды. Вы должны увидеть следующее:

apiVersion: v1
kind: Service
metadata:
  labels:
    run: some-app
  name: some-app
spec:
  ports:
  - port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: some-app
  type: NodePort

Примечание: после обсуждения в комментарии вы должны убедиться, что app: some-app существует на pod leve.

0 голосов
/ 25 апреля 2020

Вы можете получить версию службы yaml, созданную вами, с помощью этой команды:

kubectl expose deployments/some-app --type=NodePort

С:

kubectl get service <your-service> -o yaml

И затем сравнить обе версии, ту, которую вы создали с помощью yaml и тот, который вы создали с помощью команды expose.

...