K8s组件全解析,你需要知道的一切秘密
K8s架构概览
Kubernetes(简称K8s)作为现代云原生应用部署的主流平台,其核心在于简化容器化应用的管理和扩展。K8s的基本架构围绕着集群、节点和Pod等概念构建。一个K8s集群由一个或多个工作机器组成,这些机器被称为节点。每个节点可以运行一个或多个Pod,而Pod则是K8s中最小的可部署单元,它封装了应用程序及其环境。
在K8s中,所有操作都是通过API Server来完成的。用户通过命令行工具kubectl或者直接向API Server发送HTTP请求来进行资源管理。例如,当我们创建一个新的Pod时,实际上是在向API Server发送一个POST请求,这个请求包含了Pod的定义信息。API Server接收到请求后会验证请求的合法性,并将新的Pod对象存储到etcd中,同时通知其他控制平面组件开始实际的工作负载部署。
# 创建一个简单的Nginx Pod
kubectl run nginx --image=nginx
API Server:K8s的门面担当
API Server是K8s系统与外部世界之间的桥梁,所有的交互都必须经过API Server。它不仅负责接收来自用户的指令,还承担着安全认证、授权以及资源状态的持久化任务。为了保证安全性,API Server支持多种身份验证机制,如客户端证书、OpenID Connect Tokens、Webhook Token Authentication等。
以基于RBAC的角色权限控制系统为例,管理员可以根据不同的团队成员分配适当的权限,确保他们只能访问必要的资源。当某个用户尝试执行操作时,API Server会检查该用户的权限是否允许进行此操作,如果一切正常,则继续处理;否则拒绝请求并返回错误信息。
# 定义一个RBAC规则,授予特定用户对Pod的只读权限
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [</