【问题标题】:How Kubernetes API Server watch mechanism works? [closed]Kubernetes API Server watch 机制是如何工作的? [关闭]
【发布时间】:2020-01-25 16:36:30
【问题描述】:

在 kubenertes 环境中,有一个 API 服务器,我们可以调用它来监视资源。感谢 HTTP 请求(或 WebSocket,但这与我的问题无关),我们可以调用此 API 服务器,我想知道 API 服务器如何处理永不终止此请求并继续通知客户端有关资源的任何更改。

编辑:我的意思是 HTTP 协议是一个请求/响应协议,我知道使用 HTTP2 我们可以保持同一个 TCP 连接打开以执行多个请求,但它仍然必须是请求/响应性质。那么 watch 机制如何与这个请求/响应协议一起工作呢?


从键

key是chunked header。

您可以在向 kube API 服务器请求时看到一个标头 Transfer-Encoding: chunked

https://en.wikipedia.org/wiki/Chunked_transfer_encoding

在doc中,服务器可以使用这个header连续发送payload。

在kubernetes中也可以查看

curl -v 127.0.0.1:8001/apis/apps/v1/watch/namespaces/ >

GET /apis/apps/v1/watch/namespaces/<mycase :)> HTTP/1.1 
> Host: 127.0.0.1:8001
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 200 OK
< Cache-Control: no-cache, private
< Content-Type: application/json
< Date: Wed, 07 Jul 2021 03:47:33 GMT
< Transfer-Encoding: chunked 

【问题讨论】:

    标签: kubernetes kubernetes-apiserver


    【解决方案1】:

    Kubernetes 将其所有资源存储在 etcd 中,这是一个键值存储,而 etcd 提供了一种 Kubernetes API 可以利用的监视功能。

    您可以阅读有关 etcd watch 的详细信息here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 2013-05-12
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-27
      相关资源
      最近更新 更多