linux - Kubernetes 节点无法在端口 80 和 443 上访问

标签 linux raspberry-pi kubernetes

我部署了一堆服务,所有这些我都遇到了同样的问题:定义的端口(例如 80443)不可访问,但无论如何自动分配节点端口。

enter image description here

以下服务定义是从第一个服务导出的:

{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "traefik",
    "namespace": "kube-system",
    "selfLink": "/api/v1/namespaces/kube-system/services/traefik",
    "uid": "70df3a55-422c-11e8-b7c0-b827eb28c626",
    "resourceVersion": "1531399",
    "creationTimestamp": "2018-04-17T10:45:27Z",
    "labels": {
      "app": "traefik",
      "chart": "traefik-1.28.1",
      "heritage": "Tiller",
      "release": "traefik"
    }
  },
  "spec": {
    "ports": [
      {
        "name": "http",
        "protocol": "TCP",
        "port": 80,
        "targetPort": "http",
        "nodePort": 31822
      },
      {
        "name": "https",
        "protocol": "TCP",
        "port": 443,
        "targetPort": "httpn",
        "nodePort": 32638
      }
    ],
    "selector": {
      "app": "traefik",
      "release": "traefik"
    },
    "clusterIP": "10.109.80.108",
    "type": "LoadBalancer",
    "sessionAffinity": "None",
    "externalTrafficPolicy": "Cluster"
  },
  "status": {
    "loadBalancer": {}
  }
}

enter image description here

知道如何使用 http://node-ip-addr:80 访问此服务以及使用 http://node-ip-addr:443

最佳答案

您为服务定义的端口(在本例中为 443 和 80)只能从集群内访问。您可以尝试使用 curl http://traefik.kube-system.svc.cluster.local 从另一个 pod(例如运行繁忙的盒子)调用您的服务或 http://。

如果您想从集群外部访问您的服务(这是您的用例,您需要将您的服务公开为以下之一

  • 节点端口
  • 负载均衡器
  • 外部名称

您选择了 NodePort,这意味着集群的每个节点都会在特定端口上监听请求(在您的示例中,31822 用于 http,32638 用于 https),然后这些请求将被委托(delegate)给您的服务。这就是为什么 http://node-ip-addr:31822应该适用于您提供的服务配置。

要根据您的要求调整您的配置,您必须设置“nodePort”:80,这将在每个集群节点上保留端口 80 以委托(delegate)给您服务。这通常不是最好的主意。您宁愿保留当前定义的端口,并在集群前面添加代理服务器或负载均衡器,然后监听端口 80 并将其中一个节点转发到端口 31822 以供您使用。

有关发布服务的更多信息,请参阅 Kubernetes docs 上的文档

关于linux - Kubernetes 节点无法在端口 80 和 443 上访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49876141/

相关文章:

linux - Bash If 语句 - 放弃希望

linux - 使用 samba/cifs 导出 glusterfs 卷时出错

linux - 如何安装翼侧

python - 对于运行 Web 应用程序的 Raspberry Pi,我应该使用哪个 Python 版本?

c# - 使用单声道在 pi 上托管 asp.net owin 网页导致主机错误

linux - 通过域名访问网站(linux)

c++ - 用 C++ 在 Ubuntu 上运行 PiCamera

kubernetes - 如果抛出任何异常,如何终止 janusgraph 容器

Golang kubernetes go-client 将 Deployment 转换到 DeploymentList

authentication - K8s -> nginx 入口 : SSO