K8S第一节:什么是K8S?

最近学习完了docker和containerd,下一步便开始学习K8s,学习操作前必须得了解一下K8S是什么?

1、什么是K8S

kuberbetes这词是起源于希腊语,是舵手的意思,因为k与s之间一共有8个字母,所以大家习惯称呼为K8s;它的logo是一个舵,而舵是用来操控船的;而船不就是docker吗?

当使用docker或containerd作为容器运行时,如果运行大量的容器服务,此时管理这些容器就会很麻烦,而K8S就是这么一个对容器进行统一管理的开源容器编排平台,支持自动部署、扩展和容器化应用程序;

K8S起源

K8s的前身为谷歌的Borg项目;Borg是谷歌内部的一个容器编排工具,大规模运行生产工作十几年,承担了谷歌90%以上的业务,具有非常成熟的架构;

而K8s就是在Borg的基础上开发的轻量级容器编排工具;于2014年6月开源,后于 2015 年捐赠给云原生计算基金会(CNCF);

K8S作用

1)可以对容器自动化部署、自动化扩缩容、跨主机管理等;

2)可以对代码进行灰度发布、金丝雀发布、蓝绿发布、滚动更新等;

3)具有完整的监控系统和日志收集平台,具有故障自恢复的能力;

2、K8S架构

K8s的物理架构为主/从模式,具备至少一个master节点和多个worker节点;master节点是集群的控制节点,负责整个集群的管理和控制;worker节点接受master的命令运行容器;

Kubectl

kubectl是管理运行K8s集群的命令行工具,在**$HOME/.kube** 目录中可以配置一个**config**的配置文件去设置操作的K8s集群;

master节点组件

1)Api server:提供了资源操作的唯一入口,所有操作均需要和Api server交互,且Api server自身也提供认证、授权、访问控制、API 注册和发现等机制;

2)Controller-manager:管理控制器,是K8s集群内部的管理控制中心,负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;

3)Schedule:负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上;

4)etcd:保存了集群资源状态信息,包括了pod是否创建成功、创建失败原因、异常信息等;它是一个高可用的分布式键值对(key-value)数据库,基于Go语言实现,内部采用raft协议作为一致性算法;

worker节点组件

1)Kubelet: 负责维护容器的生命周期,它会定期与Api server上报自身节点信息,同时也负责 Volume(CSI)和网络(CNI)的管理;

2)Kube-proxy:提供网络代理和负载均衡;

3)Container:容器运行时;

3、K8S核心资源

1)Pod:是K8s中的最小调度单元;Pod是集群上正在运行的一个进程,然后在Pod中会运行容器,Pod中的容器共享存储、网络;

2)Lable:用于表示各项资源,如Node、Pod、Service等,一个资源可以绑定多个Lable,以键值对(key-value)形式存在;K8s可以通过Lable实现多维度的资源管理,后续可以通过Lable Selector查询和筛选资源对象;

3)ReplicaSet:K8s集群中的副本控制器,管理Pod,使pod副本数量维持在预设个数;

4)Deployment:用于管理ReplicaSet和Pod的副本控制器,比ReplicaSet更为高级,在创建Deployment的时候会自动创建ReplicaSet,ReplicaSet再创建Pod;

5)Service:K8s中Service对象定义了一个服务访问的入口,这个入口是一个在集群内部有效的虚拟IP,可以端访问这个虚拟IP就可以访问服务背后的应用集群实例;

6)Node:是所有 Pod 运行所在的工作主机,Node上会运行Pod;

7)Namespace:设置K8s集群的命名空间,可以提供虚拟的隔离;默认有两个命名空间,分别为default和 kube-system;

8)Job:用来控制批处理型任务的 API 对象;

9)Volume:存储卷,生命周期和作用范围在Pod中;

10)Secret:用与保存和传递密码、密钥、认证凭证等;

11)StatefulSet:有状态服务集,用于控制有状态服务;

12)DaemonSet:后台支撑服务集;


我是chililopp,正在学习k8s,之后如果有新的总结或者体验也会发出来,如果有说的不对的地方,还请指点,十分感谢阅读!

相关推荐
憨子周40 分钟前
2M的带宽怎么怎么设置tcp滑动窗口以及连接池
java·网络·网络协议·tcp/ip
网络研究院1 小时前
Am I Isolated:一款安全态势基准测试工具
容器·工具·基准测试·安全态势
霖雨2 小时前
使用Visual Studio Code 快速新建Net项目
java·ide·windows·vscode·编辑器
SRY122404192 小时前
javaSE面试题
java·开发语言·面试
Fiercezm3 小时前
JUC学习
java
无尽的大道3 小时前
Java 泛型详解:参数化类型的强大之处
java·开发语言
ZIM学编程3 小时前
Java基础Day-Sixteen
java·开发语言·windows
我不是星海3 小时前
1.集合体系补充(1)
java·数据结构
P.H. Infinity3 小时前
【RabbitMQ】07-业务幂等处理
java·rabbitmq·java-rabbitmq
爱吃土豆的程序员3 小时前
java XMLStreamConstants.CDATA 无法识别 <![CDATA[]]>
xml·java·cdata