无法从外部访问服务

时间:2018-12-01 05:49:18

标签: docker nginx kubernetes

我无法从外部访问我的服务。 首先,这是我的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打印:

NAME                            READY   STATUS    RESTARTS   AGE   IP            NODE         NOMINATED NODE
pod/my-nginx-5796dcf6c4-rxl6k   1/1     Running   1          20h   10.244.0.16   scw-7d6c86   
pod/my-nginx-5796dcf6c4-zf7vd   1/1     Running   0          20h   10.244.1.4    scw-7a7908   

NAME                    TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE   SELECTOR
service/nginx-service   LoadBalancer   10.100.63.177   51.15.41.227   80:30883/TCP   54m   app=my-nginx

NAME                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS   IMAGES        SELECTOR
deployment.apps/my-nginx   2         2         2            2           20h   my-nginx     nginx:1.7.9   app=my-nginx

NAME                                  DESIRED   CURRENT   READY   AGE   CONTAINERS   IMAGES        SELECTOR
replicaset.apps/my-nginx-5796dcf6c4   2         2         2       20h   my-nginx     nginx:1.7.9   app=my-nginx,pod-template-hash=5796dcf6c4

一切都很好,也可以打印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中的卷曲命令将打印Welcome to nginx blablabla。接下来,我尝试从另一个网络打开,它不起作用,但是我添加了它可以工作的节点端口curl 51.15.41.227:30883。我在裸机上所做的所有这些。我预期从外部主机发生的curl 51.15.41.227应该会达到结果。 我做错了什么?

2 个答案:

答案 0 :(得分:0)

从外部网络访问时,一定要使用节点端口30883(随机分配的端口)。否则,它将不知道将请求路由到何处。

卷曲http://51.15.41.227:30883

答案 1 :(得分:0)

肯定可以与http://51.15.41.227或51.15.41.227:80一起使用。您可以通过按向上按钮来对答案进行投票。