问题标签 [kubernetes-service]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
891 浏览

mongodb - 暴露和连接作为 K8S Statefulset 运行的 MongoDB ReplicaSet

我在 Kubernetes 中部署了一个 MongoDB ReplicaSet 作为 StatefulSet。我正在运行一个 Bare Metal K8S 集群,因此我使用 MetalLB 来公开 LoadBalancer 类型的服务。如果我的 MongoDB-RS 设置暴露服务如下所示:

这可以按预期工作,但是从外部客户端连接到 RS 时出现问题:

在某些时候它说“将主机更改为 rs0/10.42.2.155:27017,10.42.3.147:27017,10.42.4.108:27017”。由于这些 IP 是集群内部的,因此在此之后连接将失败。

有什么建议我能做什么?

0 投票
3 回答
878 浏览

docker - 了解 Kubernetes 中的服务?

我正在从这里学习 k8s 中的服务

我创建了没有选择器和一个端点的服务。我想要做的是我已经安装了 apache,它在端口 80 上运行。我在端口 31000 上创建了一个节点端口服务。现在这个服务应该将 ip:31000 重定向到 ip:80 端口。

它适用于服务的内部 ip,但不适用于外部 ip。

我的服务.yaml

我的端点.yaml

kubectl get service -o wide的输出

0 投票
1 回答
442 浏览

kubernetes - Kubernetes LoadBalancer 服务与 hostNetwork 绑定

我有一个关于在 hostNetwork 中使用 LoadBalancer 服务的问题

如果我们设置 hostNetwork: true,那么 Pod 将绑定到主机网络 - 外部服务连接到该网络。如果我们只需要一个运行的 pod 实例——那么我相信我们不需要 LoadBalancer 服务来让外部服务连接到 pod。我在这里看不到任何负载平衡器服务的用例,或者我缺少什么?

0 投票
1 回答
2500 浏览

kubernetes - Kubernetes:使用静态 IP 的服务和入口公开多个容器

我正在尝试使用 Kubernetes、定义的服务和带有静态 IP 和 ssl 证书的入口将两个 nodejs 应用程序部署为两个单独的容器

我想使用 GCP 的 Kubernetes Engine 部署这些微服务。我添加的第二个微服务比另一个晚。pod 中只有一个容器,一切正常。我定义了三个 yaml 文件:deployment.yaml、service.yaml、ingress.yaml。

部署.yaml

服务.yaml

入口.yaml

使用此配置,只能访问一个服务,第一个

我尝试将多个端口添加到 service.yaml

但我收到一个错误。

我的目标是在域 custom-host.com 上公开两个后端;一个可在特定路径 (api/*) 上到达,另一个可到达所有可能的端点。

谢谢您的帮助

0 投票
1 回答
4182 浏览

kubernetes-ingress - How to set up ingress in Kubernetes for http and https backend

Let's imagine I have a simple website and I want to run it on Kubernetes. Website should listen HTTP and HTTPS protocols.

In Kubernetes I've set up for it deployment, service and ingress. If I try only port 80, everything works well, but If I want to extend it with HTTPS, everything fails and I'm receiving 404 error from ingress controller. HTTPS traffic should be forwarded directly to backend. How can I do it?

I tried to extend my ingress controller daemon set with --enable-ssl-passthrough=true option (directly in Daemon Set config), but then ingress controller's pod didn't start. I found article in the Internet, that to enable --enable-ssl-passthrough, ingress controller should be installed with that flag: see this page. By the way, how can I "install" ingress controller with that flag?

I tried to add 80 and 443 ports in ingress rules, but without success too.

Kubernetes: v1.14.3 Ingress controller: documentation

Please see my service and ingress:

And in this case ingress controller can't start as it says about duplicated location "/" in config file

Can someone help me with it?

0 投票
3 回答
707 浏览

kubernetes - 对 Pod 中同一应用的多个容器进行负载均衡

我有一个场景,我需要在同一个 pod 中运行一个应用容器的两个实例。我将它们设置为侦听不同的端口。下面是部署清单的样子。Pod 以预期的容器数量正常启动。我什至可以从其他 pod 连接到 podIP 上的两个端口。

我什至可以为容器的每个端口创建两个不同的服务,而且效果也很好。我可以单独访问这两个服务并最终访问 Pod 中的相应容器。

我希望容器的两个实例都在一个服务后面,即两个容器之间的循环。我怎样才能做到这一点?在服务领域内可能吗?或者我需要探索类似这样的入口吗?

0 投票
2 回答
1701 浏览

kubernetes - 为什么 AKS 创建的 Azure 负载均衡器设置为将流量定向到节点上的端口 80 和 443,而不是服务打开的节点端口?

我有一个带有 nginx 入口控制器的 AKS 集群。Controller 已经创建了一个类型为 LoadBalancer 的服务,Ports 部分如下所示(来自kubectl get service):

80:31141/TCP

如果我理解正确,端口 80 是从外部无法访问的 ClusterIp 端口,但端口 31141 是一个节点端口,可以从外部访问。所以我假设 Azure 负载均衡器正在向这个 31141 端口发送流量。

我惊讶地发现 Azure 负载均衡器设置了一条规则:

所以它实际上确实使用了节点端口,但仅作为健康检查,所有流量都发送到端口 80,其功能可能与 31141 相同。

一个奇怪的提示是,如果我尝试从 pod 访问端口 80 的节点 IP,我只会得到“连接被拒绝”,但我想如果流量来自负载均衡器,它确实可以工作。

我无法在互联网上找到有关此的任何信息,所以问题是这实际上是如何工作的,为什么 ALB 会这样做?

PS我没有连接问题,它可以工作。我只是想了解它在幕后的方式和原因。

0 投票
1 回答
72 浏览

kubernetes - Kubernetes 服务端口映射

我注意到,但我无法解释,有些服务有

PORT(S) 部分看起来像这样8080:31637/TCP。但这项服务

只有80/TCP. 这些服务之间究竟有什么区别?端口到底是31637做什么的?

0 投票
1 回答
1510 浏览

kubernetes - 裸机 K8s:如何保留客户端的源 IP 并将流量定向到当前服务器上的 nginx 副本

我想问你一些帮助:

http/https 集群的入口点是 NGINX:quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.0 作为 deamonset 运行

我想实现两件事:

  1. 保留客户端的源IP
  2. 将流量直接发送到当前服务器上的 nginx 副本(因此,如果请求被发送到服务器 A,列为外部 IP 地址,节点 A 上的 nginx 应该处理它)

问题:

  • 这怎么可能?
  • 没有nodeport可以吗?控制平面可以使用自定义 --service-node-port-range 启动,因此我可以为 80 和 443 添加 nodeport,但它看起来有点像 hack(在阅读了关于 nodeport 的预期用途之后)

我正在考虑使用metallb,但是 layer2 配置会导致瓶颈(集群上的高流量)。我不确定BGP是否会解决这个问题。

  • Kubernetes v15
  • 裸机
  • Ubuntu 18.04
  • Docker (18.9)和 WeaveNet (2.6)
0 投票
1 回答
636 浏览

kubernetes - minikube 中的错误服务/502 错误网关

鉴于以下 K8s 资源(部署/pod、服务、入口),我希望在浏览器中访问时看到请求回显给我https://staging-micro.local/。我得到的是502 Bad Gateway.

请注意,我在主机(运行 minikube)上有条目192.168.99.100 staging-micro.local/etc/hosts这是正确的minikube ip. 如果我删除该服务,点击staging-micro.local/会给出404 Not Found默认后端的响应。

我的期望是 Ingress 将主机名staging-micro.local和路径映射/到正在侦听端口 80 的服务。然后该服务将请求转发到端口 8000 上的 3 个选定容器之一。 echoserver 容器正在侦听端口 8000,并返回一个以请求为主体的 HTTP 响应。当然,这不是实际发生的情况。

最后,cloudsql-proxy容器:此时不应涉及,但我将其包括在内是因为我想在 sidecar 容器存在时验证服务是否有效。然后我可以换掉echoserver我的主应用程序容器。我已经echoserver删除了测试,并得到了相同的结果。

日志显示echoserver正在启动而没有错误。

我无法找到任何更全面的文档,echoserver因此我不是 100% 了解它正在侦听的端口。