【云原生之K8s】 Pod控制器 Pod控制器,又称之为工作负载(workload),是用于实现管理pod的中间层,确保pod资源符合预期的状态,pod的资源出现故障时,会尝试进行重启,当根据重启策略无效,则会重新新建pod的资源。
【云原生之K8s】 K8s之持久化存储PV、PVC 容器磁盘省的文件的生命周期是短暂的,这就使得在容器中运行重要应用时出现一些问题。首先,当容器崩溃时,kubelet会重启它,但是容器中的文件将丢失,容器以干净的状态(镜像最初的状态)重新启动。其次,在pod中同时运行多个容器时,这些容器之间通常需要共享文件。Kubernetes 中的Volume抽象就很好的解决了这些问题。Pod中的容器通过Pause容器共享Volume查看PV定义的方式。
【云原生之K8s】 list-watch机制及调度约束 Kubernetes是通过List-Watch的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦用户是通过kubectl根据配置文件,向APIServer发送命令,在Node节点上建立Pod和Container。APIServer经过API调用,权限控制,调用资源和存储资源的过程,实际上还没有真正开始部署应用。这里需要Controller Manager、Scheduler和kubelet的协助才能完成整个部署过程在Kubernetes种,所有部署的信息都会写到etcd中保存。
【云原生之K8s】 K8s资源控制及探针检查 当为Pod中地容器制定了request资源时,调度器就使用该信息来决定将Pod调度到哪个节点上。当还为容器指定了limit资源时,kubelet就会确保运行地容器不会使用超出所设地limit资源量。kubelet还会为容器预留所设地request资源量,供该容器使用 2. 如果Pod所在地节点具有足够地可用资源,容器可以使用超过所设置地request资源量。不过,容器不可以使用超出所设置的limit资源量 3. 如果给容器设置了内存的limit值,但未设置内存的request值,Kubernetes会自
【云原生之K8s】 Pod基础概念 **Pod是Kubernetes中自小的资源管理组件**,Pod也是最小化运行容器化应用的资源对象。**一个Pod代表着集群中运行的一个进程**。Kubernetes中其它大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如用于管理Po的运行的StatefulSet和Deployment等控制器对象,用于暴露Pod应用的Service和Ingress对象,为Pod提供存储的PersistentVolume存储资源对象等。
【云原生之K8s】 YAML文件详解 **kubernetes支持YAML和JSON文件格式管理资源对象**- **JSON格式**:主要用于api接口之间消息的传递- **YAML格式**用于配置和管理,YAML是一种简洁的非标记性语言,内容格式人性化,较易读## 1.YAML和JSON的主要区别1、YAML使用空格缩进,这是Python开发人员熟悉的领域2、JavaScript开发人员喜欢JSON,因为它是JavaScript的一个子集,可以直接在JavaScript中解释和编写,同时使用简写方式声明JSON,在使用没有空格的
【云原生之K8s】 K8s 亲和、反亲和、污点、容忍 1、调度器通过kubernetes的list-watch机制来发现集群中新创建且尚未被调度到Node尚的Pod。调度器会将发现的每一个未调度的Pod调度到一个合适的Node上来运行2、kube-scheduler是kubernetes集群的默认调度器,并且是集群控制面的一部分。如果你真的希望或者有这方面的需求,kube-scheduler在设计上是允许你自己写一个调度组件并替换kube-scheduler3、在做调度决定时需要考虑的因素包括:单独和整体的资源请求、硬件/软件/策略限制、亲和以及反亲和
【云原生之K8s】 K8s管理工具kubectl详解(二) **Kubectl是管理k8s集群的命令行工具,通过生成的json格式传递给apiserver进行创建、查看、管理的操作**```bash//帮助信息[root@localhost bin]# kubectl --helpkubectl controls the Kubernetes cluster manager. Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/
【云原生之K8s】 K8s管理工具kubectl详解(一) kubernetes 集群管理集群资源的唯一入口时通过相应的方法调用apiserver的接口- kubectl是官方的CLI命令行工具,用于余apiserver进行通信,将用户在命令行输入的命令,组织并转化为apiserver能识别的信息,进而实现管理K8s各种资源的一种有效途径- kubectl的命令大全:kubectl --help- K8s官方中文文档:http://docs.kubernetes.org.cn/683.html- 对资源的增、删、查操作比较容易,但对改的操作就不容易了
【云原生之K8s】 Kubeadm搭建K8s 部署Kubenetes Node,将节点加入Kubenetes集群中。部署Dashboard Web页面,可视化查看Kubenetes资源。节点显示NotReady状态,需要安装网络插件。在所有节点上安装Docker和kubeadm。部署Kubenetes Master。
【云原生之K8s】 Kubernetes核心组件 Kubernetes是为运行分布式集群而建立的,分布式系统的本质使得网络成为Kubernetes的核心和必要组成部分,了解Kubernetes网络模型可以使你能够正常运行、监控和排查应用程序故障无状态服务:就是没有特殊状态的服务,各个请求对于服务器来说统一无差别处理,请求自身携带了所有服务端所需要的所有参数(服务端自身不存储跟请求相关的任何数据,不包括数据库存储信息)。有状态服务:与之相反,有状态服务在服务端保留之前请求的信息,用以处理当前请求,比如session等简单版。
【云原生之K8s】 Kubernetes原理 Kubernetes是什么意思?为什么又称作K8S?Kubernetes的名字来自希腊语,意思是“舵手” 或 “领航员”。K8s是将8个字母“ubernete”替换为“8”的缩写Kubernetes是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。Kubernetes拥有一个庞大且快速增长的生态系统。Kubernetesd的服务、支持和工具广泛可用。
Promrtheus+Grafana+onealert--实现报警 Prometheus 报警需要使用 alertmanager 这个组件,而且报警规则需要手动编写(对运维来说不友好)。所以我这里选用 grafana+onealert 报警。注意:实现报警前把所有机器时间同步再检查一遍登陆http://www.onealert.com/→注册帐户→登入后台管理获取appkey现在可以去设置一个报警来测试了(这里以我们前面加的 cpu 负载监控来做测试)在被监控端下载一个stress测试工具开始测试设置4核cpu,此时cpu就会被冲高发来的报警如
Prometheus部署,操作及Grafana展示 * 通过浏览器访问 http:// 被监控端 IP:9100/metrics 就可以查看到 node_exporter 在被监控端收集的监控信息:**Grafana 是一个开源的度量分析和可视化工具,可以通过将采集的数据分析,查询,然后进行可视化的展示,并能实现报警。**回到 web 管理界面→点 Status→点 Targets→可以看到监控 mysql **
【无监控,不运维】监控之Prometheus Prometheus是一个开源的服务监控系统和时序数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件Prometheus server会定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据,当新拉取到的数据大于配置的内存缓存区时,数据就会持久化到存储设备当中- 每个被监控的主机都可以通过专用的exporter程序提供输出监控数据的接口,它会在目标处收集监控数据,并暴露出一个HTTP接口供Prometheus server查询,Prometheus通过基于HTTP的p
Docker--consul部署 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现于配置与Docker等轻量级容器可无缝配合template 模板(更新)registrator(自动发现)后端每构建出一个容器,会向registrator进行注册,控制consul 完成更新操作,consul会触发consul template模板进行热更新核心机制:consul :自动发现、自动更新,为容器提供服务(添加、删除、生命周期)
Docker--harbor私有仓库部署与管理 之前我们搭建了本地私有仓库,但是本地仓库的管理和使用比较麻烦,个原生的私有仓库并不好用,所以我们采用harbor私有仓库,也叫私服,更加人性化Harbor是VMware公司开源的企业级Docker Registry项目,其目标是帮助用户迅速搭建一个企业级的Docker Registry服务。
Docker--compose Dockerfile可以让用户管理一个单独的应用容器,而Compose则允许用户在一个模板(YAML)中定义一组相关联的应用容器(被称为一个project,即项目),例如一个Web服务器加上后端的数据库服务容器等。Docker-Compose项目是基于Python开发的Docker官方开源项目,负责实现对Docker容器集群的快速编排Docker-Compose将所管理的容器分为三层,分别是 工程(project),服务(service)以及容器(container)
Docker--cgroups资源监控 cgroups是一个非常强大的Linux内核工具,他不仅可以限制被namespace隔离起来的资源,还可以为资源设置权重,操控进程启停等等,所有cgroups(control groups)实现了对资源的配额和度量cgroups有四大功能Linux通过CFS(completely fair scheduler,完全公平调度器)来调度各个进程对cpu的使用查看周期限制和cpu配额限制进行cpu压力测试然后修改每个周期的使用cpu的时间,查看cpu使用率Docker通过–cpu-shares指定cpu