【问题标题】:Ubuntu: Cannot access Kubernetes service from outside clusterUbuntu:无法从集群外部访问 Kubernetes 服务
【发布时间】:2021-12-06 23:05:37
【问题描述】:

我是 K8s 新手,尝试从集群外部连接到 K8s NodePort 服务时遇到问题。

当我尝试使用以下 URL 从本地计算机访问 nginx 默认页面时,我无法加载它:http://localhost:31008

我了解这是一个常见问题,我参考了以下解决方案,

Cannot access NodePort service outside Kubernetes cluster

Cannot access Microk8s service from browser using NodePort service

但是它们都不适合我。

非常感谢您提供有关此问题的任何指导。谢谢。

设置:

服务器操作系统:AWS 上的 Ubuntu 服务器

K8s:minikube

下面是我的部署 YAML:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    name: nginx-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: front-end
      name: nginx
  template:
    metadata:
      name: nginx
      labels:
        app: front-end
        name: nginx
    spec:
      containers:
        - name: nginx
          image: nginx

以下是我的服务 YAML:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  type: NodePort
  selector:
    app: front-end
    name: nginx
  ports:
  - port: 8080
    targetPort: 8080
    nodePort: 31008

下面是命令kubectl get all的输出,

【问题讨论】:

    标签: docker kubernetes kubernetes-service


    【解决方案1】:

    目标端口配置存在问题,因为 Nginx 在默认端口 80

    上运行
    apiVersion: v1
    kind: Service
    metadata:
      name: nginx-service
    spec:
      type: NodePort
      selector:
        app: front-end
        name: nginx
      ports:
      - port: 8080
        targetPort: 80
        nodePort: 31008
    

    目标端口应该是80

    Nginx 的配置:

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

    参考文档:https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/

    【讨论】:

    • 我根据上面的回复修改了端口号,还是无法从浏览器访问服务。
    • 您打算如何访问该服务?你在浏览器中传递了什么?
    • 我正在浏览这个网址:localhost:31008.
    • 尝试使用IP本地机器或节点一次与端口
    • 不...没用。
    【解决方案2】:

    对于正在使用docker + minikube并面临上述问题的人,提供解决方案here。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      • 2021-02-03
      • 1970-01-01
      • 2022-08-12
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多