在Kubernetes中运行简单的hello world静态http应用程序

问题描述 投票:0回答:1

我在Dockerhub上有一个简单的Hello World应用程序,我试图在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
apache docker kubernetes
1个回答
1
投票

当您运行一个简单的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云等云。因此,它无法在您的本地minikube中创建任何LoadBalancer。有一些变通方法可以使用你可以在这里找到的externalIPs来实现它 - 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/

如果它不起作用,那么pod本身就出了问题!

© www.soinside.com 2019 - 2024. All rights reserved.