初始K8s

K8S 基本概念:

K8S 的全称为 Kubernetes (K12345678S),PS:"嘛,写全称也太累了吧,不如整个缩写"。

作用:

用于自动部署、扩展和管理"容器化(containerized)应用程序"的开源系统。

可以理解成 K8S 是负责自动化运维管理多个容器化程序(比如 Docker)的集群,是一个生态极其丰富的容器编排框架工具。

K8S是一款强大的容器编排平台,可以帮助企业实现容器化的业务部署和管理,提升效率和可靠性。

K8S是一个容器集群管理系统,在Docker等容器技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。

K8S 的特点包括:

●自动化管理:大大减少了人工干预,提高了应用部署和管理的效率。

●弹性伸缩:能够根据负载自动调整容器的副本数量,实现资源的高效利用。

●高可用性:通过副本和故障转移机制,确保应用的持续可用。

●负载均衡:可以在多个节点上自动分配负载,实现负载均衡。

●跨平台支持:可以在不同的基础设施上运行,包括物理机、虚拟机和云平台。

核心组件

K8S有 master 和 worker node 两类节点

master:

Kube-apiserver:集群的统一入口,负责接收、验证和转发请求。

controller-manager:控制器管理器,负责管理K8s各种资源对象的控制器,通过apiserver监控整个k8s集群的资源状态,并确保资源始终处于预期的工作状态。

scheduler:资源调度器,负责pod资源的调度,通过调度算法(预选/优选策略)为待部署的Pod选择最适合的node节点。

etcd:K8S集群的数据库,是一种键值对存储结构的分布式数据库,负责存储K8S集群所有配置和状态信息,仅apiserver拥有访问和读写权限

work node节点:负责运行工作负载,即容器应用

kubelet:接受apiserver的请求,创建和管理pod 及其容器的生命周期,定期收集节点的资源使用情况,并上报给apiserver。

kube-proxy:负责实现pod网络代理,维护网络规则和四层负载均衡。

K8S创建Pod资源对象的工作流程:

用户通过客户端发送创建pod请求给apiserver,apiserver接收到请求并进行认证后,将请求信息存储到etcd中;contorller-manager通过list-watch监听到apiserver的指令后,根据请求信息中的资料模板配置创建pod资源(这里是个抽象的pod);scheduler也通过list-watch监听到api-server的指令,调度新创建的pod,根据调度算法(预选优选策略)选出最合适的node节点部署pod,node节点上的kubelet也通过list-watch监听api-server的指令,会在指定node的节点上创建pod,并管理容器的生命周期;用户还可以用过apiserver在kube-proxy上配置网络规则,实现网络代理和负载均衡。

K8S资源对象

Pod:是K8S能够创建和管理的最小单元。一个Pod里可以包含一个或多个应用容器,同一个Pod里的容器之间共享网络、存储等资源(容器之间可以通过localhost相互访问,还可以共享Pod的存储卷)

Pod控制器:

  1. deployment:部署无状态应用(没有实时数据需要存储);同时也负责管理replicaset(维持Pod副本数量始终符合预期状态)和Pod(容器化的应用程序)
  2. statefulset:部署有状态应用(有实时数据需要存储)
  3. daemonset:在每个node节点上都部署一个Pod副本
  4. job:一次性的部署短期任务的Pod(执行完任务后会自动退出)
  5. cronjob:周期性的部署短期任务的Pod(执行完任务后会自动退出)

service:在K8S集群内部,为通过标签选择器相关联的一组Pod提供一个统一的访问(clusterIP)和负载均衡(只支持四层)

service 通过标签选择器关联Pod的标签,从而自动发现相关联Pod的端点(Pod的IP和端口)

ingress:作为K8S集群外部的访问入口,可定义ingress规则根据不同的域名或URL路径绑定并转发请求给指定的service,支持七层负载均衡

volume:Pod中容器可以访问的文件系统

k8s集群外部访问的过程:

集群外部访问需要用ingress作为集群外部入口访问入口,ingress根据不同的域名或者url路径绑定不同的servers,根据外部的路径,转发给相应的servers,再通过servers想关联的pod进行转发。

相关推荐
Xinan_____2 小时前
Linux——k8s认识
linux·运维·kubernetes
nvd112 小时前
K8S - Access Control 机制介绍
kubernetes
攸攸太上2 小时前
Docker学习
java·网络·学习·docker·容器
Sylvan Ding2 小时前
Docker+PyCharm远程调试&环境隔离解决方案
docker·容器·pycharm
液态不合群8 小时前
低代码革命:加速云原生时代的端到端产品创新
低代码·云原生
prcyang12 小时前
Docker Compose
运维·docker·容器
蜗牛^^O^12 小时前
Docker和K8S
java·docker·kubernetes
脚踏实地的大梦想家12 小时前
【Docker】安装全流程与配置完整镜像源(可安装 nginx)
运维·docker·容器
Zww089113 小时前
docker部署个人网页导航
运维·docker·容器
PeterJXL13 小时前
Docker-compose:管理多个容器
运维·docker·容器