Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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
Docker 公开你的应用程序';t在本地kubernetes集群上工作_Docker_Kubernetes - Fatal编程技术网

Docker 公开你的应用程序';t在本地kubernetes集群上工作

Docker 公开你的应用程序';t在本地kubernetes集群上工作,docker,kubernetes,Docker,Kubernetes,我正在运行作为Docker Desktop一部分安装的本地kubernetes群集 kubectl version Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean

我正在运行作为Docker Desktop一部分安装的本地kubernetes群集

kubectl version
Client Version: version.Info{Major:"1", Minor:"18", GitVersion:"v1.18.0", GitCommit:"9e991415386e4cf155a24b1da15becaa390438d8", GitTreeState:"clean", BuildDate:"2020-03-25T14:58:59Z", GoVersion:"go1.13.8", Compiler:"gc", Platform:"windows/amd64"}
Server Version: version.Info{Major:"1", Minor:"16+", GitVersion:"v1.16.6-beta.0", GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", GitTreeState:"clean", BuildDate:"2020-01-15T08:18:29Z", GoVersion:"go1.13.5", Compiler:"gc", Platform:"linux/amd64"}
我正在通过运行

kubectl create deployment firstkube-deployment --image=firstkube:v1
deployment.apps/firstkube-deployment created
然后通过

kubectl expose deployment firstkube-deployment --type=NodePort --port=8080
service/firstkube-deployment exposed
kubectl descripe services命令返回以下内容

kubectl describe services/firstkube-deployment
Name:                     firstkube-deployment
Namespace:                default
Labels:                   app=firstkube-deployment
Annotations:              <none>
Selector:                 app=firstkube-deployment
Type:                     NodePort
IP:                       10.107.205.123
LoadBalancer Ingress:     localhost
Port:                     <unset>  8080/TCP
TargetPort:               8080/TCP
NodePort:                 <unset>  31448/TCP
Endpoints:                10.1.0.8:8080
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>
kubectl get services/firstkube-deployment
NAME                   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
firstkube-deployment   NodePort   10.96.23.130   <none>        80:32001/TCP   32s
kubectl描述服务/firstkube部署
名称:firstkube部署
名称空间:默认值
标签:app=firstkube部署
注释:
选择器:app=firstkube部署
类型:节点端口
IP:10.107.205.123
LoadBalancer入口:本地主机
端口:8080/TCP
目标端口:8080/TCP
节点端口:31448/TCP
终点:10.1.0.8:8080
会话关联:无
外部流量策略:群集
活动:
从浏览器发送的请求失败,原因是 此页面不工作 127.0.0.1未发送任何数据。 错误\u空\u响应

如果我试图使用api代理访问我的应用程序,请 我能够得到回复,应用程序正在运行

我在这篇文章中尝试了建议的解决方案 这没用

还提供播客信息

kubectl describe pods
Name:         firstkube-deployment-6778f8d74-qhgz2
Namespace:    default
Priority:     0
Node:         docker-desktop/192.168.65.3
Start Time:   Sat, 27 Jun 2020 18:30:38 -0400
Labels:       app=firstkube-deployment
              pod-template-hash=6778f8d74
Annotations:  <none>
Status:       Running
IP:           10.1.0.4
IPs:
  IP:           10.1.0.4
Controlled By:  ReplicaSet/firstkube-deployment-6778f8d74
Containers:
  firstkube:
    Container ID:   docker://1662d883b9f049a5e4fa0eab9283e2eefdfac80b0ce95ac6db02c89d9357cf18
    Image:          firstkube:v2
    Image ID:       docker://sha256:78332407ac919779bc6fb331b955bcdd0183452a8e699c8552c6cbca05978c42
    Port:           <none>
    Host Port:      <none>
    State:          Running
      Started:      Sat, 27 Jun 2020 18:30:39 -0400
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-8tfz2 (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  default-token-8tfz2:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-8tfz2
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type    Reason     Age   From                     Message
  ----    ------     ----  ----                     -------
  Normal  Scheduled  10m   default-scheduler        Successfully assigned default/firstkube-deployment-6778f8d74-qhgz2 to docker-desktop
  Normal  Pulled     10m   kubelet, docker-desktop  Container image "firstkube:v2" already present on machine
  Normal  Created    10m   kubelet, docker-desktop  Created container firstkube
  Normal  Started    10m   kubelet, docker-desktop  Started container firstkube
kubectl描述吊舱
名称:firstkube-deployment-6778f8d74-qhgz2
名称空间:默认值
优先级:0
节点:docker desktop/192.168.65.3
开始时间:2020年6月27日星期六18:30:38-0400
标签:app=firstkube部署
pod模板哈希=6778f8d74
注释:
状态:正在运行
IP:10.1.0.4
IPs:
IP:10.1.0.4
控制人:ReplicaSet/firstkube-deployment-6778f8d74
容器:
firstkube:
容器ID:docker://1662d883b9f049a5e4fa0eab9283e2eefdfac80b0ce95ac6db02c89d9357cf18
图片:firstkube:v2
图像ID:docker://sha256:78332407ac919779bc6fb331b955bcdd0183452a8e699c8552c6cbca05978c42
端口:
主机端口:
状态:正在运行
开始时间:2020年6月27日星期六18:30:39-0400
准备好了吗
重新启动计数:0
环境:
挂载:
/来自default-token-8tfz2(ro)的var/run/secrets/kubernetes.io/serviceCount
条件:
类型状态
初始化为True
准备好了吗
集装箱准备好了吗
播客预定为真
卷数:
default-token-8tfz2:
类型:Secret(由Secret填充的卷)
SecretName:default-token-8tfz2
可选:false
QoS等级:最佳努力
节点选择器:
容差:node.kubernetes.io/未就绪:不执行300秒
node.kubernetes.io/不可访问:不执行300秒
活动:
从消息中键入原因年龄
----    ------     ----  ----                     -------
正常计划的10m默认计划程序已成功将默认/firstkube-deployment-6778f8d74-qhgz2分配给docker desktop
机器上已存在正常的10米kubelet、docker桌面容器图像“firstkube:v2”
正常创建10m kubelet,docker桌面创建容器firstkube
正常启动10m kubelet,docker桌面启动容器firstkube

调试问题的指针很少

  • 服务已在
    端点中获得
    10.1.0.7:8080
    ,但pod IP为
    10.1.0.4
    。检查是否有另一个pod具有相同的标签
    app=firstkube部署

  • 检查您是否能够通过集群中另一个pod的IP和端口直接访问pod。如果不起作用,则检查pod内的应用程序是否正在侦听
    0.0.0
    ,而不是
    127.0.0.1
    。还要检查pod是否正在侦听
    8080
    或其他端口


  • 很少有指针来调试这个问题

  • 服务已在
    端点中获得
    10.1.0.7:8080
    ,但pod IP为
    10.1.0.4
    。检查是否有另一个pod具有相同的标签
    app=firstkube部署

  • 检查您是否能够通过集群中另一个pod的IP和端口直接访问pod。如果不起作用,则检查pod内的应用程序是否正在侦听
    0.0.0
    ,而不是
    127.0.0.1
    。还要检查pod是否正在侦听
    8080
    或其他端口


  • 问题在于kubectl expose部署命令。需要提供端口80

    kubectl expose deployment firstkube-deployment --type=NodePort --port=80
    service/firstkube-deployment exposed
    
    然后get services返回以下内容

    kubectl describe services/firstkube-deployment
    Name:                     firstkube-deployment
    Namespace:                default
    Labels:                   app=firstkube-deployment
    Annotations:              <none>
    Selector:                 app=firstkube-deployment
    Type:                     NodePort
    IP:                       10.107.205.123
    LoadBalancer Ingress:     localhost
    Port:                     <unset>  8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 <unset>  31448/TCP
    Endpoints:                10.1.0.8:8080
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:                   <none>
    
    kubectl get services/firstkube-deployment
    NAME                   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    firstkube-deployment   NodePort   10.96.23.130   <none>        80:32001/TCP   32s
    
    kubectl获取服务/firstkube部署
    名称类型CLUSTER-IP外部IP端口年龄
    firstkube部署节点端口10.96.23.130 80:32001/TCP 32s
    

    现在我可以通过请求在浏览器中访问我的应用程序http://localhost:32001

    问题在于kubectl expose部署命令。需要提供端口80

    kubectl expose deployment firstkube-deployment --type=NodePort --port=80
    service/firstkube-deployment exposed
    
    然后get services返回以下内容

    kubectl describe services/firstkube-deployment
    Name:                     firstkube-deployment
    Namespace:                default
    Labels:                   app=firstkube-deployment
    Annotations:              <none>
    Selector:                 app=firstkube-deployment
    Type:                     NodePort
    IP:                       10.107.205.123
    LoadBalancer Ingress:     localhost
    Port:                     <unset>  8080/TCP
    TargetPort:               8080/TCP
    NodePort:                 <unset>  31448/TCP
    Endpoints:                10.1.0.8:8080
    Session Affinity:         None
    External Traffic Policy:  Cluster
    Events:                   <none>
    
    kubectl get services/firstkube-deployment
    NAME                   TYPE       CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
    firstkube-deployment   NodePort   10.96.23.130   <none>        80:32001/TCP   32s
    
    kubectl获取服务/firstkube部署
    名称类型CLUSTER-IP外部IP端口年龄
    firstkube部署节点端口10.96.23.130 80:32001/TCP 32s
    

    现在我可以通过请求在浏览器中访问我的应用程序http://localhost:32001

    这是否回答了您的问题?感谢您的回答,请参阅我的在线评论。您是否如问题中所述将服务指定为loadbalancer,或者您正在使用nodePort测试该解决方案?请参阅kubectl Descripte services的输出“It's not help”不是有助于调试您的案例的信息。您可以检查一些东西来验证问题所在。首先安排另一个pod,然后从它内部卷曲您创建的服务,卷曲本地主机,并让我们知道结果。这是否回答了您的问题?谢谢您的回答,请参阅我的评论。您是否已将该服务指定为loadbalancer