curl 访问k8s api-server
cluster-admin:允许用户或服务账号在整个集群中进行任何操作,包括创建、修改和删除资源等。kube-system cluster-admin 允许用户或服务账号在整个集群中进行任何操作,包括创建、修改和删除资源等。view ClusterRole对象允许用户或服务账号查看集群中的资源,但不允许进行修改或删除等操作。admin:允许用户或服务账号查看、修改和删除资源,但不允许访问集群级别的
curl 显示响应时间:
curl -w '\nLookup time:\t\t%{time_namelookup}s\nConnect time:\t\t%{time_connect}s\nAppCon time:\t\t%{time_appconnect}s\nPretransfer time:\t%{time_pretransfer}s\nRedirect time:\t\t%{time_redirect}s\nStarttransfer time:\t%{time_starttransfer}s\nTotal time:\t\t%{time_total}s\n' -s Example Domain
- time_namelookup:域名解析时间
- time_connect:连接建立时间
- time_appconnect:TLS握手时间
- time_pretransfer:传输之前的等待时间
- time_redirect:重定向时间
- time_starttransfer:传输开始时间
curl 访问k8s 资源,可以用token 方式,也可以用证书方式,也可以两者同时使用
获取k8s api-server 的地址:
kubectl cluster-info
kubectl get svc kubernetes 443 端口
kubectl get ep kubernetes 6443 端口
token 访问:
curl --header "Authorization: Bearer $token" https://10.0.0.1:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config
方法1,配置文件创建sa 以及clusterrolebinding
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-user
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: my-service-account
namespace: kube-system
使用kubectl describe secret admin-user-token-xxx -n kube-system 获取token
方法2:
命令行创建sa以及clusterrolebinding
kubectl create sa my-service-account
kubectl create clusterrolebinding my-service-account-binding --clusterrole=view --serviceaccount=default:my-service-account
kubectl get secret $(kubectl get sa my-service-account -o jsonpath="{.secrets[0].name}") -o jsonpath="{.data.token}" | base64 --decode
注:
将ServiceAccount与ClusterRoleBinding对象绑定时,Kubernetes会自动创建一个ServiceAccount Token对象。这个Token对象是一个Secret对象,用于存储ServiceAccount的令牌。该Token对象的名称与ServiceAccount对象的名称相同,并包含一个随机生成的Token字符串。
get secret 的证书是经过base64 编码的,解码-d
describe secret 是解码后的,可以直接用
k8s 内置的 clusterrole
kubectl get clusterrole view
kubectl get clusterrole -n kube-system cluster-admin
view ClusterRole对象允许用户或服务账号查看集群中的资源,但不允许进行修改或删除等操作。
kube-system cluster-admin 允许用户或服务账号在整个集群中进行任何操作,包括创建、修改和删除资源等。
都是Kubernetes内置的ClusterRole对象。
Kubernetes内置的ClusterRole对象包括:
view:允许用户或服务账号查看资源,但不允许进行修改或删除等操作。
edit:允许用户或服务账号查看和修改资源,但不允许删除资源等重要操作。
admin:允许用户或服务账号查看、修改和删除资源,但不允许访问集群级别的操作,例如节点和存储等资源。
cluster-admin:允许用户或服务账号在整个集群中进行任何操作,包括创建、修改和删除资源等。这是一个最高权限的ClusterRole对象,应该谨慎使用。
证书访问:
直接使用k8s 的证书。
方法1:
grep client-cert ~/.kube/config |cut -d" " -f 6 | base64 -d > client.crt
grep client-key-data ~/.kube/config |cut -d" " -f 6 | base64 -d > client.key
grep certificate-authority-data ~/.kube/config |cut -d" " -f 6 | base64 -d >ca.crt
方法2:
kubectl config view --raw --minify --output 'jsonpath={..client-certificate-data}' | base64 --decode > client.crt
kubectl config view --raw --minify --output 'jsonpath={..client-key-data}' | base64 --decode > client.key
kubectl config view --raw --minify --output 'jsonpath={..certificate-authority-data}' | base64 --decode > ca.crt
方法1 ,和方法2 都可以获取k8s 的客户端证书,客户端私钥,以及ca证书;获取的数据是一样的,已验证
curl --cert ./client.pem --key ./client-key.pem --cacert ./ca.pem https://10.0.0.1:6443/api/v1/namespaces/kube-system/configmaps/kubeadm-config
更多推荐
所有评论(0)