动态抽奖转盘实现:Canvas动态划分扇区与权重控制
2026/10/6 21:32:32
API Server是Kubernetes的核心组件,所有组件都通过API Server进行通信。深入理解API Server的RESTful API、认证授权和准入控制机制,是掌握Kubernetes的关键。本文将详细解析API Server的工作原理。
Client Request │ ▼ ┌──────────────┐ │ Authentication│ 认证 └──────┬───────┘ │ ▼ ┌──────────────┐ │ Authorization │ 授权 └──────┬───────┘ │ ▼ ┌──────────────┐ │ Admission │ 准入控制 │ Control │ └──────┬───────┘ │ ▼ ┌──────────────┐ │ Validation │ 验证 └──────┬───────┘ │ ▼ ┌──────────────┐ │ etcd │ 存储 └──────────────┘# 核心API组/api/v1# 命名API组/apis/apps/v1 /apis/extensions/v1beta1# 创建资源POST /api/v1/namespaces/{namespace}/pods# 获取资源GET /api/v1/namespaces/{namespace}/pods/{name}# 更新资源PUT /api/v1/namespaces/{namespace}/pods/{name}# 删除资源DELETE /api/v1/namespaces/{namespace}/pods/{name}# 列表资源GET /api/v1/namespaces/{namespace}/pods# kubectl是API Server的客户端kubectl get pods# 等价于curl-X GET https://api-server:6443/api/v1/namespaces/default/pods# 创建资源kubectl create -f pod.yaml# 等价于curl-X POST https://api-server:6443/api/v1/namespaces/default/pods\-H"Content-Type: application/yaml"\-d @pod.yaml1. 证书认证
# 客户端证书--client-ca-file=/etc/kubernetes/pki/ca.crt# 使用证书curl--cert client.crt --key client.key\https://api-server:6443/api/v1/pods2. Token认证
# Bearer Tokencurl-H"Authorization: Bearer <token>"\https://api-server:6443/api/v1/pods3. ServiceAccount认证
apiVersion:v1kind:ServiceAccountmetadata:name:my-sa---apiVersion:v1kind:Podspec:serviceAccountName:my-sacontainers:-name:appimage:myapp:latestAPI Server按顺序尝试以下认证方式:
Role定义:
apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata:name:pod-readerrules:-apiGroups:[""]resources:["pods"]verbs:["get","watch","list"]RoleBinding:
apiVersion:rbac.authorization.k8s.io/v1kind:RoleBindingmetadata:name:read-podssubjects:-kind:Username:aliceapiGroup:rbac.authorization.k8s.ioroleRef:kind:Rolename:pod-readerapiGroup:rbac.authorization.k8s.ioapiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:cluster-adminrules:-apiGroups:["*"]resources:["*"]verbs:["*"]