kubernetes - 如何将 Kubernetes 服务 TargetPort 定义为字符串?
问题描述
Thanos 需要在 Service 中将 targetPort 定义为字符串,以便 ServiceMonitor 与之通信。
但是,仅将 targetPort 定义为字符串会导致问题。我相信部署中还需要更多东西。我认为必须在部署中定义 targetPort 'web'。
任何人都可以协助部署的外观吗?
apiVersion: v1
kind: Service
metadata:
name: my-service
labels:
app: my-app
tenant: a
servicemonitor: my-servicemonitor
monitor: "true"
spec:
type: ClusterIP
ports:
- name: web
port: 80
protocol: TCP
targetPort: web
selector:
app: my-app
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
labels:
app: my-app
tenant: a
name: my-monitor
spec:
endpoints:
- port: web
path: /metrics
namespaceSelector:
matchNames:
- my-namespace
selector:
matchLabels:
servicemonitor: my-servicemonitor
monitor: "true"
解决方案
将 targetPort 定义为字符串的一个简单示例是首先在 Deployment 中定义它,然后才能在服务的 targetPort 中将其引用为字符串。下面是一个简单的示例,展示了如何从服务 targetPort 规范中的部署映射“http”(端口名称)。
部署:
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
spec:
selector:
matchLabels:
app: hello
tier: backend
track: stable
replicas: 3
template:
metadata:
labels:
app: hello
tier: backend
track: stable
spec:
containers:
- name: hello
image: "gcr.io/google-samples/hello-go-gke:1.0"
ports:
- name: http
containerPort: 80
服务:
apiVersion: v1
kind: Service
metadata:
name: hello
spec:
selector:
app: hello
tier: backend
ports:
- protocol: TCP
port: 80
targetPort: http
推荐阅读
- python - 为什么我的 Django 登录在开发服务器上工作,而不是在生产服务器上工作?
- tensorflow - TensorFlow 的 Visual Attention 示例适用于 im2latex 问题吗?
- python - 具有副作用的补丁装饰器:引发异常的问题
- c# - 试图从数据库中删除所有匹配的内容,而不仅仅是 first 或 default
- windows - Xcopy 命令在作为 Firebase 函数的预部署运行时抛出“参数数量无效”,但在直接从终端运行时工作正常
- c# - 何时使用延续令牌在 CosmosDB 中进行分页?
- python - 为什么我的数独解法生成器总是给出相同的解法?
- prolog - 如何在Prolog中返回包含某个元素的列表?
- javascript - 从选定节点中删除所有字体标签-Javascript?
- javascript - 当我尝试在 firebase 中部署我的功能时,它显示“错误:功能未正确部署”。如何解决这个问题?