• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-8-3 10:11:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试使用 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

没有定义端点。我想这是问题吗?我怎样才能建立端点?



Best Answer-推荐答案


您的服务规范针对所有带有标签“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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap