首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes NodePort不能正常工作

Kubernetes NodePort不能正常工作
EN

Stack Overflow用户
提问于 2019-10-13 22:48:01
回答 3查看 4K关注 0票数 1

我在本地机器上有一个Kubernetes集群和一个raspberry pi。为了测试集群,我创建了一个nginx部署和一个我想作为NodePort访问的服务。但上帝知道为什么,我不能得到这样的服务。贝娄是我的部署和服务文件。

kubectl get nodes

代码语言:javascript
复制
NAME      STATUS                        ROLES    AGE    VERSION
anima     Ready                         master   7d5h   v1.16.1
bahamut   Ready                         <none>   7d4h   v1.16.1

我的服务和部署文件:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        resources:
          limits:
            memory: "128Mi"
            cpu: "500m"
        ports:
        - containerPort: 80
      nodeSelector:
        kubernetes.io/hostname: bahamut
代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  selector:
    app: nginx
  ports:
  - port: 3030
    targetPort: 80
  type: NodePort

kubectl get pods -o wide

代码语言:javascript
复制
NAME                     READY   STATUS    RESTARTS   AGE     IP            NODE      NOMINATED NODE   READINESS GATES
nginx-67c8c4b564-6x7g5   1/1     Running   0          6m21s   10.244.1.13   bahamut   <none>           <none>

我的部署,kubectl get deployments -o wide

代码语言:javascript
复制
NAME    READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES         SELECTOR
nginx   1/1     1            1           7m55s   nginx        nginx:latest   app=nginx

我的服务,kubectl get svc -o wide

代码语言:javascript
复制
NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE     SELECTOR
kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP          7d5h    <none>
nginx        NodePort    10.102.203.77   <none>        3030:30508/TCP   8m54s   app=nginx

最后,kubectl get endpoints -o wide

代码语言:javascript
复制
NAME         ENDPOINTS           AGE
kubernetes   192.168.25.4:6443   7d5h
nginx        10.244.1.13:80      9m41s

我的Kubernetes主本地IP是192.168.25.4,我的覆盆子ip是192.168.25.6。在部署服务之后,我尝试了:

代码语言:javascript
复制
curl 192.168.25.6:3030
curl: (7) Failed to connect to 192.168.25.6 port 3030: Connection refused

curl 192.168.25.6:80
curl: (7) Failed to connect to 192.168.25.6 port 80: Connection refused

curl 192.168.25.6:30508 (hangs)

还尝试使用主节点IP、Service和列出的群集IP,但没有工作。

编辑

如果我在部署中使用hostNetwork=true,并使用容器端口上的节点本地IP访问它,它就能工作,但显然这不是我想要的。我想了解为什么Kubernetes不让我通过服务访问容器。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-10-14 01:50:16

问题是法兰绒的界面。经过ip link delete flannel.1和重新启动法兰绒荚,服务开始完美地运作。

票数 0
EN

Stack Overflow用户

发布于 2019-10-14 00:57:04

NodePort在静态端口( NodePort)上公开每个节点的IP上的服务--在您的示例中是30508。请参阅更多细节这里

将分享更多关于裸金属簇的细节。

票数 4
EN

Stack Overflow用户

发布于 2019-10-14 05:34:07

port应该是服务80公开的端口的值。

如果要将节点端口固定为特定值,请将服务更改为如下所示:

代码语言:javascript
复制
  - port: 80
    nodePort: 30030

请注意,节点端口范围是30000 - 32767,在此之后,您应该能够查询:

代码语言:javascript
复制
curl <node>:30030
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58368366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档