繁体   English   中英

在 k8s 集群上部署 Hello World

[英]Deploying Hello World on k8s cluster

我正在尝试在使用 eksctl 创建的 EKS 集群上部署“Hello World”应用程序。 我的集群使用 2 个 pod 运行,并且正在遵循位于https://shahbhargav.medium.com/hello-world-on-kubernetes-cluster-6bec6f4b1bfd的教程。 我使用以下 yaml 文件创建了一个部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-world-deployment
  labels:
    app: hello-world
spec:
  selector:
    matchLabels:
      app: hello-world
  replicas: 2
  template:
    metadata:
      labels:
        app: hello-world
    spec:
      containers:
      - name: hello-world
        image: bhargavshah86/kube-test:v0.1
        ports:
        - containerPort: 80
        resources:
          limits:
            memory: 256Mi
            cpu: "250m"
          requests:
            memory: 128Mi
            cpu: "80m"
---
apiVersion: v1
kind: Service
metadata:
  name: hello-world
spec:
  selector:
    app: hello-world
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      nodePort: 30081   
  type: NodePort

然后我通过运行以下命令创建了部署:

kubectl create -f hello-world.yaml

我无法在本地主机上访问它。 我相信我错过了一个步骤,因为我已经在 Linux EC2 实例上创建了集群和部署,我使用 Putty 进入了 SSH 并且我正在我的 ZAEA23489CE3AA9B6406EBB28E0CDA43Z 机器上访问本地主机。 任何我如何连接的建议将不胜感激。 目前我在尝试连接到 http://localhost:30081/ 时收到以下信息

在此处输入图像描述

正如您所提到的,问题在于您试图通过端口 30081 访问本地计算机,但您创建的 pod 位于云中的 EKS 集群中。 如果您想尝试该应用程序是否正常工作,您可以将 SSH 像您所做的那样进入工作节点,并像这样使用curl命令。

curl localhost:30081

该命令将返回您在控制台中运行的网站(没有任何格式)。

我认为在您的情况下,最好的方法是使用kubectl port-forward命令。 此命令会将您的本地计算机端口之一绑定到 pod 的端口之一。

这是命令的格式。

kubectl port-forward POD-NAME-CURRENTLY-RUNNING-IN-CLUSTER UNUSED-PORT-IN-YOUR-PC:APPLICATION-PORT

这是一个如何使用它并检查它是否有效的示例。

kubectl port-forward hello-world-xxxxxx-xxxxx 8000:80

curl localhost:8000

注意这里我没有使用服务端口来访问 pod。 这个工具非常适合调试!

另一种方法可能是使用安全组打开端口 30081 并访问工作节点的 IP,但我认为这是不安全的,并且还有很多额外的步骤。 您应该检查一下服务类型之间的区别。

如果您对我的回答有任何疑问,请告诉我。 我不是专家,我可能是错的!

此外,英语不是我的第一语言。

干杯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM