- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我想清除 Kubernetes 命名空间中所有 pod 中的缓存。我想向端点发送一个请求,然后它将向命名空间中的所有 pod 发送 HTTP 调用以清除缓存。目前,我使用 Kubernetes 只能命中一个 pod,而且我无法控制哪个 pod 会被命中。
即使负载均衡器设置为 RR,连续访问 pod(n 次,其中 n 是 pod 的总数)也无济于事,因为其他一些请求可能会悄悄进入。
这里讨论了同样的问题,但我找不到实现的解决方案: https://github.com/kubernetes/kubernetes/issues/18755
我正在尝试使用 Hazelcast 实现清除缓存部分,其中我将存储所有缓存,而 Hazelcast 会自动处理缓存更新。
如果有解决此问题的替代方法,或者配置 kubernetes 以针对某些特定请求达到所有端点的方法,那么在此处分享将有很大帮助。
最佳答案
如果你的 pod 中有 kubectl 并且可以访问 api-server,你就可以获取所有端点地址并将它们传递给 curl:
kubectl get endpoints <servicename> \
-o jsonpath="{.subsets[*].addresses[*].ip}" | xargs curl
pod 中没有 kubectl 的替代方案:
从 pod 访问 api 服务器的推荐方法是使用 kubectl 代理:https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod这当然会增加至少相同的开销。或者您可以直接调用 REST api,您必须手动提供 token 。
APISERVER=$(kubectl config view --minify | grep server | cut -f 2- -d ":" | tr -d " ")
TOKEN=$(kubectl describe secret $(kubectl get secrets \
| grep ^default | cut -f1 -d ' ') | grep -E '^token' | cut -f2 -d':' | tr -d " ")
如果你提供 APISERVER 和 TOKEN 变量,你的 pod 中不需要 kubectl,这样你只需要 curl 访问 api 服务器和“jq”来解析 json 输出:
curl $APISERVER/api/v1/namespaces/default/endpoints --silent \
--header "Authorization: Bearer $TOKEN" --insecure \
| jq -rM ".items[].subsets[].addresses[].ip" | xargs curl
更新(最终版本)
APISERVER 通常可以设置为 kubernetes.default.svc 并且 token 应该在 pod 中的/var/run/secrets/kubernetes.io/serviceaccount/token 可用,因此无需手动提供任何东西:
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token); \
curl https://kubernetes.default.svc/api/v1/namespaces/default/endpoints --silent \
--header "Authorization: Bearer $TOKEN" --insecure \
| jq -rM ".items[].subsets[].addresses[].ip" | xargs curl
jq 在此处可用:https://stedolan.github.io/jq/download/ (< 4 MiB,但值得轻松解析 JSON)
关于docker - Kubernetes : Is it possible to hit multiple pods with a single request in Kubernetes cluster,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49612412/
是否有令人信服的理由在 mturk 上为 HIT 建立外部网站?也就是说,如果任务是通过页面上的 javascript 运行的,为什么不简单地将其粘贴到 mturk 上的源代码中并在那里运行,通过其
在 Amazon Mechanical Turk 上,我在 HIT 中添加了一个指向外部网页的链接,工作人员将在其中执行实际的 HIT。但是,我想对工作人员隐藏该链接,直到他们接受 HIT。 可以通过
我面临的问题是 SCNView.hitTest 不检测对我在 cpu 上动态修改的几何体的命中。 这是概述:我有一个使用 SCNGeometry 的节点从 MTLBuffer 创建顶点数: func
我有一个观察者配置如下: { "trigger": { "schedule": { "interval": "5s" } }, "input" : {
我又遇到了一个正则表达式问题 - 我需要测试一个字符串是否出现模式 - 它可以隐藏在字符串中的某个位置 - 就在前面,前面但前面有一个空格,中间的某个地方或在结束,也许在末尾后面跟着一个空格。 我认为
我又遇到了一个正则表达式问题 - 我需要测试一个字符串是否出现模式 - 它可以隐藏在字符串中的某个位置 - 就在前面,前面但前面有一个空格,中间的某个地方或在结束,也许在末尾后面跟着一个空格。 我认为
我们正在开发我们网站的全新移动版本,它是一个使用 Sencha Touch 2(Ext JS、JavaScript)编写的 HTML5 网站。 我们在主网站上使用 Google Analytics,我
我想写一个这样的sql: "Update tablename SET hits = hits + 1 WHERE id = $id" 在zf2中,我们使用了TableGateway,我写的代码: $t
我使用 golang elastic 5 API 在 ElasticSearch 中运行查询。我使用 searchResult.TotalHits() 检查命中数,它给了我一个很大的数字(超过 100
我正在 Amazon Mturk 开展一个项目。我使用 Python Boto API。 boto.connection.create_HIT() 方法返回一个 ResultSet 对象,我试图从中获
最近我在使用 rails 项目,并使用 simplecov 生成了代码覆盖率报告。 ,我在下面得到了一份不错的报告。我知道这是一个简单的问题(我搜索了很多次但没有得到任何正确的解释) can anyo
相当复杂...我有两个表,t1 包含有关特定对象的描述信息,第二个表 t2 包含用于解码 t1 中对象的信息。 我将尝试提供一个简单的示例: ---- t1 (Name, Type, Size, Co
我们通过 Amazon Mechanical Turk 提供供两名玩家使用的基于网络的游戏。对于每场比赛,我们需要两名玩家同时进入,或最多相隔 1 分钟。我们注意到,在我们发布 HIT 后的前几分
我对 Elasticsearch 相当陌生,我一直在尝试对我的数据进行搜索,并且总是让点击部分为空。即使在数据上传和索引之后也会发生这种情况。我的映射如下: { "mappings":{
我目前正在关注 David Roonqvist 的 3D Graphics with SceneKit 一书。 第 5 章涉及 HitTest ,实现它没有问题,但只涉及他对鼠标事件的测试。 现在,我
对于外部问题,当工作人员在预览模式下查看 HIT 时,发送的 URL 类似于: /mturk?assignmentId=ASSIGNMENT_ID_NOT_AVAILABLE&hitId=3FSEU3
我正在 Agda 中试验同伦类型理论。我使用 HIT 来定义整数: {-# OPTIONS --cubical --safe #-} open import Cubical.Foundations.P
我正在实现一个网站,招募的 MTurk worker 将在该网站上执行任务。我计划使用 MTurk 任务招聘 worker ,我会将他们重定向到外部网站以进行实际工作。我有以下与此计划有关的问题。 这
当我使用以下搜索(/posts/_search)时,我的hits.total为1400: {"query": {"query_string": {"query": "Bitcoin"}}} 当我使用以
我有这样的有效负载,所有文档中都会出现相同的有效负载,但每个文档中每个标签的权重都不同。 { "tags": [ { "tag": "tag1", "weight"
我是一名优秀的程序员,十分优秀!