Docker 公开你的应用程序';t在本地kubernetes集群上工作
我正在运行作为Docker Desktop一部分安装的本地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
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部署
0.0.0
,而不是127.0.0.1
。还要检查pod是否正在侦听8080
或其他端口
很少有指针来调试这个问题
端点中获得10.1.0.7:8080
,但pod IP为10.1.0.4
。检查是否有另一个pod具有相同的标签app=firstkube部署
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