云原生 • Kubernetes 认识 k8s、k8s 架构、核心概念点介绍
云原生 • Kubernetes 认识 k8s、k8s 架构、核心概念点介绍
一、Kubernetes 简介
Kubernetes 简称 k8s,是支持云原生部署的一个平台,起源于谷歌。谷歌早在十几年之前就对其应用,通过容器方式进行部署。
k8s 本质上就是用来简化微服务的开发和部署的,关注点包括自愈和自动伸缩、调度和发布、调用链监控、配置管理、Metrics 监控、日志监控、弹性和容错、API 管理、服务安全等,k8s 将这些微服务的公共关注点以组件形式封装打包到 k8s 这个大平台中,让开发人员在开发微服务时专注于业务逻辑的实现,而不需要去特别关系微服务底层的这些公共关注点,大大简化了微服务应用的开发和部署,提高了开发效率。
二、Kubernetes 架构
k8s 总体架构采用了经典的 master slave 架构模式,分 master 节点和 worker 节点,节点可以是虚拟机也可以是物理机。
master 节点由以下组件组成;
etcd,一种的分布式存储机制,底层采用 Raft 协议,k8s 集群的状态数据包括配置、节点等都存储于 etcd 中,它保存了整个集群的状态。
API server,对外提供操作和获取 k8s 集群资源的的 API,是唯一操作 etcd 的组件,其他的组件包括管理员操作都是通过 API server 进行交互的,可以将它理解成 etcd 的 “代理人”。
Scheduler,在 k8s 集群中做调动决策,负责资源的调度,按照预定的调度策略将 Pod 调度到相应的机器上。
Controller Manager,相当于集群状态的协调者,观察着集群的实际状态,与 etcd 中的预期状态进行对比,如果不一致则对资源进行协调操作让实际状态和预期状态达到最终的一致,维护集群的状态,比如故障检测、自动扩展、滚动更新等。
worker 节点由以下组件组成:
Controller Runtime,下载镜像和运行容器的组件,负责镜像管理以及 Pod 和容器的真正运行(CRI)。
Pod,k8s 中特有的一个概念,可以理解为对容器的包装,是 k8s 的基本调度单位,实际的容器时运行在 Pod 中的,一个节点可以启动一个或多个 Pod。
kubelet,负责管理 worker 节点上的组件,与 master 节点上的 API server 节点进行交互,接受指令执行操作。
kube-proxy,负责对 Pod 进行寻址和负载均衡
用户操作 k8s 集群一般是通过 kubectl 命令行工具或者 dashboard;Pod 之间进行通讯是通过集群内部的覆盖网络 Overlay Network,外部流量想要进入集群访问 Pod 则是通过负载均衡 Load Balander 设备进行。
三、Kunbernetes 有哪些核心概念?
1. 集群 Cluster
集群有多个节点组成且可以按需添加节点(物理机/虚拟机),每一个节点都包含一定数量的 CPU 和内存 RAM。
2. 容器 Container
k8s 本身是一个容器调度平台,从宿主机操作系统来看,容器就是一个一个的进程。从容器内部来看容器就是一个操作系统,它有着自己的网络、CPU、文件系统等资源。
3. POD
k8s 也不是直接调度容器的,而是将其封装成了一个个 POD,POD 才是 k8s 的基本调度单位。每个 POD 中可以运行一个或多个容器,共享 POD 的文件系统、IP 和网络等资源,每一个 POD 只有一个 IP。
4. 副本集 ReplicaSet
一个应用发布时会发布多个 POD 实例,副本集可对应一个应用的一组 POD,它可以通过模板来规范某个应用的容器镜像、端口,副本数量等。运行时副本集会监控和维护 POD 的数量,数量过多则会下线 POD,过少则启动 POD。
5. 服务 service
POD 在 k8s 中是不固定的,可能会挂起或者重启,且挂起重启都是不可预期的,那么这就会导致服务的 IP 也随着不停的变化,给用户的寻址造成一定的困难。而 service 就是用来解决这个问题的,它屏蔽了应用的 IP 寻址和负载均衡,消费方可直接通过服务名来访问目标服务,寻址和负载均衡均由 service 底层进行。
6. 发布 Deployment
副本集就是一种基本的发布机制,可以实现基本的或者高级的应用发布,但操作较为繁琐。未来简化这些操作,k8s 引入了 Deployment 来管理 ReplicaSet,实现一些高级发布机制。
7. ConfigMap/Secret
微服务在上线时需要设置一些可变配置,环境不同则配置值不同,有些配置如数据库的连接字符串在启动时就应该配好,有些配置则可以在运行中动态调整。为了实现针对不同环境灵活实现动态配置,微服务就需要 ConfigMap 的支持。
k8s 平台内置支持微服务的配置(ConfigMap),开发人员将配置填写在 ConfigMap 中,k8s 再 将 ConfigMap 中的配置以环境变量的形式注入 POD,这样 POD 中的应用就可以访问这些配置。
Secret 是一种特殊的 ConfigMap,提供更加安全的存储和访问配置机制。
8. DaemonSet
在微服务中,每个节点需要配置一个常驻守护进程。DaemonSet 可支持在每一个 worker 节点上面配置一个守护进程 POD 并且保证每一个节点上有且仅有一个 POD。
9. 核心概念总结
概念 作用
cluster 超大计算机抽象,由节点组成
Container 应用居住和运行在容器中
Pod Kubernetes 基本调度单位
Service 应用Pods的访问点,屏蔽IP寻址和负载均衡
Deployment
管理ReplicaSet,支持滚动等高级发布机制
ConfigMap/Secrets 应用配置,secret敏感数据配置
DaemonSet 保证每个节点有且仅有一个Pod,常见于监控
————————————————
版权声明:本文为CSDN博主「敬 之」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_53072519/article/details/125228115
云原生 • Kubernetes 认识 k8s、k8s 架构、核心概念点介绍的更多相关文章
- 云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜?
云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜? Kubernetes 可以为做些什么? 在学习一种新技能之前,囧囧建议不要上去先看各种牛叉的实现,我们需要先搞清楚这个技能是什么?学习了之后能为我 ...
- 系列文章:云原生Kubernetes日志落地方案
在Logging这块做了几年,最近1年来越来越多的同学来咨询如何为Kubernetes构建一个日志系统或者是来求助在这过程中遇到一系列问题如何解决,授人以鱼不如授人以渔,于是想把我们这些年积累的经验以 ...
- 重磅发布 | 全球首个云原生应用标准定义与架构模型 OAM 正式开源
作者: OAM 项目负责人 导读:2019 年 10 月 17 日,阿里巴巴合伙人.阿里云智能基础产品事业部总经理蒋江伟(花名:小邪)在 Qcon 上海重磅宣布,阿里云与微软联合推出开放应用模型 Op ...
- 开放应用模型(OAM):全球首个云原生应用标准定义与架构模型
Kubernetes 项目作为容器编排领域的事实标准, 成功推动了诸如阿里云 Kubernetes (ACK)等云原生服务的迅速增长.但同时我们也关注到,Kubernetes 的核心 API 资源比如 ...
- 扩展 GRTN:云原生趋势下的 RTC 架构演进
在 2021 LiveVideoStackCon 音视频技术大会上海站,聚焦 "轻端重云和边缘架构新模式" 专场,阿里云视频云的 RTC 传输专家杨成立(忘篱)带来 "基 ...
- 终极指南:企业级云原生 PaaS 平台日志分析架构全面解析
早些时候 Erda Show 针对微服务监控.日志等内容做了专场分享,很多同学听完后意犹未尽,想了解更多关于日志分析的内容.Erda 团队做日志分析也有一段时间了,所以这次打算和大家详细分享一下我们在 ...
- [云原生]Kubernetes - 集群搭建(第2章)
目录 一.前置知识点 二.kubeadm部署方式介绍 三.安装要求 四.最终目标 五.准备环境 六.环境初始化 6.1 设置系统主机名以及Hosts文件的相互解析 6.2 安装依赖文件(所有节点) 6 ...
- 云原生系列6 基于springcloud架构风格的本地debug实现
debug是程序员在日常开发中最常使用的操作, 那么,你是如何快速在微服务架构风格下快速debug后端服务呢? 开发现状 开发的理想状态 本地调测的使用步骤 登录智能网关 如果集成开发环境是在本地局域 ...
- Longhorn,企业级云原生容器分布式存储 - K8S 资源配置示例
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
- Longhorn,企业级云原生容器分布式存储 - 监控(Prometheus+AlertManager+Grafana)
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? Longhorn 企业级云原生容器分布式存储解决方案设计架构和概念 Longhorn 企业级云原生容器分 ...
随机推荐
- Dockerfile文件中的ENTRYPOINT,CMD命令跟k8s中command,args之间的关系
- Ingress
一.需求背景 固定对外提供服务采用了NodePort方式映射并固定了30001端口,但是,该端口默认范围是30000~32767,并且我们的web服务一般都是80.443端口对外,因此我们产生了如下几 ...
- 基于electron+vue+element构建项目模板之【打包篇】
1.概述 开发平台OS:windows 开发平台IDE:vs code 本项目使用了一款Vue-CLI插件(vue-cli-plugin-electron-builder) 来构建 electron ...
- 天天向上力量B
N=eval(input()) up=pow(1+0.001*N,365) down=pow(1-0.001*N,365) print("{:.2f}, {:.2f}, {:.0f}&quo ...
- [笔记] 一种快速求 1 ~ n 逆元的方法
我们现在要求1~n在mod m意义下的逆元(n<m,m为素数). 对于一个[1,n]中的数i,我们令\(k=\lfloor\frac{m}{i}\rfloor,r=m \ mod \ i\) 然 ...
- 工作7年收集到的git命令
概念 git 中的术语解释: 仓库也叫版本库(repository) stage:暂存区,add 后会存到暂存区,commit 后提交到版本库 git 安装 linux 下安装 git 第一种方法:y ...
- 2021 CCPC 威海站 VP记录(题解)
2021 CCPC 威海站 VP记录(题解) 题目顺序为vp时开题顺序: A - Goodbye, Ziyin! 签到,连边数小于等于2的可以作为二叉树根,若有大于4的直接输出0. code: voi ...
- 前后端代码分离开发(Vue)
- 解决oracle18c没有hr用户
1.查找系统变量ORACLE_HOME的值 2.按照路径寻找sql文件 ORACLE_HOME变量值+demo\schema\human_resources 3.把hr_main.sql脚本文件放在此 ...
- pod(九):污点taint 与容忍度tolerations
目录 一.系统环境 二.前言 三.污点taint 3.1 污点taint概览 3.2 给节点添加污点taint 四.容忍度tolerations 4.1 容忍度tolerations概览 4.2 设置 ...