Kubernetes 在k8s群集上部署Hello World
我正在尝试在我使用eksctl创建的EKS集群上部署一个“Hello World”应用程序。我有2个吊舱运行集群,我正在遵循位于的教程。我使用以下yaml文件创建了一个部署:Kubernetes 在k8s群集上部署Hello World,kubernetes,amazon-eks,Kubernetes,Amazon Eks,我正在尝试在我使用eksctl创建的EKS集群上部署一个“Hello World”应用程序。我有2个吊舱运行集群,我正在遵循位于的教程。我使用以下yaml文件创建了一个部署: apiVersion: apps/v1 kind: Deployment metadata: name: hello-world-deployment labels: app: hello-world spec: selector: matchLabels: app: hello-w
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
我无法在本地主机上访问它。我相信我错过了一个步骤,因为我已经在一个LinuxEC2实例上创建了集群&部署,我使用Putty将其SSH连接到其中,并且我正在访问我的Windows机器上的localhost。任何关于我如何联系的建议都将不胜感激。目前,我在尝试连接到时收到以下信息http://localhost:30081/
正如您所提到的,问题是您试图访问端口30081处的本地计算机,但您创建的POD位于云中的EKS集群中。如果您想尝试应用程序是否正常工作,您可以使用SSH连接到worker节点,就像您所做的那样,并使用如下命令
curl本地主机:30081
该命令将返回您在控制台中运行的网站(没有任何格式)
我认为对你来说,最好的办法是使用命令。此命令将把一个本地机器端口绑定到POD的一个端口中
下面是命令的格式
kubectl-port-forward-POD-NAME-current-RUNNING-IN-CLUSTER-UNUSED-port-IN-YOUR-PC:APPLICATION-port
下面是一个如何使用它并检查它是否正常工作的示例
kubectl端口转发hello-world-xxxxxx-xxxxx 8000:80
本地主机:8000
请注意,我没有使用服务端口访问pod。这个工具非常适合调试
另一种方法可能是使用安全组打开端口30081,并攻击工作节点的IP,但我认为这是不安全的,而且还有很多额外的步骤。你应该看看这两种类型之间的区别
如果你对我的答案有任何疑问,请告诉我。我不是专家,我可能错了
而且英语不是我的第一语言
干杯正如您所提到的,问题是您试图访问端口30081处的本地计算机,但您创建的吊舱位于云中的EKS集群中。如果您想尝试应用程序是否正常工作,您可以使用SSH连接到worker节点,就像您所做的那样,并使用如下命令
curl本地主机:30081
该命令将返回您在控制台中运行的网站(没有任何格式)
我认为对你来说,最好的办法是使用命令。此命令将把一个本地机器端口绑定到POD的一个端口中
下面是命令的格式
kubectl-port-forward-POD-NAME-current-RUNNING-IN-CLUSTER-UNUSED-port-IN-YOUR-PC:APPLICATION-port
下面是一个如何使用它并检查它是否正常工作的示例
kubectl端口转发hello-world-xxxxxx-xxxxx 8000:80
本地主机:8000
请注意,我没有使用服务端口访问pod。这个工具非常适合调试
另一种方法可能是使用安全组打开端口30081,并攻击工作节点的IP,但我认为这是不安全的,而且还有很多额外的步骤。你应该看看这两种类型之间的区别
如果你对我的答案有任何疑问,请告诉我。我不是专家,我可能错了
而且英语不是我的第一语言
干杯等等,只有在工作节点本身上,才能使用locahost访问此服务节点端口。否则,您需要使用kubectl端口转发或kubectl proxywait,只有当您位于工作节点本身时,才能使用locahost访问此服务nodeport。否则您需要使用kubectl port forward或kubectl proxyHi@Manuel Chichi,谢谢您的回复。我能够从我的worker节点卷曲localhost:30081,并且确实完成了我希望的应用程序代码。我通过运行以下命令来设置端口转发:kubectl port forward hello-world-xxxxxx-xxxxx 30081:80然后我得到以下响应:从127.0.0.1:30081转发->80从[::1]:30081->80转发,然后由于连接处于活动状态而挂起。但是,当我在Windows浏览器上访问“localhost”时,仍然会出现“无法访问站点”错误。我还缺少什么吗?你好@DaveMichaels。您是否像“localhost:30081”这样在浏览器中访问站点,对吗?你用curl命令试过了吗?port forward命令是否显示任何其他日志?如果不是,则表示您没有正确访问转发的端口。我不确定这是否是Windows限制。你能在另一个港口试试吗?让我知道结果!你好,Manuel Chichi,谢谢你的回复。我能够从我的worker节点卷曲localhost:30081,并且确实完成了我希望的应用程序代码。我通过运行以下命令来设置端口转发:kubectl port forward hello-world-xxxxxx-xxxxx 30081:80然后我得到以下响应:从127.0.0.1:30081转发->80从[::1]:30081->80转发,然后由于连接处于活动状态而挂起。但是,当我在Windows浏览器上访问“localhost”时,仍然会出现“无法访问站点”错误。我还缺少什么吗?你好@DaveMichaels。您是否像“localhost:30081”这样在浏览器中访问站点,对吗?你用curl命令试过了吗?port forward命令是否显示任何其他日志?如果不是,则表示您没有正确访问转发的端口。我不确定这是否是Windows限制。你能在另一个港口试试吗?让我知道结果!