Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 在k8s群集上部署Hello World_Kubernetes_Amazon Eks - Fatal编程技术网

Kubernetes 在k8s群集上部署Hello World

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

我正在尝试在我使用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-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限制。你能在另一个港口试试吗?让我知道结果!