[英]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.