Kubernetes 安全
Kubernetes 介绍
Kubernetes 是一个开源的容器集群管理平台,实现容器集群的「自动化部署」、「自动扩容/缩容」、「维护」等功能。
“Kubernetes”来自于希腊语,意思是“飞行员”
通过 Kubernetes 可以实现:
- 快速部署应用
- 快速扩展应用
- 无缝对接新的应用功能
- 节省资源,优化硬件资源的使用
Kubernetes 特点
- 可移植:支持公有云、私有云、混合云、多重云
- 可扩展:模块化、插件化、可挂载、可组合
- 自动化:自动部署、自动重启、自动复制,自动伸缩/扩展
Kubernetes 组件
- Master 组件:集群管理控制中心,Master 组件可以在任意 Node 运行
- Kube-apiserver:用于暴露 API,所有资源的请求/调用都是通过它来进行的。
- ETCD:存储系统,保存所有集群数据
- kube-controller-manager:运行管理控制器,控制器包括
- Node 控制器
- Replication 控制器:维护系统重每个副本中的 pod
- Endpoints 控制器:填充 Endpoints 对象(即链接 Services & Pods)
- Service Account 和 Token 控制器:为新的 Namespace 创建默认账户访问 API Token
- cloud-controller-manager:负责与底层的云提供商交互
- kube-scheduler:监视新创建的还未分配 Node 的 Pod,将 Pod 分派到一个 Node 中
- Addon 插件:实现集群 Pod 和 Services 功能的
- DNS
- 用户界面
- 容器资源监控
- Cluster-level Logging
- Node 组件:Kubernetes 将容器放在 Node 下的 Pod 中运行,Node 可以是一个虚拟机或者物理机
- Kubelet:监视 Pod
- 安装 Pod 所需的 volume
- 下载 Pod 的 Secrets
- 运行 Docker 或 RKT 容器
- 定期检查容器健康
- 可以创建一个「镜像 Pod」,将 Pod 状态报告给系统的其他部分
- 向系统的其余部分报告节点的状态
- kube-proxy:维护网络规则
- Docker/RKT:容器
- supervisord:轻量级的监控系统,保障 kubelet 和 Docker 运行
- fluentd:一个搜索进程,提供 cluster-level logging
- Kubelet:监视 Pod
Kubernetes 对象
在 Kubernetes 中,对象用于描述集群:
- 容器化应用正在运行(以及运行在哪些节点上)
- 应用的可用资源
- 应用如何运行的策略,如重启、升级和容错策略
对象规范和状态
每个 Kubernetes 对象都包含:
- Object Spec(对象规范),描述对象所需的状态,希望对象具有的特征
- Object Status(对象状态),描述了对象的实际状态,并由 Kubernetes 系统提供和更新
描述 Kubernetes 对象
必须字段:
apiVersion