我有一个kubernetes文件,如下所示:
apiVersion: apps/v1
kind: Deployment
metadata:
name: <some_name>
spec:
replicas: 1
template:
spec:
dnsPolicy: ClusterFirst
restartPolicy: Always
terminationGracePeriodSeconds: 30
containers:
- image: <some_image>
imagePullPolicy: Always
name: <some_name>
env:
- name: ES_HOST
value: blahblah.us-west-2.es.amazonaws.com
- name: ES_PORT
value: "443"
- name: DATALOADER_QUEUE
value: some_sqs_queue
- name: AWS_DEFAULT_REGION
value: us-west-2
...<bunch of variable>
limits: &main_limits
cpu: 500m
memory: 256Mi
requests: *main_limits
如果我想将其公开给外界流量,因为假设我的应用程序在端口上使用prometheus公开应用程序指标...如何向外界公开该端口?
我的应用程序有以下两行代码启动需要公开的http服务器:
METRICS_PORT=9100
start_http_server(METRICS_PORT)
那是普罗米修斯服务器
有一些方法可以在Kubernetes中公开应用程序。
服务可用于在内部公开、在同一集群中运行的其他应用程序(类型:ClusterIP)、将主机端口外部绑定到应用程序节点(类型:NodePort)或负载平衡节点之间的流量(类型:LoadBalancer)
ClusterIP:在集群内部IP上公开服务。选择此值将使服务只能从集群内访问。这是默认的服务类型。
NodePort:在静态端口(NodePort)上公开每个节点IP上的服务。NodePort服务路由到的ClusterIP服务会自动创建。您将能够通过请求:从集群外部联系NodePort服务。
LoadBalancer:使用云提供商的负载平衡器对外公开服务。自动创建外部负载平衡器路由到的NodePort和ClusterIP服务。
如果您使用的是云提供商,您可以使用服务类型LoadBalancer,那么您的服务将从您的云提供商获得外部IP,并且可以公开访问:
apiVersion: v1
kind: Service
metadata:
name: <<some name>>
spec:
selector:
app: my_app_name # << HERE
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancer
请注意,为了使其有效,您需要在部署文件中添加一个选择器
,以了解哪些POD重定向了请求。像这样:
apiVersion: apps/v1
kind: Deployment
metadata:
name: <some_name>
spec:
selector:
app: my_app_name # <= SELECTOR HERE
replicas: 1
template:
...
要检查一切是否正常,请使用下面的命令并检查外部IP:
kubectl获取svc
参考文献:
https://kubernetes.io/docs/concepts/services-networking/service/#publishing-服务服务类型
https://kubernetes.io/docs/concepts/services-networking/service/#with-selectors
https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
试试下面的样品
apiVersion: v1
kind: Service
metadata:
name: hello
spec:
selector:
app: hello
ports:
- protocol: "TCP"
port: 80
targetPort: 80
type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
spec:
selector:
matchLabels:
app: hello
replicas: 1
template:
metadata:
labels:
app: hello
spec:
containers:
- name: nginx
image: nginx
您应该可以访问hello服务http://HOST_IP:NODE_PORT
在本地网络之外公开Prom指标有点奇怪,但除此之外,您使用的是服务。通常是负载平衡器类型,但在特殊情况下有时是NodeIP。查看文档了解更多信息。
27.2 将Bean暴露给JMX MBeanExporter是Spring JMX 框架中的核心类。它负责把Spring bean注册到JMX MBeanServer。例如,下面的例子: package org.springframework.jmx; public class JmxTestBean implements IJmxTestBean { private Stri
Exposing models over REST(将模型暴露给REST) 简介 REST 路径 使用 REST 路由 请求数据格式化 使用HTTP查询字符串传递JSON对象或数组 响应数据格式化 禁用 API Explorer 预定义的远程方法(remote methods) 暴露/隐藏 models, 方法, 端点(endpoints) 隐藏的方法和REST端点 案例: 只读端点(endpoi
我知道在linux主机系统上使用pulse audio是可能的,但是< code>paprefs是为Linux而不是mac构建的。
问题内容: 在我的工作中,我与docker一起工作,而该选项的工作方式就像将docker容器端口转发到机器的超级按钮一样。这使我可以通过示例添加使用某些端口的艰苦任务: 在9001端口为我的覆盖率报告提供帮助 我的应用程序的本地部署版本在端口9000中提供 手表实时重新加载端口35729 对于单元测试运行器,请使用9876端口 当我开始在Mac中使用Docker时,我遇到的第一个问题是:该选项不再
主要内容:1.概述,2.doExportUrls,3. Protocol1.概述 Dubbo 服务暴露有两种方式 本地暴露,JVM 本地调用。配置如下: <dubbo:service scope=“local” /> <dubbo:service scope=“remote” /> 在不配置 scope 的情况下,默认两种方式都暴露。 2.doExportUrls 本地暴露服务的顺序图如下: 我们看到 ServiceConfig#export() 方法中,会在配置初始