kubernetes核心概念
kubernetes是Google在2014年开源的一个容器集群管理系统,kubernetes简称K8S。
kubernetes是用于容器化应用程序的部署,扩展和管理,目标是让部署容器化应用简单高效.
官网:http://www.kubernetes.io
官方文档
https://kubernetes.io/zh/docs/home/

创建一个pod的工作流程
master上的动作:首先提交一个创建资源json数据到apiserver里,apiserver收到请求,先将数据写到etcd的数据库,然后scheduler有个watch的机制,会实时监听apiserver接口,看有没有新的资源需要我进行调度的。一些后台的任务,比如一个应用,副本三个,也就是三个容器。也是由控制器controller-manager获取apiserver中,我负责的相关资源,判断到底有没有新的资源需要我调整的。
node上操作:当通过调度到指定的节点,kubelect获取实时watch监控apiserver数据,看看有没有分配到我这个节点的pod,有的话通过调用dockerapi,去创建具体的Cantainer(容器),然后通过kube-proxy代理访问这一批容器。
kubernetes/
├── master: 管理节点
│ ├── apiserver :整个系统对外得接口,集群的统一入口,各组件协调者,以RESTfulAPI提供接口服务,所有对象资源的增删改查和监听操作都交给APIserver处理再提交给Etcd存储.
│ ├── controller-manager 管理控制器。 处理集群中常规后台任务,一个资源对应一个控制器.
│ ├── etcd 分布式键值数据库。用于保存集群状态数据,比如Pod、service等对象信息.
│ ├── kube-proxy 实现service得通信与负载均衡机制得组件
│ └── scheduler 调度器,对集群内部得资源进行调度. 根据调度算法为新创建的pod选择一个node节点,可以任意部署,可以部署在同一个节点,也可以部署在不同的节点上.
├── node : 计算节点(多个)
│ ├── docker 容器
│ ├── kubelet 启动pod和容器. kubelet是master在Node节点上的Agent,管理本机运行容器的生命周期,比如创建容器、pod挂载数据卷、下载secret、获取容器和节点状态等工作。kubelet将每个pod转换成一组容器.
│ └── kube-proxy 集群中每个节点得网络代理。 在node节点上实现pod网络代理,维护网络规则和四层负载均衡工作.
└── registry :镜像仓库
Pod:
- 最小部署单元
- 一组容器得集合
- 一个pod中得容器共享网络命名空间
- pod是短暂得
controllers
- Deployment: 无状态应用部署
- StatefulSet: 有状态应用部署
- DaemonSet: 确保所有Node运行同一个Pod
- job: 一次性任务
- Cronjob: 定时任务
Service
- 防止pod失联
- 定义一组pod得访问策略
Label: 标签:附加到某个资源上,用于关联对象,查询和筛选
Namespaces: 命名空间。将对象逻辑上隔离
官方提供的三种部署方式
minikube
Minikube是一个工具,可以在本地快速运行一个单点kubernetes,仅用于尝试kubernetes或日常开发的用户使用.
部署地址:https://kubernetes.io/doce/setup/minikube/
kubeadm
kubeadm也是一个工具,提供kubeadm init和kubeadm join,用于快速部署kubernetes集群.
部署地址:https://kubernetes.io/docs/reference/setup-tools/kubeadm/
二进制
推荐,从官方下载发行版的二进制包,手动部署每个组件,组成kubernetes集群.
下载地址:https://github.com/kubernetes/kubernetes/

浙公网安备 33010602011771号