归志宁无五亩园,读书本意在元元。这篇文章主要讲述华为云大咖带你玩转云原生基础设施之K8s相关的知识,希望能为你提供帮助。
前言容器技术的诞生虽解决了应用打包和发布的难题,但单一的容器技术工具并无 法支持起生产级大规模容器部署的场景。针对这一场景,容器管理与编排成为了容器技术发展的关键。Kubernetes便是在这样的大背景下诞生的。本文将由华为云大咖带你玩转云原生基础设施之K8s。
容器编排技术容器编排技术 ?容器(如Docker)以及周边生态系统提供了很多工具来实现容器生命周期管理,能够满足在单台宿主机管理容器的需求。但越来越多企业开始使用容器,对容器技术的进一步 发展提出了以下新的诉求:
高效的容器管理及编排。
容器的跨主机部署及调度。
容器的存储、网络、运维、安全等能力的拓展。
文章图片
容器编排的价值容器编排是指自动化容器的部署、管理、扩展和联网,可为企业带来以下价值:
文章图片
- 灵活的资源管理及调度
- 自动化部署
- 高效的监控及运维
- 弹性扩展及高可用及服务发现
Kubernetes作为容器集群管理工具,于2015年7月22日迭代到v1.0并正式对外公布。与此同时,谷歌联合Linux基金会及其他合作伙伴共同成立了CNCF基金会(Cloud Native Computing Foundation),并将Kuberentes作为首个编入CNCF管理体系的开源项目, 助力容器技术生态的发展进步。
容器集群管理竞争史Kubernetes逐步统一容器编排和资源管理框架生态。
文章图片
Kubernetes架构一个基础的Kubernetes集群(Cluster)通常包含一个Master节点和多个Node节点。每个节点可以是一台物理机,也可以是一台虚拟机。
文章图片
Node的职责是运行容器应用,由Master管理,Node Node 监控并汇报容器状态,同时根据Master的要求管理容器的生命周期。
Master节点提供的集群控制,对集群做出全局性决策,例如调 Master Master 节点上不运行用户容 器。为了实现高可用, 可以创建多个Master 节点。
Pod是Kubernetes的最小工 作单元。每个Pod包含一个 或多个容器。Pod中的容器 会作为一个整体被Master Container 调度到一个Node上运行。
Master节点Kube-apiserver
kube-apiserver对外暴露了Kubernetes API。它是的Kubernetes前端控制层。 被设计为水平扩展架构,即通过部署更多实例来承载业务。
etcd
etcd用于Kubernetes的后端存储,存储集群数据,提供数据备份。
Kube-controller-manager
控制器,负责策略控制,针对不同的工作负载执行不同的策略,如无状态 应用,有状态应用等。
Kube-scheduler
负责任务调度工作,监控没有分配节点的新创建的Pod,选择一个节点供 Pods运行。
文章图片
Node节点Kubelet
在集群内每个节点中运行的一个代理,用于保证Pod的运行,接收Master的 指令,负责管理容器(Pod)。
Kube-proxy
负责做负载均衡工作,在多个Pod/Service之间做负载均衡。
用于管理Service的访问入口,包括集群内Pod到Service的访问和集群外访问 Service.
Add-ons 。
插件,用于扩展Kubernetes的功能。
Container runtime
通常使用Docker来运行容器,也可使用rkt等做为替代方案。
文章图片
开放接口CRI、CNI、CSIKubernetes作为云原生应用的的基础调度平台,相当于云原生的操作系统,为了便于系统的扩展,Kubernetes中开放的以下接口,可以分别对接不同的后端,来实现自己的业务逻辑:
- CRI(Container Runtime Interface):容器运行时接口,提供计算能力,是定义了容器和镜 像的服务的接口,常见的CRI后端有Docker、rkt、kata-containers等。
- CNI(Container Network Interface):容器网络接口,提供网络能力,由一组用于配置Linux 容器的网络接口的规范和库组成,同时还包含了一些插件,它仅关心容器创建时的网络分配, 和当容器被删除时释放网络资源。
- CSI(Container Storage Interface):容器存储接口,提供存储能力,通过它,Kubernetes可 以将任意存储系统暴露给自己的容器工作负载。
文章图片
Kubernetes核心概念Kubernetes核心概念- PodPod是Kubernetes中最重要最基本的概念,Pod是Kubernetes最小 工作单元。每个Pod包含- -个或多个相关容器,Kubernetes将Pod看做一个整体进行调度。
引入Pod的目的:
将联系紧密的容器封装在一个Pod单元内,以Pod整体进行调度、扩展和实现生命周期管理。
Pod内所有容器使用相同的网络Namespace和共享存储。即Pod内容器拥有相同IP地址和Port空间,容器间直接使用localhost通信。当挂载volume到Pod,即可实现将volume挂载到Pod中的每个容器。
文章图片
Kubernetes核心概念- Label当资源变得非常多的时候,如何分类管理就非常重要了,Kubernetes提供了一种机制来 为资源分类,那就是Label(标签)。Label非常简单,但是却很强大,Kubernetes中几 乎所有资源都可以用Label来组织。Label的具体形式是key-value的标记对,可以在创建 资源的时候设置,也可以在后期添加和修改。
文章图片
Kubernetes核心概念- Namespace命名空间(Namespace)是对一组资源和对象的抽象整合。在同一个集群内可创建不同 的命名空间,不同命名空间中的数据彼此隔离。使得它们既可以共享同一个集群的服务, 也能够互不干扰。
在默认情况下,新建的集群存在以下四个Namespace:
- default:所有未指定Namespace的对象都会被分配在default命名空间。
- kube-public:此命名空间下的资源可以被所有人访问(包括未认证用户),用来部署公共插 件、容器模板等。
- kube-system:所有由Kubernetes系统创建的资源都处于这个命名空间。
- kube-node-lease:每个节点在该命名空间中都有一个关联的“Lease”对象,该对象由节点定 期更新,被用来记录节点的心跳信号。
文章图片
工作负载按不同业务类型,在Kubernetes中分为 以下四类:
- Deployment和ReplicaSet
- StatefulSet
- DaemonSet
- Job和CronJob
文章图片
Kubernetes核心概念- Volume Volume用来管理Kubernetes存储,是用来声明在Pod中的容器可以访问的文件目录,含义如下:
- 声明在Pod中的容器可以访问的文件目录。
- 可以被挂载在Pod中一个或多个容器的指定路径下。
- 支持多种后端存储(本地存储、分布式存储、云存储等)
文章图片
Kubernetes管理-对象类型总览
文章图片
思考题
1.(多选题)Kubernetes Master节点包含以下哪些组件?(AB)
A. kube-scheduler
B. etcd
C. kubelet
D. kube-proxy
2.(单选题)Kubernetes的管理对象,从小到大的管理逻辑为?(A)
A.容器< Pod< ReplicaSet< Deployment
B.容器< Pod< Deployment< ReplicaSet
C. Deployment< ReplicaSet< Pod< 容器
D. ReplicaSet< 容器< Pod< Deployment
总结本文通过和大家一起了解了容器编排技术,容器编排的价值,然后大规模容器集群管理工具,从Borg到Kubernetes 的演进,容器集群管理竞争史 ,以及详解Kubernetes架构 以及Kubernetes的核心概念最后完成对Kubernetes管理-对象类型总览 。
*本文整理自华为云社区【内容共创】活动第15期。*
*https://bbs.huaweicloud.com/blogs/345822*
【华为云大咖带你玩转云原生基础设施之K8s】任务1:??华为云大咖带你玩转云原生基础设施之K8s??
推荐阅读
- ELT.ZIPOpenHarmony啃论文俱乐部——这些小风景你不应该错过
- 没有人比我更懂云原生!
- kettle庖丁解牛第20篇之JSON输出
- G010-OS-WIN-11-01 Windows 11 系统安装
- Linux基础(走进DNS,)
- (java&c) 类与结构体
- WordPress升级时如何忽略FTP登录
- [ 数据结构 -- 手撕排序算法第六篇 ] 归并排序(上)--递归方法实现
- 学习NPM-包管理工具