Kubernetes Pod Exec通信协议

k8s居然没有这东西的文档!!!! 需要直接看代码。

截至目前两类(binary or base64)各四个协议版本(v[1-4].(base64.)?channel.k8s.io),如果不指定版本则fallback为v1的。

代码本身还算简洁明白,就不多说了直接看代码。

通信编码与多路复用(api server)

https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/util/wsstream/conn.go

服务端(kubelet/cri)

https://github.com/kubernetes/kubernetes/blob/master/pkg/kubelet/cri/streaming/remotecommand/httpstream.go

客户端(kubectl/client-go)

这个实现是基于SPDY通信的,但实际上和WebSocket Stream区别不大。

https://github.com/kubernetes/kubernetes/tree/master/staging/src/k8s.io/client-go/tools/remotecommand


Last modified on 2022-10-03