k8s中如何正确的访问apiserver

apiserver的访问分为安全模式和非安全模式

一、非安全模式

如果开放了8080端口,直接进行http访问即可,不需要相关证书。

二、安全模式

curl https://192.168.4.616:6443/api/v1/nodes/unis6 --cacert /etc/kubernetes/ssl/ca.crt --cert /etc/kubernetes/ssl/apiserver-kubelet-client.crt --key /etc/kubernetes/ssl/apiserver-kubelet-client.key

其中涉及到认证机构、api访问的证书和私钥。

curl https://192.168.4.240:8443 -k --cert /etc/origin/master/admin.crt --key /etc/origin/master/admin.key

免证书认证,可以用-k来取代机构

curl https://192.168.4.21:6443/ --cacert /etc/kubernetes/ssl/ca.crt --cert /etc/kubernetes/ssl/apiserver-kubelet-client.crt --key /etc/kubernetes/ssl/apiserver-kubelet-client.key -vvvvv

curl "https://127.0.0.1:6443/api/v1/pods" --cert ./admin.pem --key ./admin-key.pem --cacert ./ca.pem  >> /dev/null

增加-vv可以显示详细的打印信息

 三、pod里根据token来访问

token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
ret_curl=$(curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -H "Authorization:Bearer ${token}" https://kubernetes.default.svc/apis/apps/v1/namespaces/default/deployments/test)

 

附带python访问的代码:

url = "https://ip:6443/api/v1/nodes/unis6"
try:
res = requests.get(url, verify="/etc/kubernetes/ssl/ca.pem",
cert=("/etc/kubernetes/ssl/admin.pem","/etc/kubernetes/ssl/admin-key.pem"),timeout=15)
except Exception as e: 
       print(e)
else:

  print("ok")

posted on 2020-08-04 19:10  星星眨着眼  阅读(5119)  评论(0编辑  收藏  举报

导航