本篇将说明Kubernetes exec API的运作方式,并以简单范例进行开发在前后端上。虽然Kubernetes提供了不同资源的RESTful API来进行CRUD操作,但是部分API并非单纯的回传一个资料,有些是需要透过SPDY或WebSocket建立长连线串流,这种API以exec,attach为主,目标是对一个Pod执行指定指令,或者进入该Pod进行互动等等。
Exec API端点
首先了解一下Kubernetes exec API端点,由于Kubernetes官方文件并未提供相关资讯,因此这边透过kubectl指令来了解API的结构:
$ cat <<EOF | kubectl create -f - apiVersion: v1 kind: Pod metadata: name: ubuntu spec: containers: - name: ubuntu image: ubuntu:16.04 command: ['/bin/bash', '-c', 'while :; do echo Hello; sleep 1; done '] EOF
$ kubectl -v = 8 exec -ti ubuntu bash ... I0625 10:39:33.716271 93099 round_trippers.go:383] POST https://xxx.xxx.xxx.xxx:8443/api/v1/namespaces/default/ pods / ubuntu / exec?command = bash&container = ubuntu&container = ubuntu&stdin = true&stdout = |