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

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐