apiserver调用分为3种:
- 使用官方的SDK
- 在Pod内部使用Token,使用443端口,权限控制的比较好,迁移也方便(推荐)
- 对6443端口发起请求
官方SDK
官方的GitHub有很多语言的支持,有Go、Java、Perl、Ruby;
栗子也很多也很简单,这里我就不费口舌了,自行Google。
Python SDK地址:https://github.com/kubernetes-client/python
Pod内部调用
内部先获取Token,然后发起请求对apiserver
1
2
|
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -H "Authorization: Bearer $TOKEN" -s https://10.96.0.1:443/api/v1/namespaces/default/pods/
|
参考链接:https://blog.csdn.net/russle/article/details/105333738
6443 端口请求
Shell 版本:
1
2
3
4
|
curl https://192.168.1.100:6443/api/v1/nodes \
--cacert /etc/kubernetes/pki/ca.crt \
--cert /etc/kubernetes/pki/apiserver-kubelet-client.crt \
--key /etc/kubernetes/pki/apiserver-kubelet-client.key
|
Python 版本:
1
2
3
4
5
6
7
8
|
url = "https://ip:6443/api/v1/nodes/unis6"
try:
res = requests.get(url, verify="/etc/kubernetes/pki/ca.pem",
cert=("/etc/kubernetes/pki/apiserver-kubelet-client.crt","/etc/kubernetes/pki/apiserver-kubelet-client.key"),timeout=15)
except Exception as e:
print(e)
else:
print("ok")
|
metrics 接口一些调用方法:
https://blog.csdn.net/u014106644/article/details/84839055