暴露Nginx容器并查看服务

时间:2020-03-28 17:40:22

标签: docker nginx kubernetes google-cloud-platform

1。) 执行以下命令以生成一个随机数,供以后的步骤使用

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

echo $NUMBER

注意:将句子中的随机数替换为在句子中发现的位置生成的数字。

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

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

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

3。) 首先,您需要将Nginx容器公开给互联网。

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

2 个答案:

答案 0 :(得分:1)

由于端口未通过Pod暴露而无法工作的原因。请运行以下命令,而不是第二个命令。

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

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

答案 1 :(得分:0)

欢迎堆栈溢出!

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

问题说明:

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

在这里,您要在端口mycluster-727上公开名为80的部署,并将其部署到目标端口8080

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但是,您还需要在创建部署时公开容器por。

基于@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图片的测试窗格来访问该服务:

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