无法从Kubernetes中的公共IP访问服务

时间:2019-07-05 12:24:38

标签: docker kubernetes devops kubernetes-pod

我正在使用kubernetes并运行一项服务。服务正在运行,并且正在服务中。但是我无法从实例的公共IP访问它。下面是我的部署文件。

apiVersion: v1
kind: Service
metadata:
  name: apache-service
spec:
  selector:
    app: apache
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: NodePort

---
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: Deployment
metadata:
  name: apache-deployment
spec:
  selector:
    matchLabels:
      app: apache
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: apache
    spec:
      containers:
      - name: apache
        image: mobingi/ubuntu-apache2-php7:7.2
        ports:
        - containerPort: 80

这是我的服务清单。

NAME             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
apache-service   NodePort    10.106.242.181   <none>        80:31807/TCP   9m5s
kubernetes       ClusterIP   10.96.0.1        <none>        443/TCP        11m

但是,当我通过群集和节点的公共IP从后面的telnet检查相同的服务时。它没有响应。

telnet public-ip:31807

任何类型的帮助都将是可贵的。

1 个答案:

答案 0 :(得分:0)

集群IP是什么意思?您是说充当kunernetes主节点的节点吗?如果您使用主IP,它将无法正常工作。因为出于安全考虑,主服务器没有安排部署。

通过nodeport公开服务意味着该服务侦听每个工作程序节点中的特定端口。因此,您可以使用节点端口访问kunernetes工作者节点并获得响应。但是,如果使用aws之类的云提供程序创建了集群,则将保护工作节点的安全组。可能您需要编辑辅助节点的安全组才能访问该服务。