簡體   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