kubernetes(k8s)介绍
2021-06-21 00:20:53 5 举报
AI智能生成
kubernetes(k8s)介绍
作者其他创作
大纲/内容
容器编排
Docker Machine
Docker Compose
Docker Swarm
容器总结
1.什么是容器
容器就是一个包,其中包含了应用以及所有的依赖
容器中的应用于Host主机系统时隔离的
容器对环境不关注
不像虚拟机,容器不需要启动操作系统的完整的周期,这也就是为什么容器启动和停止都非常快。
虚拟机
重
分钟
容器
轻
秒
容器可以更高效的使用磁盘、内存、处理器
不受编程语言或框架约束,因为所需要的环境或所需要的一切都打包在容器中。
运行时的环境
所需动态链接库
可以安全的迁移
冷迁移
commit
子主题 2
2.容器和虚拟机的区别
分支主题
左边:应用直接部署在服务器上或者虚拟机里
右边:应用打包在独立的容器中,可以快速的启动、智能扩展、快速迁移等。
kubernetes
k8s
容器的调度
容器的管理
容器的编排
概括
一切皆容器
K8s优势
容器编排
轻量级
开源
支持弹性收缩
负载均衡
基础架构
kubernetes Master节点
主节点
管理节点
kubernetes API
kubernetes核心组件
可以设置一个主节点或多个主节点
kubernetes Node-01节点
容器运行节点
运行服务容器
K8S注册组件等服务
从节点
kubernetes Node-02节点
容器运行节点
Pod
容器
容器
容器
容器
容器
Pod
容器
容器
容器
Pod
容器
容器
容器
容器
从节点
Service
服务
可以理解为一个多机的负载
名词解释
集群Cluster
计算、存储、和网络资源的集合
K8s通过以上的资源来运行各种基于容器的应用
主节点Master
主节点,也叫管理节点
Master主节点就是集群里的大脑,它的主要职责就是起到调度的作用
它决定应用放在哪里运行
Master运行的Linux系统上,可以是物理服务器或者虚拟机或云服务
如果我们想实现高可用,还可以设置多个主节点
从节点Node
职责就是负责运行容器应用,node节点有Master节点进行管理,Node负责监控并汇报容器的状态
根据Master的要求管理容器的生命周期
创建
开始
运行
停止
销毁
跑在常见Linux系统版本
Centos
Ubuntu
工作单元Pod
Pod是K8s中最小的工作单元,每一个Pod包含一个或多个容器
容器
Pod中的容器会被 视为一个整体,被Master调度到一个Node上运行
控制器Controller
K8s通常不会自己直接创建Pod,而是通过Controller控制器来管理Pod。Controller中定义Pod的部署特性,内部端口 外部端口,比如有几个副本在什么样的Node上运行等。
为了满足不同的工作场景,K8s提供多种Controller
控制器Deployment
最常见的一种Controller。它可以管理Pod的多个副本,并确保Pod按照期望的状态去运行。
副本ReplicaSet
控制器中的一种,能够实现pod的多副本管理。
任务Job
用于运行结束就删除应用,而其他的Controller中Pod通常是可以长期持续运行的。
服务Service
deployment可以部署多个副本,每个Pod都有自己的IP,虚拟的网桥,外界如何来访问这些副本?
创建Service
定义外界访问一组特定的Pod方式
Service有自己的Ip和端口
Service为Pod提供了负载均衡服务
在K8s中运行容器Pod与访问容器
Controller 负责运行容器
service负责访问容器
名字空间namespace
可以将集群逻辑上划分为多个虚拟的集群
default
虚拟的
也是一个namespace
容器
public
不同namespace里资源是相互隔离的。
K8S集群环境搭建
主机规划
主机名称
IP地址规划
系统环境
备注
K8S-Master节点
192.168.220.129
centos7
Rancher容器云管理平台
K8S-Node-01节点
192.168.220.130
centos7
Rancher容器云管理平台
K8S-Node-02节点
192.168.220.131
centos7
Rancher容器云管理平台
环境搭建
Centos7
Docker
Rancher
K8S-Master重要组件
Master是K8s控制节点
API Server整个集群的控制中枢
是整个集群的控制中枢,提供集群中各个模块之间的数据交换,并且将集群的状态和信息存储在etcd分布式键-值存储系统中。
它还是集群管理、资源配置、负载均衡、提供了完整的集群访问入口。
同时还提供了集群中各类资源对象,提供了增删改查的操作或者接口
etcd分布式键-值存储系统组件
Etcd为开源项目,CoreOs团队开发的,用于可靠存储集群配置文件。配置数据,特点是一种可持久的、轻量化的。key-value形式存储。分布式的键-值存储的存储组件。
它作为K8s集群的持久化存储系统,集群的容灾能力和灾难恢复和状态信息Etcd,都跟存储密不可分。
高可用Etcd Api Server实现整个集群的高可用,一部分。
生产环境中可以设置多个Master,优化大于3,奇数个。
可以和Master节点在一起
也可以分开来布大于3的奇数个
Scheduler调度管理组件
是集群中的Pod的调度中心,Pod跑的都是容器,提供一组容器的访问方式。主要是通过调度算法,将Pod分配到最佳的Node节点上。
通过API Server监听所有Pod的状态,一旦发现新的没有被调度到任务Node节点Pod,根据K8谁提供的一系列的策略(服务 算法)选择最佳的节点进行调度。
对每一个Pod创建一个绑定,然后被调度到节点上(K8S-Node-01,Node-02)由kubelet负责启动Pod
Controller Manager
分支主题
被称谓集群状态管理器,保证Pod或其他资源达到期望值。
当集群找那个某个Pod的副本数或者其他的资源因为故障或错误导致了没有办法正常运行,没有达到设定的期望值。Controller Manager会尝试自动的修复并使用其达到我们设定的期望状态。
这个控制器组件可以API Server进行通信,可以在需要时候创建、更新、删除它所管理的资源。
NodeController
节点控制器
ReplicationController
副本控制器
NameSpaceController
名字空间控制器
ServiceController
服务控制器
TokenController
令牌控制器
EndPointController
断点
等
K8S-Node节点重要组件
kuberlet
主要负责与Master节点进行通信协作,管理该节点上的Pod
kuber-Proxy
主要负责各个Pod之间的通信和负载均衡
Docker-Engine
Docker引擎对容器进行管理
Pod
可以简单的理解为一组、一个或多个容器
具有共享存储/网络/如何运行容器的规范
Pod中包含一个或多个相对紧密/耦合度较高的应用程序容器
处于同一个Pod中的容器
共享同样的存储空间
卷或存储卷
共享同样的IP地址
共享端口
容器1
容器2
Pod包含的容器
最好是一个容器运行一个进程。
每个Pod都包含了一个pause的容器,它是Pod容器的父容器
负责僵尸进程的回收和管理
Pod状态
PodStatus对象
Pending
挂起
Pod已经K8s系统接收,但是仍然有一部分,一个或多个容器没有被创建。
Running
运行中
Pod已经被绑定到Node上,并且所有的容器都已经被创建。而且至少有一个已经是运行的状态了。
或者是重启或这是启动
通过logs查看pod的状态
Succeeded
成功
所有的容器执行成功并终止,并且不会再次重启
Failed
失败
所有的容器都已经终止,或者至少有一个容器是一失败的方式终止。
非正常退出
0
或系统终止
Unknown
未知
通常就是网络不好,无法获取Pod状态
Pod探针
Pod探针用来检测容器内部的应用是否正常
ExecAction
在容器内执行一个指定的命令,如果命令返回0值,我们就认为容器健康
TCPSocketAction
通过TCP连接检查容器端口,如果端口开放,则认为容器健康。
HTTPGetAction
对指定的URL进行GET请求,如果返回状态码200-400之间,500服务器错误,则认为容器健康。
Pod探针结果返回的状态
Success
成功
容器通过了检测
Failure
失败
容器检测失败
Unkown
未知
诊断失败,不能采取任务的措施
Pod探针种类
LivenessProbe
用于探测容器是否在运行,如果探测失败,kubelet会杀死容器。并且根据重启策略进行相应的处理。
如果没有指定该探针 默认
Success
成功
容器通过了检测
ReadinessProbe
一般用于探测容器中程序是否健康,即容器的状态是否是就绪 ready
如果是准备就绪状态,那就处理请求。
如果不是EndPoints Controller将从所有的Service的EndPoints中删除此容器所在Pod的IP地址
如果没有指定该探针 默认
Success
成功
容器通过了检测
Pod镜像拉取策略
Always
总是拉取,如果当镜像标签tag latest时,默认always
Never
不管是否存在都不会拉取
ifNotPresent
镜像不存在时就拉取镜像。默认 当然排除tag lastest
Pod重启策略
当某个容器异常退出或者健康检查失败, kubelet将根据RestartPolicy的设置来进行相应的操作
restartPolicy 适用于 Pod 中的所有容器。restartPolicy 仅针对同一节点上 kubelet 的容器重启动作。当 Pod 中的容器退出时,kubelet 会按指数回退方式计算重启的延迟(10s、20s、40s、...),其最长延迟为 5 分钟。 一旦某容器执行了 10 分钟并且没有出现问题,kubelet 对该容器的重启回退计时器执行 重置操作。
Always
当容器失效时, 由kubelet自动重启该容器,默认always
OnFailure
当容器终止运行且退出码不为0时, 由kubelet自动重启该容器
Never
不论容器运行状态如何, kubelet都不会重启该容器
收藏
0 条评论
下一页
为你推荐
查看更多