1.K8s介绍
1.1 K8s是什么
全称Kubernetes因为K和S之间有8个字母,所以称为K8S。
一个强大的开源容器管理平台,一站式完备的分布式系统开发和支持平台
(一站式是要指的是它提供了全面且集成的解决方案,涵盖了从开发、部署,测试到运维监控的各个环节)
1.2 K8s作用
让用户更加方便的部署,扩展和管理编排容器化应用程序,并自动实现负载均衡,服务发现和弹性伸缩以及监控
1.3 K8s的优点
K8s集成了完备的集群管理能力包括(故障自愈 自动部署 扩缩容和回滚 以及服务返现和负载均衡)
用户可以无需关心底层代码和功能模块 只专注于业务本身的实现
提供一种优秀的容器化应用程序解决方案,让用户更轻松的部署,扩展和管理容器应用本身
1.4 K8s应用场景有哪些
微服务架构:kubernetes可以将微服务打包成容器,并将这些容器部署到一个集群中,并将这些容器部署到一个集群中,并且在多个容器之间提供负载均衡和服务发现等功能,帮助用户更加方便的管理复杂的微服务架构
自动化部署:Kubernetes可以根据用户自定义的部署规范,自动将应用程序部署到指定的服务或者容器中,提高了部署的标准化和自动化程度,减少了出错可能性和手动操作的繁琐性
弹性伸缩:Kubernetes可以根据应用程序的负载情况,进行自动的容器伸缩操作,让用户可以更加高效地利用资源并提高应用程序的性能和可靠性
多租户环境:Kubernetes 支持多租户环境,可以为不同的用户或部门提供独立的Kubernetes集群 并管理这些集群的配额,权限控制等,帮助用户更好的管理多个租户共享的资源
持续集成和持续部署:Kubernetes可以与持续集成和持续部署工具集成,实现自动化部署,测试,发布等操作,可以大大提高开发和发布效率。
1.5 K8s中的调度方法
标签调度、node节点 主机名调度、亲和 反亲和调度、污点和容忍
2. K8s架构
2.1 K8s的节点
K8s分为两个节点,一个是Master节点,它是集群的控制中心,主要负责集群的管理和调度工作,一个是Node节点,它负责集群具体应用服务事务。
2.2 Master节点管理组件
APL Server:集群的命令入口,它提供了Kubernetes集群中各个组件之间的通信和管理接口,所有操作都需要它发起和处理
Etcd:存储数据库,Kubernetes集群中分布式键值存储系统,用于保存集群中所有状态信息和元数据,所有与Kubernetes集群相关的信息,包括Pod、Service、Deployment等对象的创建,更新和删除操作
Controller Manager:管理控制器,负责监控和维护集群中所有资源对象的状态,以及进行自动化控制和管理操作
Scheduler:集群调度员,负责根据集群中各个节点的负载情况,以及用户的调度策略,将新创建的pod分配到合适的节点上
2.3 Node节点
Kubelet:节点守护者,监视pod,包括创建、修改删除等,分布在每个节点
Kube-proxy:节点代理端,负责为pod对象提供代理,K8s服务间的网络通信与负载均衡
Runtime:容器管理
3. K8s的主要资源对象
- pod 容器组:K8S管理资源对象的最小单元pod中包含一个或多个容器提供应用服务
- container容器:pod中主要的管理单元,也是具体的应用单元
- service服务对象:为多个pod提供同一个外界地址和端口 提供外界访问服务
- deployment控制器对象:负责管理多个pod
- label标签对象:负责对资源镜像分组或者为应用选择具体的资源
- namespace命名空间对象:负责隔离资源
- volume卷对象:负责应用的数据持久化和应用之间的数据共享
4. K8s用户安全认证机制
4.1 概念
对管理K8s集群的用户做身份验证和权限授予
作用就是保证集群的安全性和稳定性
4.2 流程
认证:验证用户身份
授权:给用过身份验证的用户授予或验证权限
准入控制:对于有权限的用户操作做一个最后的操作验证
5. K8s 污点和容忍
5.1 污点
污点:是一个节点级别的属性,它告诉Kubernetes哪些节点不适合运行特定类型的pod
作用:节点上的污点可以阻止pod被调度到不适合的节点上
5.2 容忍
容忍:是pod级别的属性,它告诉K8s的该pod可以容忍哪些节点上的污点
作用:容忍允许pod被调度到具有特定污点上的节点
5.3 亲和和反亲和
在pod或者node节点上配置亲和、和反亲和来实现跟随调度或者反向调度,亲和就是别人到哪里自己到哪里,反向就是别人到哪里
6.容器探针
6.1概念
是一种机制,由kubelet对容器执行的定期诊断,从而获取容器的状态
它的作用是用于检测容器健康的K8s对象,可以在容器容器启动或运行时间执行命令和检查,以确定容器是否正常工作
6.2容器探针的类型
启动探针:判断容器中的应用是否启动完成
存活探针:判断应用是否在正常运行中
就绪探针:判断容器是否已经就绪,是否已经准备号接受外界流量
6.3 探针的使用方法
exec:命令实现方式
TCP Socket:TCP套接字检查实现方式
HTTP GET:HTTP请求实现方式
gRPC:gRPC远程过程调动实现方式