CKA [Networking] – Service Account的使用
🔰 为什么需要 Service Account?
在 Kubernetes 中,所有对 API Server 的访问都需要身份认证。不仅人(通过 kubectl)、CI/CD 工具,Pod 中运行的应用也可能需要调用 Kubernetes API,比如:
- 检查自身运行在哪个 namespace;
- 获取 ConfigMap、Secrets 等资源;
- 动态调度、注册服务等。
这时候,就需要 Service Account 来提供身份凭证。

使用案例
- 每个 Pod 默认都会关联一个 Service Account , 如果没有声明的话,就是使用default service account
- 每次创建新的namespace都会在这个新namespace底下自动创建default service account 这个service account是没有任何权限的
1. 创建新namespace
kubectl create ns test
2. 在test namespace创建一个pod
kubectl run nginx --image=nginx -n test
3. 查看pod 使用的service account
kubectl desribe nginx -n test

继续往下看就会看到service account token的位子

4. 我们进入pod
kubectl exec -it nginx -n test -- bash
5. 查看service account token
cat /var/run/secrets//kubernetes.io/serviceaccount/token

使用Service account的Token进行API call
1. 进入到path
cd /var/run/secrets/kubernetes.io/serviceaccount/
2. 把token写入variable当中
token=$(cat token)
【查看token variable】
echo $token

3. 查看Kubernetes Cluster control plain 的 api endpoint
kubectl cluster-info

4. curl 进行API访问
curl -k -H "Authorization: Bearer $token" https://{你的control plan api host}/api/v1
以下是特地使用了错误的token,所以才会报错

使用案例(创建Service Account)
1. 使用命令行创建Service account
kubectl create serviceaccount testsa -n test

2. 以下的yaml就在pod绑定到使用的service account

Facebook评论