网站排名首页,网站建设流程资讯,在线制作成品图片,营销推广是一种什么的促销方式自动部署、自动扩展和管理的容器化部署的应用程序的一个开源系统
k8s负责自动化运维管理多个容器化程序的集群#xff0c;是一个功能强大的容器编排工具
可以以分布式和集群化的方式进行容器管理
1.18版本#xff0c;目前最多的是1.20版本#xff0c;最新的是1.29版本是一个功能强大的容器编排工具
可以以分布式和集群化的方式进行容器管理
1.18版本目前最多的是1.20版本最新的是1.29版本没人用
k8s是google的borg系统作为原型后期经过go语言编写的开源软件
Kubernetes
GitHub - kubernetes/kubernetes: Production-Grade Container Scheduling and Management
GitHub: Let’s build from here · GitHub
https://hub.docker.com docker微服务可以满足微服务使用为什么还要用k8s
①传统的部署方式一般意义上的二进制部署安装 --- 运行 --- 运行维护需要专业的人员如果出了故障还需要人工重新拉起来而且如果业务量增大只能水平进行拓展再部署一个浪费时间
②容器化部署可以用dockerfile编写好自定义的容器基于镜像随时都可以运行数量少还可以管的过来数量一旦太多管理起来太复杂而且docker一般是单机运行没有高可用 k8s的作用简单、高效的部署容器化应用
1、解决了docker的单机部署和无法集群化的特点
2、解决了随着容器数量的增加对应增加的管理成本
3、容器的高可用提供了一种容器的自愈机制
4、解决了容器没有预设模板以及无法快速、大规模部署以及大规模的容器调度
5、k8s提供了集中化配置管理的中心
6、解决容器的生命周期的管理工具
7、提供了图形化工具可以用图形化工具对容器进行管理 k8s是基于开源的容器集群管理系统在docker容器技术的基础之上
为容器化的应用提供部署、运行、资源调度、服务发现、动态伸缩等一系列完整的功能 大规模容器管理
1、对docker等容器技术从应用的包 --- 部署 --- 运行 --- 停止 --- 销毁全生命周期管理
2、集群方式运行跨机器的容器管理
3、解决docker的跨机器运行的网络问题
4、k8s可以自动修复使得整个容器集群可以在用户期待的状态下运行 k8s特性
1、弹性伸缩。可以基于命令或者图形化界面以及CPU的使用情况自动的对部署的程序进行扩容和缩容。以最小的成本运行服务
2、自我修复。节点故障时重新启动失败的容器替换和重新部署
3、自带服务发现和负载均衡。k8s为多个容器提供一个统一的访问入口内部地址和内部的DNS名称自动负载均衡关联的所有容器
4、自动发布和回滚。k8s采用滚动的策略更新应用。如果更新过程中出现问题可以根据回滚点进行回滚
5、集中化配置管理和密钥管理。k8s集群内的各个组件都是要进行密钥对验证的。但是k8s的安全性不够核心的组件不建议部署可以部署自定义应用
6、存储编排。①可以自动化的把容器部署在节点上②也可以通过命令或者yml文件自定义pod实现指定节点部署③也可以通过网络存储NFS、GFS
7、任务进行批次处理。提供一次性的任务定时任务满足需要批量处理和分析的场景 k8s的核心组件
1、kube-apiserver
k8s集群中每个组件都是要靠密钥对进行验证组件之间的通信apiserver
API是应用接口服务k8s的所有资源请求和调用操作都是kube-apiserver来完成
所有对象资源的增删改查和监听的操作都是kube-apiserver处理完成之后给etcd来进行
api-server是k8s所有请求的入口服务api-server接收k8s的所有请求命令行和图形化界面然后根据用户的具体请求通知对应的组件展示或者运行命令
APIserver相当于整个集群的大脑
2、kube-controller-manager 运行管理控制器
是k8s集群中处理常规任务的后台线程。是就群众所有资源对象的自动化控制中心。一个资源对应一个控制器。controller-manager负责管理这些控制器
①node controller节点控制器 负责节点的发现以及节点故障时的发现和响应
②replication controller副本控制器 控制关联pod的副本数可以随时扩容/缩容
③endpoints controller端点控制器 监听service和对应pod的副本变化。端点就是服务暴露出的访问点。要访问这个服务必须要知道他的endpoint。就是内部每个服务的IP地址端口
④service account和token controller服务账户和令牌控制 为命名空间创建默认账户和API访问令牌
namespace访问不同的命名空间
⑤resourcequota controller资源控制器 可以对命名空间的资源使用进行控制也可以对pod的资源进行控制
⑥namespace controller命名空间控制器 管理命名空间的生命周期
⑦service controller服务节点控制器 k8s集群和外部的主机之间一个接口控制器
3、kube-scheduler 资源调度组件
根据调度算法为新创建的pod选择一个合适的node节点。可以理解为k8s的所有node节点的调度器部署和调度node。
预先策略人工定制。指定的node节点上部署
优先策略限制条件
根据调度算法选择一台合适的nodenode的节点的资源情况node的资源控制情况等等选择一个资源最富裕、负载最小的node来部署
4、ETCD k8s的存储服务etcd分布式键值存储key:value
k8s的关键配置和用户配置先通过APIservice调用etcd当中的存储信息然后再实施这个集群当中能对etcd存储进行存储进行读写权限的只有API-service
主节点上 node组件
1、kubeletnode节点的监视器以及MASTER节点的通讯器。也可以理解为MASTER在node节点上的眼线。
kubelet会定时向API server汇报自己的node上的运行服务状态API-server会把节点状态保存到ETCD存储当中。
①接受来自master节点的调度命令
②如果发现自己的状态和master节点的状态不一致调用docker的接口同步数据
③对节点上容器的生命周期进行管理保证节点上的镜像不会占满磁盘空间退出的容器的资源进行回收 2、kube-proxy
实现每个node节点上的pod网络代理。负责节点上的网络规划和四层负载均衡工作。负责写入iptables快淘汰了ipvs实现服务映射
pod不是容器
kube-proxy本身不直接给pod提供网络代理proxy是service资源的载体 kube-proxy实际上代理的是pod的集群网络虚拟网络
k8s的每个node节点上都有一个kube-proxy组件 3、docker容器引擎运行容器负责本机的容器创建和管理
k8s要创建pod时kube-scheduler调度到节点上node节点节点上的kubelet只是docker启动特定的容器.
kubelet把容器的信息收集发送给主节点。只需要在主节点发布指令节点上kubelet就会指示docker拉取镜像、启动、停止容器 4、pod运行在节点上的。是k8s当中创建或者部署的最小/最简单的基本单位一个pod代表集群上正在运行的一个进程
同一个pod内的每个容器就是一颗豌豆 pod是由一个或者多个容器组成pod中的容器共享网络、存储和计算资源。可以部署在不同的docker主机上 deployment无状态应用部署作用就是管理和控制pod以及replicaset运行几个容器。管控他的运行状态
replicaset保证pod的副本数量。副本数量受控于deployment
在k8s中部署服务实际上就是podployment部署的服务就是pod。replicaset就是来定义pod的容器数量
可以保证pod的不可重复性。在当前命名空间不能重复不同的命名空间名称可以重复
官方推荐使用deployment进行服务部署
daemonset确保所有节点运行同一类的pod
statefulset有状态应用部署
job可以在pod中设置一次性任务运行完即退出
cronjob一直在运行的周期性任务 5、service组件
在k8s集群当中创建一个pod之后都会其中运行的容器分配一个集群内的ip地址由于业务的变更容器可能会发生变化IP地址也会发生变化service的作用就是提供整个pod对外统一的IP地址
service就是一个网关(路由器),通过访问service就可以访问pod内部的容器集群。
service能实现负载均衡和代理-----------kube-proxy---------来实现负载均衡
service是k8s微服务的核心屏蔽了服务的细节统一的对外暴露的端口真正实现了“微服务”
service的流量调度userspace用户空间废弃iptables即将废弃。ipvs目前1.20都用 6、label标签
k8s的特色管理方式分类管理资源对象
node pod service namespace等等
label标签可以自定义
label选择器等于、不等于。相当于使用定义的标签 Qingress和service的区别
Aingressk8s集群对外暴露提供访问的接口属于应用层。七层代理转发的是http请求http/https
service是四层转发转发的是流量 namespace在k8s上可以通过namespace来实现资源隔离、项目隔离
通过namespace可以把集群划分为多个资源不可共享的虚拟集群组
不同命名空间里面的资源名称可以重复