Kubernetes(k8s):概述、yaml文件和pod
Kubernetes概述Kubernetes是谷歌在2014年开源的容器化集群管理系统使用k8s进行容器化应用部署使用Kubernetes利于应用扩展Kubernetes目标实现让部署容器化应用更加简洁和高效k8s集群结构组件master组件(主控节点)API server集群统一入口,以restful方式交给etcd存储。scheduler节点调度,选择node节点应用部署controller-
Kubernetes概述
- Kubernetes是谷歌在2014年开源的容器化集群管理系统
- 使用k8s进行容器化应用部署
- 使用Kubernetes利于应用扩展
- Kubernetes目标实现让部署容器化应用更加简洁和高效
k8s集群结构组件
master组件(主控节点)
-
API server
集群统一入口,以restful方式交给etcd存储。 -
scheduler
节点调度,选择node节点应用部署 -
controller-manager
处理集群中常规后台任务,一个资源对应一个控制器 -
etcd
存储系统,用于保存集群相关的数据
node组件(工作节点)
- kubecelet
master排到node节点代表,管理本机容器 - kube-proxy
- 提供网络代理
- 负载均衡等操作
k8s核心
Pod
pod是k8s系统中可以创建和管理的最小单元,是资源对象模型中由用户创建或部署的最小资源对象模型,也是在k8s上运行容器化应用的资源对象,其他的资源对象都是用来支撑或者扩展pod对象功能的。
pod是kubernetes 的最重要概念,每一个pod都有一个有特殊的被称为“根容器“的容器,Pause容器对应的镜像属于kubernetes的一部分。
特点:
- pod是k8s的最小部署单元
- pod是一组容器的集合
- 一个pod内的容器共享网络
- pod的生命周期短暂
pod存在的意义
-
创建容器使用docker,一个docker对应一个容器,一个容器有进程,一个容器运行一个应用程序
-
pod是多进程设计,运行多个应用程序
一个pod有多个容器,一个容器里面运行一个应用程序 -
pod存在为了亲密性应用
两个应用之间进行交互、网络之间调用、两个应用需要频繁调用
Pod实现机制
- 共享网络:通过Pause容器,把其他业务容器加入到Pause容器理念,让所有业务容器在同一个命名空间中,可以实现网络共享。
- 共享存储:引入数据卷Volumn,使用数据卷进行持久化存储
controller
特点:
- 确保预期的pod副本
- 无状态应用部署
- 有状态应用部署
- 确保所有node运行同一个pod
- 支持一次性任务和定时任务
Service
特点:定义一组pod的访问规则
Yaml文件
k8s集群中对资源管理和资源对象编排部署都可以通过yaml文件来解决,也就是可以把需要对资源对象的操作编辑到yaml格式文件中,把这种文件叫做资源清单文件,通过kubectl命令直接使用资源清单文件就可以实现对大量的资源对象进行编排部署。
- yaml是一种标记语言,是一个可读性高,用来表达数据序列的格式。
- yaml使用空格作为缩进,缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
yaml文件的语法格式:
1、通过缩进表示层级关系
2、不能使用tab进行缩进,只能使用空格
3、一般开头缩进两个空格
4、字符后缩进一个空格,如: ,
5、使用--标示新的yaml文件开始
6、使用#代表注释
yaml文件组成部分:控制器定义和被控对象
yaml文件的快速编写方法:
1、使用kubectl create命令生成yaml文件
备解:
- kubectl create deployment 表示创建的是一个项目
- wyl为自定义名称
- –image=nginx 表示要拉取nginx镜像
- -o yaml 表示生成yaml文件
- –dry-run 表示在集群上试运行,并生成wyl.yaml文件
2、使用kubectl get命令导出yaml文件
- kubectl get deploy 查看deployment
- -o=yaml表示输出格式是yaml
- –export
3、yaml文件的镜像拉取策略
4、pod资源限制
5、pod重启策略
6、pod健康检查
pod的调度策略
调度流程图
资源限制对pod调用产生影响
节点选择器标签对pod调度的影响
节点亲和性影响pod调度
污点和污点容忍
更多推荐
所有评论(0)