前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >容器编排引擎Kubernetes 01——一文带你认识K8S

容器编排引擎Kubernetes 01——一文带你认识K8S

原创
作者头像
用户8100582
修改于 2024-02-02 11:34:03
修改于 2024-02-02 11:34:03
1.6K2
举报
文章被收录于专栏:微服务化微服务化

系列目录

  1. 容器编排引擎Kubernetes 01——一文带你认识K8S
  2. 容器编排引擎Kubernetes 02——k8s安装配置
  3. 容器编排引擎Kubernetes 03——初始化集群
  4. 容器编排引擎Kubernetes 04——部署Dashboard
  5. 容器编排引擎Kubernetes 05——命名空间和POD
  6. 容器编排引擎Kubernetes 06——kubectl常用命令
  7. 容器编排引擎Kubernetes 07——Deployment介绍及使用
  8. 容器编排引擎Kubernetes 08——Service介绍及使用
  9. 容器编排引擎Kubernetes 09——资源文件的介绍及使用
  10. 容器编排引擎Kubernetes 10——在k8s集群中部署项目

1 K8S是什么

1.1 K8S介绍

Kubernetes,简称K8s,是用8代替名字中间的8个字符 “ubernete” 而成的缩写。

是一个开源的,用于管理云平台中多个主机上的容器化的应用,K8s的目标是让部署容器化的应用简单并且高效,K8s提供了应用部署,规划,更新,维护的一种机制。

K8s是Google开源的一个容器编排引擎,使用Google自家的Go语言开发。它支持自动化部署、大规模可伸缩、应用容器化管理。

1.2 生产部署

  • 传统部署方式

在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡

  • 容器化部署方式

在K8s中,我们可以创建多个容器,每个容器里面运行一个应用实例,然后通过内置的负载均衡策略,实现对这一组应用实例的管理、发现、访问,而这些细节都不需要运维人员手工进行复杂的配置和处理。

1.3 使用K8S的特点

  • 可移植:

支持公有云

私有云(企业内部使用的云),

混合云(提供给外部用户访问的内容到公有云,内部用户访问的内容在私有云),

多重云(multi-cloud)

  • 可扩展:

模块化,插件化,可挂载,可组合

  • 自动化:

自动部署,自动重启,自动复制,自动伸缩/扩展

1.4 K8s与Docker

Docker是应用最广泛的容器技术,它通过打包镜像、启动容器来创建服务。然而,随着应用的日益复杂,容器的数量也不断增加,由此衍生出管理运维容器这一重要问题。

随着云计算的发展,容器的漂移成为云端最大的挑战。K8s正是在这种业务的驱动下,提出了一套全新的基于容器技术的分布式架构领先方案,这是容器技术领域中一个重大突破和创新。

  • Docker 针对 PAAS,是以应用为中心;
  • K8s 是一个管理各个工作节点中容器应用,通过api server进行控制,通过kubelet进行管理的容器管理引擎;
  • K8s解决了密钥配置管理、自动二进制打包、自动部署和回滚、存储编排、服务发现和负载均衡等问题。

2 K8s的集群架构

2.1 K8s的架构

一个 K8s 系统,通常称为一个 K8s 集群,集群主要包括两个部分:

  • Master 节点(通常有一个主节点)
  • Node 节点(用于计算的节点,通常大于1个)

2.2 Master节点

Master 节点主要负责管理和控制,Master 节点内部结构图如下:

Master 节点包括 API Server、Scheduler、Controller Manager、etcd:

  • API Server 是整个系统的对外接口,供客户端和其它组件调用,相当于“服务窗口”;
  • Scheduler 负责对集群内部的资源进行调度,相当于“调度室”;
  • Controller Manager 负责管理控制器,相当于“管理员”;
  • etcd 是保存K8s所有集群数据的后台数据库

2.3 Node节点

Node 节点是工作负载节点,里面是具体的容器,Node 节点内部结构图如下:

Node节点包括 Docker、kubelet、kube-proxy、pod。

每个 Node 都会被 Master 分配一些工作负载,当某个 Node 宕机时,该节点上的工作负载就会被 Master 自动转移到其它节点上。

在Node上主要运行以下内容:

  • Docker,创建容器,提供k8s在node中运行的环境;
  • Kubelet,负责监视指派到它所在Node上的 Pod,包括创建、修改、监控、删除等;
  • Kube-proxy,主要负责为Pod对象提供代理;
  • Fluentd,主要负责日志收集、存储与查询。

3 K8s的基础组件

3.1 控制平面组件(Control Plane Components)

K8s 被安装在一个叫做控制平面的机器上,控制平面的组件对集群做出全局决策。

3.1.1 Api Server

主节点上负责提供 K8s API 服务的组件,它是 K8s 控制面的前端。

  • Api Server是K8s最重要的核心组件之一,提供集群管理的REST API接口,包括认证授权,数据校验以及集群状态变更等;
  • 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有 API Server 才直接操作etcd)
  • 生产环境可以为 Api Server做LA Load Average 或LBLoad Balance,在设计上考虑了水平扩缩的需要。 换言之,通过部署多个实例可以实现扩缩。

3.1.2 Controller Manager

在主节点上运行控制器的组件。

  • Controller Manager 是K8s的大脑,它通过 Api Server 监控整个集群的状态,确保集群处于预期的工作状态;
  • Controller Manager 由一系列的控制器组成,例如,Replication Controller控制副本,Node Controller 控制节点,Deployment Controller 管理部署等。

3.1.3 Scheduler

主节点上的组件,该组件监视那些新创建的未指定运行节点的 Pod,并选择节点让 Pod 在上面运行。

Scheduler 负责分配调度 Pod 到集群内的节点上,它监听 Api Server,查询还未分配 Node 的 Pod,然后根据调度策略为这些 Pod 分配节点。

3.1.4 etcd

  • K8s 需要存储很多东西,例如自身的节点信息,组件信息,还有通过 K8s 运行的 pod,deployment,service 等等,都需要做持久化,etcd 就是它的数据中心。 生产环境中为了保证数据中心的高可用和数据的一致性,一般会部署最少三个节点;
  • etcd 也可以部署在 K8s 每一个节点,组成 etcd 集群;
  • 如果已经有外部 etcd 服务,K8s 可以直接使用外部 etcd 服务。

3.2 Node组件

节点组件在每个节点上运行,维护运行的Pod并提供K8s运行环境。

3.2.1 kubelet

一旦Pod被调度到对应的宿主机之后,后续要做的事情就是创建这个Pod,并管理这个Pod的生命周期,这里面包括:Pod的增删改查等操作,在K8S里面这部分功能是通过kubelet 这个核心组件来完成的。kubelet的功能分为两类:

  • kubelet操作当前宿主机的资源信息,并启动Pod
  • 与k8s进行交互,获取pod相关的数据,监控当前的Pod变化的事件

3.2.2 kube-proxy

在k8s集群的每个节点上都运行着kube-proxy进程,负责实现k8s中service组件的虚拟IP服务。kube-proxy是让集群服务在外部可以被访问到的重要方式。目前kube-proxy有三种工作模式:

  • User space模式
  • Iptables模式(默认)
  • IPVS模式

3.2.3 容器运行环境

k8s支持多个容器运行环境,如 Docker、 containerd、cri-o、 rktlet 以及任何实现 Kubernetes CRI (容器运行环境接口)的容器。

3.2.4 插件

插件使用 k8s资源 (DaemonSet、Deployment等) 实现集群功能。

3.2.5 kube-dns

kube-dns为k8s集群提供命名服务,主要用来解析集群服务名和Pod的hostname。目的是让pod可以通过名字访问到集群内服务。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
2 条评论
热度
最新
这是准备讲一个系列吗。k8s还是有很多学习的地方的。他的编排等。太多了
这是准备讲一个系列吗。k8s还是有很多学习的地方的。他的编排等。太多了
11点赞举报
是的,这是一个系列,欢迎一起讨论哦。
是的,这是一个系列,欢迎一起讨论哦。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
sel4-微内核与宏内核
微内核——内核只提供任务调度和进程间通信(IPC),当然还包括为任务调度提供服务的系统时钟、中断以及内存管理等最基本的硬件管理能能力。至于用户态需要的系统服务,则由用户态完成。代表OS:L4系列微内核。
Tupelo
2022/08/15
2.6K0
sel4-微内核与宏内核
【讨论】Linux kernel 的设计是否已经过时?微内核?
余承东认为,当前,Android/Linux 内核代码庞大且冗余,比如 Android 代码就有一亿行,Linux 内核代码也有 2000 万行,很难保证不同终端的体验流畅。鸿蒙 OS 采用全新的微内核设计,拥有更强的安全特性和低时延等特点。微内核设计的基本思想是简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护。微内核只提供最基础的服务,比如多进程调度和多进程通信等。
Linux阅码场
2019/08/16
2.2K0
有关微内核OS史上最透彻一篇 - 写于华为鸿蒙发布一周之际
华为鸿蒙OS发布已经一周了,在这一周中发生了很多事情,有人对华为路转粉,也有人对华为粉转黑,在时下,只要是华为的任何动作,背后都早已预备好某种正确,当然,所有事先备好的正确,必然不是客观的,所以为了不浪费时间和精力,避开那些争端即可。
Linux阅码场
2019/08/20
4.5K1
有关微内核OS史上最透彻一篇 - 写于华为鸿蒙发布一周之际
谈谈我心目中的微内核架构
微内核是提供操作系统内核基本核心功能功能的操作系统版本。简单的说就是只提供操作系统的核心部分,比如任务调度,ipc,还有一些基本的内存管理。而其他的功能都是作为服务运行在操作系统之上,比如网络协议栈lwip,或者文件系统等等。这些服务是在操作系统之上的服务,所以只用和系统进行交互就可以了。
bigmagic
2020/06/29
1.2K0
操作系统内核之争
1、内核分类 内核(Kernel)在计算机科学中是操作系统最基本的部分,主要负责管理系统资源。 中文版维基百科上将内核分为四大类: 单内核(宏内核); 微内核; 混合内核; 外内核。 宏内核 宏内核(Monolithic kernel),是个很大的进程。它的内部又能够被分为若干模块(或是层次或其他)。但是在运行的时候,它是个单独的二进制大映象。其模块间的通讯是通过直接调用其他模块中的函数实现的,而不是消息传递。  宏内核结构在硬件之上定义了一个高阶的抽象界面,应用一组原语(或者叫系统调用)来实现操作系统的
大数据和云计算技术
2018/03/08
2.9K0
操作系统内核之争
Frequently Asked Questions on seL4
形式化验证是近年来安全操作系统发展的热门!seL4在其官网上打出的口号就是:安全不是表现不佳的借口!
安智客
2018/07/30
1.6K0
Frequently Asked Questions on seL4
微内核进行开发工作究竟是怎样的感受?
随着RT-Thread Smart微内核发布会的临近,对于开源社区以及国产RTOS比较关注的人或许早有耳闻。RT-Thread要发布微内核操作系统了。从去年的华为提出鸿蒙微内核到目前为止,都未曾真正见到一个微内核系统面向大众。从真正的开发者角度来看,或许真正的关注点不在于多少先进技术的提出,而实际的关注点在于是否好用,是否能够快速高效的开发出稳定的产品,是否用上了之后能够减少自己的工作量。本文主要从微内核开发的思维角度出发,谈一谈RT-Thread Smart以及我个人进行微内核开发工作的所思所想。
bigmagic
2020/09/01
1K0
终于有人将进程间通信讲明白了
进程间通信(Inter-Process Communication,IPC)则是多进程协作的基础。一般而言,IPC至少需要两方(如两个进程)参与。根据信息流动的方向,这两方通常被称为发送者和接收者。在实际使用中,IPC经常被用于服务调用,因此参与IPC的两方又被称为调用者和被调用者,或者客户端和服务端。
肉眼品世界
2020/12/17
2.2K0
被神话的Linux, 一文带你看清Linux在多核可扩展性设计上的不足
我其实并不想讨论微内核的概念,也并不擅长去阐述概念,这是百科全书的事,但无奈最近由于鸿蒙的发布导致这个话题过火,也就经不住诱惑,加上我又一直比较喜欢操作系统这个话题,就来个老生常谈吧。
Linux阅码场
2019/08/23
2K0
被神话的Linux, 一文带你看清Linux在多核可扩展性设计上的不足
读鸿蒙论文,看性能优化
《 Microkernel Goes General: Performance and Compatibility in the HongMeng Production Microkernel》论文中提到的一些性能优化的思路和方法是很有学习价值的,结合论文里提到的点,我做了个视频。为了方便大家观看,我梳理了这个文字版本。
泊浮目
2024/11/07
1900
读鸿蒙论文,看性能优化
从Google Fuchsia理解“天然无root”
"a dream job is not about dreaming, it's all job all work all reality all blood all sweat no tears. i work a lot and i love it."
曲奇泡芙
2019/08/30
1.4K0
从Google Fuchsia理解“天然无root”
什么是微内核架构设计?
导读:作为一名Java程序员,相信同学们都听说过微内核架构设计,也有自己的理解。那么微内核是如何被提出来的?微内核在操作系统内核的设计中又有什么作用?本文从插件化(Plug-in)架构的角度来诠释微内核架构设计,通过微内核架构和微服务架构的对比,分享其对微服务设计的参考意义。
范蠡
2021/01/03
1.5K0
什么是微内核架构设计?
下一代 Rust OS:zCore 正式发布
本文来自知乎:https://zhuanlan.zhihu.com/p/137733625
MikeLoveRust
2020/05/14
1.2K0
下一代 Rust OS:zCore 正式发布
QNX操作系统简介
QNX操作系统是由加拿大QSSL公司(QNX Software System Ltd.)开发的分布式实时操作系统。
李小白是一只喵
2020/04/24
3.8K0
软考高级架构师:嵌入式系统的内核架构
嵌入式系统的内核架构对系统的性能、安全性、稳定性等方面有着重要影响。常见的内核架构有宏内核(单体内核)和微内核两种,它们各有特点和适用场景。
明明如月学长
2024/05/25
1350
软考高级架构师:嵌入式系统的内核架构
Linux内核分析与应用1-概览
本系列是对 陈莉君 老师 Linux 内核分析与应用[1] 的学习与记录。讲的非常之好,推荐观看
fliter
2023/09/23
2240
Linux内核分析与应用1-概览
操作系统学习笔记-线程、对称多处理(SMP)和微内核
上述两个特点是独立的,因此操作系统可以独立地处理它们。为了区分这两个特点,分派的单位通常称做线程(thread)或轻量级进程(light weight process,LWP);拥有资源所有权的单位通常仍称作进程(process)或任务(task)。
花猪
2022/02/16
1.4K0
操作系统学习笔记-线程、对称多处理(SMP)和微内核
聊一聊宏内核和微内核
内核是操作系统非常重要的组成部分,同时也是操作系统的核心。内核管理着系统资源,内核向上连接着应用程序,向下连接着硬件,它是应用程序和硬件的桥梁。
用户9692184
2022/06/13
3.4K0
微内核架构(Microkernel Architecture)
最近在讨论产品架构时,提到了微内核架构设计。之前对这个概念有过了解,但没有深入研究。借此机会对微内核架构做一次相对系统、全面的了解,作为架构知识储备。
程序员架构进阶
2021/10/21
1.8K0
鸿蒙系统 PC 版要来了?和现有国产 PC 系统有什么不同?
最近关于鸿蒙系统的消息不断。9月20日,央视新闻全程直播了上海南京东路华为全球最大旗舰店的华为 Mate XT 非凡大师三折叠屏首销活动。这场直播的焦点无疑是华为 Mate XT 三折叠屏手机,令人印象深刻。在直播过程中,余承东无意中提及了鸿蒙 PC,就是下面这一段:
云水木石
2025/01/23
4720
鸿蒙系统 PC 版要来了?和现有国产 PC 系统有什么不同?
推荐阅读
相关推荐
sel4-微内核与宏内核
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档