【一】K8s的组件及概念

K8s的组件

master: 集群的控制平面,负责集群的决策

ApiServer:资源操作的唯一入口,接收用户输入的命令,提供认证、授权、API注册和发现等机制
Scheduler:负责集群资源调度,按照预定的调度策略将Pod调度到相应的node节点上
ControllerManager:负责维护集群的状态,比如程序部署安排、故障检测、自动扩展、滚动更新等
Etcd:负责存储集群中各种资源对象的信息

 

node: 集群的数据平面,负责为容器提供运行环境

Kubelet:负责维护容器的生命周期,即通过控制docker,来创建、更新、销毁容器
KubeProxy:负责提供集群内部的服务发现和负载均衡
Docker:负责节点上容器的各种操作

【一】K8s的组件及概念

下面,以部署一个nginx服务来说明kubernetes系统各个组件调用关系:

1.首先要明确,一旦kubernetes环境启动之后,master和node都会将自身的信息存储到etcd数据库中
2.一个nginx服务的安装请求会首先被发送到master节点的apiServer组件
3.apiServer组件会调用scheduler组件来决定到底应该把这个服务安装到哪个node节点上在此时,它会从etcd中读取各个node节点的信息,然后按照一定的算法进行选择,并将结果告知apiServer
4.apiServer调用controller-manager去调度Node节点安装nginx服务
5.kubelet接收到指令后,会通知docker,然后由docker来启动一个nginx的pod,pod是kubernetes的最小操作单元,容器必须跑在pod中。
6.一个nginx服务就运行了,如果需要访问nginx,就需要通过kube-proxy来对pod产生访问的代理这样,外界用户就可以访问集群中的nginx服务了

 

组件概念

Master: 集群控制节点,每个集群需要至少一个master节点负责集群的管控
Node: 工作负载节点,由master分配容器到这些node工作节点上,然后node节点上的docker负责容器的运行
Pod: kubernetes的最小控制单元,容器都是运行在pod中的,一个pod中可以有1个或者多个容器
Controller: 控制露,通过它来实现对pod的管理,比如启动pod、停止pod、伸缩pod的数量等等
Service: pod对外服务的统一入口,下面可以维护者同一类的多个pod
Label: 标签,用于对pod进行分类,同一类pod会拥有相同的标签
NameSpace:命名空间,用来隔离pod的运行环境

其他概念:Deployment、Volume

【1】Deployment

  • 为了更好的解决服务编排的问题,kubernetes在V1.2版本开始,引入了Deployment控制器。
  • Deployment这种控制器并不直接管理pod,而是通过管理ReplicaSet来简介管理Pod。

Deployment主要功能有下面几个:

  • 支持ReplicaSet的所有功能
  • 支持发布的停止、继续
  • 支持滚动升级和回滚版本

【一】K8s的组件及概念

【2】Volume

为了持久化保存容器的数据,kubernetes引入了Volume的概念.

Volume是Pod中能够被多个容器访问的共享目录,它被定义在Pod上,然后被一个Pod里的多个容器挂载到具体的文件目录下,kubernetes通过Volume实现同一个Pod中不同容器之间的数据共享以及数据的持久化存情,Volume的生命容器不与Pod中单个容器的生命周期相关,当容器终止或者重启时,Volume中的数据也不会丢失。

kubernetes的Volume支持多种类型,

比较常见的有:

简单存储: EmptyDir、HostPath、NFS
高级存储: PV、PVC
配置存储: ConfigMap、Secret

 

 

原创文章,作者:AIRF,如若转载,请注明出处:http://www.ai-rf.com/index.php/2023/09/17/%e3%80%90%e4%b8%80%e3%80%91k8s%e7%9a%84%e7%bb%84%e4%bb%b6%e5%8f%8a%e6%a6%82%e5%bf%b5/

(0)
AIRFAIRF
上一篇 2023年9月17日
下一篇 2023年9月17日

相关推荐

  • 容器升级内核及重启后遇到的问题

    前景描述 公司10台物理服务器,系统为Redhat7.9,因安装K8S,需将内核升级至3.10.0-1060以上,并修改相关参数,否则会造成内存泄露问题。 操作步骤 需要用到的升级…

    ChatGPT 2022年7月9日
  • 通过Docker创建CentOS系统容器的步骤

    前言 先安装Docker,使用文内的脚本可以快速创建CentOS 7.8虚拟系统集群,并通过SSH(Secure Shell)远程工具连接。 创建桥接网络,方便容器间通信 指令格式…

    ChatGPT 2022年12月4日
  • docker容器分配指定内存和cpu

    如何给分配内存和cpu?默认情况下,容器使用的资源是不受限制的。也就是可以使用主机内核调度器所允许的最大资源。但是在容器的使用过程中,经常需要对容器可以使用的主机资源进行限制,下面…

    ChatGPT 2023年8月14日
  • K8S常见面试题总结

    1.1.什么是k8s? K8s是kubernetes的简称,其本质是一个开源的容器编排工具,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容…

    2023年9月17日
  • 【七】K8S_存储卷

    存储卷介绍 在Kubernetes(K8S)中,存储卷(Storage Volume)是一种持久化的存储机制,用于在Pod中保存数据,并提供了一种抽象层来将底层存储技术(如本地磁盘…

    2023年9月17日
  • K8S搭建DashBoard可视化面板

    kubernetes中管理集群中资源的方式通常有四种:命令行、YAML、API和图形界面。其中dashboard是K8s官方的图形界面工具。使用简单,操作方便,能监控node和po…

    2023年9月17日
  • 国内无法访问下载Docker镜像的多种解决方案

    2023年5月中旬, hub.docker.com  “不知” 何种原因国内均无法正常访问了。当时只是官网不能访问,但是不影响pull镜像。 20…

    ChatGPT 2024年6月16日
  • docker迁移备份容器到其他机器

    1 把当前的容器提交为一个镜像: docker ps -a  查看运行的容器ID docker commit 容器名 镜像名 2 将镜像存为tar文件 docker save 镜像…

    ChatGPT 2023年7月15日
  • kubernetes 运维必会的常用命令合集

    查看 kubectl cluster-info     # 查看集群信息kubectl get no -o wide     # 获取节点和服务版本信息,并查看附加信息kubect…

    Deepseek 2023年12月16日
  • 适合在虚拟化环境中运行 Kubernetes 的几个场景

    1. 前言 虚拟化技术的快速发展为企业提供了更高的灵活性、资源利用率和成本效益。同时,Kubernetes作为一个开源的容器编排系统,能够有效地管理和调度容器化应用程序。将Kube…

    Deepseek 2023年9月19日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注