【问题标题】:Exposing Nginx container and View the Service暴露 Nginx 容器并查看服务
【发布时间】:2020-07-09 06:49:54
【问题描述】:

1.) 执行以下命令生成一个随机数,用于后面的步骤

NUMBER=$[ ( $RANDOM % 1000 ) + 1 ]

echo $NUMBER

注意:将句子中的随机数替换为您在任何地方找到该句子时生成的数字。

您的任务是启动一个由 Kubernetes Cluster 管理的 Kubernetes Engine,名称为 mycluster-your random number,并将其配置为运行 2 个节点。

2.) 运行和部署容器 在这里,您需要从 Cloud Shell 启动 Nginx 容器的单个实例(版本为 1.10.0)。

执行以下命令查看nginx容器中正在运行的pod。**

3.) 首先,您需要将 Nginx 容器公开到 Internet。

Kubernetes 将使用具有公共 IP 地址的外部负载均衡器创建服务。您可以通过执行以下命令来查看您的服务。

kubectl get services

现在,您将获得 Nginx 集群的外部 IP 地址。打开新的 Web 浏览器选项卡并粘贴集群外部 IP 地址。你应该会得到 Nginx 浏览器的默认主页。

到目前为止,我已经使用了以下代码,但是 lb 不起作用:

gcloud container clusters create mycluster-5 --zone=us-central1-a
kubectl create deployment mycluster --image=gcr.io/cloud-marketplace/google/nginx1
kubectl set image deployment nginx nginx=nginx:1.9.1
kubectl expose deployment mycluster-727 --type LoadBalancer --port 80 --target-port 8080
service/mycluster-727 exposed

【问题讨论】:

标签: docker nginx kubernetes google-cloud-platform


【解决方案1】:

它不工作的原因是 Pod 没有暴露端口。请运行以下命令而不是第二个命令。

kubectl run mycluster --image=gcr.io/cloud-marketplace/google/nginx1 --port=80

此命令应创建部署并在 80 上公开containerPort,以及您的服务将能够命中。

【讨论】:

    【解决方案2】:

    欢迎来到 Stack Overflow!

    您发布的命令不起作用,因为您有错字并且容器端口不匹配。

    问题说明:

    在这里,您正在创建一个名为 mycluster 的新部署,但您没有公开任何端口。 kubectl create deployment mycluster --image=gcr.io/cloud-marketplace/google/nginx1

    在这里,您将在端口 80 和目标端口 8080 上公开名为 mycluster-727 的部署:

    kubectl expose deployment mycluster-727 --type LoadBalancer --port 80 --target-port 8080

    在这里,您在不同的部署nginx 上设置图像,并使用1.10.0 询问的不同版本: kubectl set image deployment nginx nginx=nginx:1.9.1

    解决问题

    我查过了,图片gcr.io/cloud-marketplace/google/nginx1nginx:1.10.0都使用端口80来暴露应用程序,所以改为使用--targer-port=8080你需要使用端口80但是 您还需要在创建部署时公开容器端口。

    基于@nischay goayl 的回答,以下命令将创建一个部署并在端口 80 上公开: kubectl run mycluster --image=nginx:1.10.0 --port=80

    然后,创建一个公开应用程序的服务: kubectl expose deployment mycluster --type LoadBalancer --port 80 --target-port 80

    等待EXTERANL-IP 并尝试联系您的应用程序。

    如果您想内部测试,请使用带有curl 图像的测试 pod 来访问服务:

    apiVersion: v1
    kind: Pod
    metadata:
      name: curl
      namespace: default
    spec:
      containers:
      - name: curl
        image: curlimages/curl
        command:
          - sleep
          - "3600"
        imagePullPolicy: IfNotPresent
      restartPolicy: Always
    

    然后使用命令:

    kubectl exec -it curl -- curl -IL http://mycluster

    回复:

    HTTP/1.1 200 OK
    Server: nginx/1.10.0
    Date: Mon, 30 Mar 2020 09:30:07 GMT
    Content-Type: text/html
    Content-Length: 612
    Last-Modified: Tue, 26 Apr 2016 15:17:57 GMT
    Connection: keep-alive
    ETag: "571f86a5-264"
    Accept-Ranges: bytes
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-25
      • 2016-02-11
      • 2021-07-16
      • 2019-02-24
      相关资源
      最近更新 更多