栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

k3s的nodeport端口未监听

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k3s的nodeport端口未监听

我正在使用k3d (docker中的k3s)做一些教程,我的yml看起来像这样:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:alpine
          ports:
          - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
  - name: http
    port: 80
    targetPort: 80

复制

结果节点端口为31747:

:~$ kubectl get service
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.43.0.1               443/TCP        18m
nginx        NodePort    10.43.254.138           80:31747/TCP   17m

:~$ kubectl get endpoints
NAME         ENDPOINTS         AGE
kubernetes   172.18.0.2:6443   22m
nginx        10.42.0.8:80      21m

复制

然而,wget不起作用:

:~$ wget localhost:31747
Connecting to localhost:31747 ([::1]:31747)
wget: can't connect to remote host: Connection refused
:~$

复制

我错过了什么?我已经确保我的标签都写着app: nginx,我的containerPort、port和targetPort都是80

;

问题是,NodePort范围是否从主机映射到充当节点的码头容器。命令docker ps将向您展示,有关更多详细信息,您可以docker inspect $container_id并查看NetworkSettings下的Ports属性。我没有k3d,但这里有一个来自kind的例子。

$ docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                       NAMES
1d2225b83a73        kindest/node:v1.17.0          "/usr/local/bin/entr…"   18 hours ago        Up 18 hours         127.0.0.1:32769->6443/tcp   kind-control-plane

复制

$ docker inspect kind-control-plane
[
    {
        # [...]
        "NetworkSettings": {
            # [...]
            "Ports": {
                "6443/tcp": [
                    {
                        "HostIp": "127.0.0.1",
                        "HostPort": "32769"
                    }
                ]
            },
        # [...]
    }
]

复制

如果不是,按照注释中的建议使用kubectl port-forward可能是最简单的方法。或者,开始研究Ingress。入口是在集群外部公开工作负载的首选方法,对于kind,则是入口的they have support。似乎k3d也有一种map the ingress port to the host的方法。

也许,您的pod运行在另一个工作节点上,而不是localhost上。您应该使用正确的节点ip。

原来我在创建集群时没有暴露端口

https://k3d.io/usage/guides/exposing_services/

 如有疑问欢迎大家评论区留言

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013484.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号