gpt4 book ai didi

docker - Kubernetes 在给定的 IP 上看不到我的应用程序

转载 作者:IT老高 更新时间:2023-10-28 21:35:03 27 4
gpt4 key购买 nike

我正在尝试使用 Kubernetes 运行我的应用程序我从名为 deployment.yaml 的文件创建了一个部署来自名为 service.yaml

的文件中的服务

这里是deployment.yaml的内容:

apiVersion: v1
kind: Pod

metadata:
name: kubectl-test
spec:
containers:
- name: kubectl-test
image: gcr.io/[my-name]/node-app:0.0.1
imagePullPolicy: Always
ports:
- containerPort: 8080
hostPort: 8080

这是我的 services.yaml

kind: Service
apiVersion: v1
metadata:
#Service name
name: kubectl-test-node-app
spec:
selector:
app: kubectl-test-189010
ports:
- protocol: TCP
port: 8000
targetPort: 8000
type: LoadBalancer

当我运行命令 kubectl get deployments 时,我可以看到:

NAME                  DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
kubernetes-bootcamp 1 1 1 1 16m

我可以使用 kubectl get services 查看我的服务,我可以看到:

NAME                    TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubectl-test-node-app LoadBalancer 10.59.242.211 35.195.2.76 8000:31592/TCP 8m
kubernetes ClusterIP 10.59.240.1 <none> 443/TCP 1d

当我尝试访问 EXTERNAL-IP:8000 时我看不到我的应用程序,我没有收到任何错误,但我不知道出了什么问题!

编辑

我必须使用以下方法创建部署:

`kubectl run kubernetes-bootcamp --image=[image-name] --port=8080`

但不是用这个命令

`kubectl create -f deployment.yaml`

这和端口有关吗:8000:31592/TCP ?

kubectl get pods
kubectl-test 1/1 Running 0 4h
kubernetes-bootcamp-1654181842-czwqg 1/1 Running 0 3h

编辑

运行命令 kubectl describe services kubectl-test-node-app 返回:

Name:                     kubectl-test-node-app
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=kubectl-test-189010
Type: LoadBalancer
IP: 10.59.242.211
LoadBalancer Ingress: 35.195.2.76
Port: <unset> 8000/TCP
TargetPort: 8000/TCP
NodePort: <unset> 31592/TCP
Endpoints: <none>
Session Affinity: None
External Traffic Policy: Cluster
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal CreatingLoadBalancer 58m service-controller Creating load balancer
Normal CreatedLoadBalancer 57m service-controller Created load balancer

没有定义端点。我想这是问题所在?如何构建端点?

最佳答案

您的服务规范以标签为“app=kubectl-test-189010”的所有 pod 为目标,而您的 pod 规范没有这些标签。

您需要更新 pod 的元数据,使其匹配服务规范中的选择器:

    metadata:
name: kubectl-test
app: kubectl-test-189010

您的服务还接受端口 8000 上的连接,然后将其转发到 pod 上的端口 8000 (targetPort)。但是 pod 监听端口 8080 (containerPort)。因此,应该更改其中一个以匹配另一个 - targetPort 或 containerPort。

您可以在此处阅读有关在 Kubernetes 中配置服务的更多信息:https://kubernetes.io/docs/concepts/services-networking/service/

关于docker - Kubernetes 在给定的 IP 上看不到我的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47831550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com