关于kubernetes:Kubernetes-如何访问API

43次阅读

共计 967 个字符,预计需要花费 3 分钟才能阅读完成。

办法 1:kube-proxy

1. 集群内:
启动 proxy 端口 9999,拜访该端口将 proxy 到 api-server

# kubectl proxy --address='178.104.163.243' --accept-hosts='^*$' --port=9999

2. 集群外:

# curl http://178.104.163.243:9999/api/v1/nodes

办法 2: Token

1. 集群内:创立 sa

kubectl create serviceaccount sa-test

2. 集群内:rbac 给 sa 赋权

将 clusterrole:cluster-admin 绑定给 sa,该 sa 领有了管理员的权限:

kubectl create clusterrolebinding sa-wanglipeng-cluster-admin --clusterrole='cluster-admin' --serviceaccount=default:sa-test

3. 集群内:取得 token
刚创立的 sa 带一个 secret,secret 中寄存了 token:

TOKEN=$(kubectl get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='sa-test')].data.token}"|base64 -d)

4. 集群外:应用 token 拜访 API

curl --header "Authorization: Bearer $TOKEN" --insecure  -X GET https://178.104.163.38:6443/api/v1/namespaces/monitoring/pods?limit=1

办法 3: 证书

要求应用 apiserver 的 key 文件和 cert 文件:

curl -k --key /etc/kubernetes/pki/apiserver-kubelet-client.key --cert /etc/kubernetes/pki/apiserver-kubelet-client.crt  https://178.104.163.38:6443/api/v1/nodes

参考

1.Access Clusters Using the Kubernetes API

正文完
 0