Запуск простого приложения «Привет, мир, статическое http» в Куберне - PullRequest
0 голосов
/ 18 апреля 2019

У меня есть простое приложение Hello World на Dockerhub, и я пытаюсь запустить его в Kubernetes, но не повезло, ничего не появляется.

Dockerfile:

FROM centos:7

RUN  yum install httpd -y

RUN echo "Hello World" > /var/www/html/index.html

RUN chown -R apache:apache /var/www/html

EXPOSE 80

CMD  [ "/usr/sbin/httpd", "-D", "FOREGROUND" ]

Kubernetes YAML:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ingress-test
  labels:
    app: hello-world
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-world
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: helloworld
        image: 56789/world:v1
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: hello-world
spec:
  selector:
    app: hello-world
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 80
  type: LoadBalancer

1 Ответ

1 голос
/ 18 апреля 2019

Поскольку вы работаете с простым приложением hello world, я предполагаю, что вы можете использовать Minikube, а вы не делаете это в облаке.

Удалите сервис и создайте сервис, подобный этому. Теперь вы можете получить доступ к вашему приложению http://<minikube-ip>:30080

apiVersion: v1
kind: Service
metadata:
  name: hello-world
spec:
  selector:
    app: hello-world
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 30080
  type: NodePort

LoadBalancer Сервис для облачных сервисов, таких как AWS / Azure / Google Cloud и т. Д. Так что он не может создать никакой LoadBalancer в вашем локальном мини-кубе. Есть обходные пути, чтобы заставить его работать с использованием внешних IP-адресов, которые вы можете найти здесь - https://kubernetes.io/docs/concepts/services-networking/service/


Чтобы устранить эту проблему, предполагая, что модуль pod работает и соответствующие порты открыты, создайте службу ClusterIP.

apiVersion: v1
kind: Service
metadata:
  name: hello-world
spec:
  selector:
    app: hello-world
  ports:
  - protocol: "TCP"
    port: 80
    targetPort: 80
  type: ClusterIP

Теперь сначала проверьте, доступно ли ваше приложение внутри кластера.

kubectl run busybox --image=busybox --restart=Never -it --rm -- wget -O- http://hello-world/

Если это не работает, значит, что-то не так, сам модуль!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...