通过Kubernetes关闭node.js服务器上的终结点

2024-10-01 09:37:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Docker映像,它运行一个python子进程,它是一个node.js服务器,公开一个端点/check。整个过程被放入Kubernetes pod中,并使用/check作为readinessProbe端点

现在,在某个时刻,我想关闭这个端点,或者强制所有到达它的请求失败。理想情况下,我希望通过更高级别的实体(即Kubernetes生命周期挂钩)来实现这一点,以便不触及较低级别的实现(例如打开一个新的端点/停止,该端点/停止切换一些布尔标志并强制/check失败)

这有可能吗?如果没有,最好的选择是什么


Tags: docker实体服务器node进程过程checkjs
1条回答
网友
1楼 · 发布于 2024-10-01 09:37:50

Is that possible at all? If not, what is the best alternative?

我相信有几个:

  • 远程地址过滤
  • 魔术头
  • 正式代理容器

远程地址

来自kubernetes的对/check的请求将来自节点的sdnip地址(因此,如果节点的SDN子网是10.10.5.0/24,那么请求将来自10.10.5.1),因此您可以允许来自分配给Pod的/24.1的检查

魔法头

httpGetreadinessProbe允许httpHeaders:,因此您可以为/check打开HTTP基本身份验证,然后将- name: Authentication value: Basic xxyyzz==放入httpHeaders:

一个正式的代理容器

Pod添加第二个容器,该容器运行haproxy并过滤/check请求以返回401或404或任何您想要的内容。由于Pod中的所有容器共享相同的网络名称空间,因此将haproxy配置为与node.js服务器通信将非常简单,并且您的readinessProbe(以及liveliness)可以继续使用URL,因为只有kubernetes可以通过使用非haproxy容器的port来访问它。要完成该循环,请将Service指向haproxy容器的端口

相关问题 更多 >