【问题标题】:Service in unreachable from outside外部无法访问的服务
【发布时间】:2019-05-03 05:37:56
【问题描述】:

我无法从外部访问我的服务。 首先,这是我的 conf yaml 文件:

nginx-pod.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
  namespace: development
spec:
  selector:
    matchLabels:
      app: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80

nginx-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: development
spec:
  type: LoadBalancer
  selector:
    app: my-nginx
  ports:
  - name: http
    port: 80
    targetPort: 80
    protocol: TCP

metallb-config.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 51.15.41.227-51.15.41.227

然后我创建了集群。命令kubectl get all -o wide 打印:

名称 就绪 状态 重启 年龄 IP 节点 提名节点 pod/my-nginx-5796dcf6c4-rxl6k 1/1 运行 1 20h 10.244.0.16 scw-7d6c86 pod/my-nginx-5796dcf6c4-zf7vd 1/1 运行 0 20h 10.244.1.4 scw-7a7908 名称 类型 CLUSTER-IP EXTERNAL-IP PORT(S) 年龄选择器 服务/nginx-服务负载平衡器 10.100.63.177 51.15.41.227 80:30883/TCP 54m app=my-nginx 名称所需的当前最新可用年龄容器图像选择器 部署.apps/my-nginx 2 2 2 2 20h my-nginx nginx:1.7.9 app=my-nginx 名称所需的当前就绪年龄容器图像选择器 replicaset.apps/my-nginx-5796dcf6c4 2 2 2 20h my-nginx nginx:1.7.9 app=my-nginx,pod-template-hash=5796dcf6c4

Everythink 没问题,还有kubectl describe service/nginx-service 打印:

Name:                     nginx-service
Namespace:                development
Labels:                   
Annotations:              
Selector:                 app=my-nginx
Type:                     LoadBalancer
IP:                       10.100.63.177
LoadBalancer Ingress:     51.15.41.227
Port:                     http  80/TCP
TargetPort:               80/TCP
NodePort:                 http  30883/TCP
Endpoints:                10.244.0.16:80,10.244.1.4:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason       Age   From                Message
  ----    ------       ----  ----                -------
  Normal  IPAllocated  56m   metallb-controller  Assigned IP "51.15.41.227"

主服务器curl 51.15.41.227 中的Curl 命令打印Welcome to nginx blablabla。接下来我尝试从另一个网络打开,它不起作用,但是我添加了它工作的节点端口 curl 51.15.41.227:30883。这一切都是我在裸机上完成的。我预计来自外部主机的curl 51.15.41.227 应该会达到结果。 我做错了什么?

【问题讨论】:

    标签: docker nginx kubernetes


    【解决方案1】:

    它肯定适用于http://51.15.41.227 或 51.15.41.227:80。您可以按向上按钮为答案投票。

    【讨论】:

      【解决方案2】:

      从外部网络访问时,您绝对应该使用节点端口 30883(随机分配的端口)。否则它不知道将请求路由到哪里。

      卷曲http://51.15.41.227:30883

      【讨论】:

      • 欢迎来到 Stack Exchange !感谢您的贡献。如果可以的话,我会加强一些,如果您不同意,可以使用编辑链接回滚我的更改。
      • 我有没有其他方法,不指定NodePort?当我阅读 metallb 文档 (metallb.universe.tf/tutorial/layer2) 时,它说明了什么是可能的。其他我尝试使用 Nginx Ingress Controller,结果相同...
      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      • 2021-12-06
      • 2019-11-07
      相关资源
      最近更新 更多