大蕉说k8s(开篇)No.181

2024-05-15 08:18

本文主要是介绍大蕉说k8s(开篇)No.181,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Kubernetes,全名还是有点长的,业界缩写是 k8s,后续我也用k8s来代替全名。关于k8s,官方的介绍是这样的

Kubernetes is an open-source system for automating deployment, scaling, and management of containerized applications.

k8s是一个提供 自动化部署、自动化扩缩容以及管理容器化应用的开源系统。

怎么理解呢?就是首先,k8s 是开源的,这是毋庸置疑的。其次呢,k8s 管理的对象是 容器化的应用,也就是说普通的非容器化的应用它不管。第三呢,它提供了 自动化部署和自动化扩缩容 的能力。

这三条合起来,可以实现一个普遍的现有系统自动化运维能力。

至于为什么用容器来作为运行基础,每个人有每个人的看法,我的看法比较势利,就是为了提高资源利用率,人和机器利用率,主要是机器。

直接部署在物理主机上或者云主机上是这样的,所有 App 公用操作系统以及硬件资源,各个App间可能互相影响,无法隔离,这确实是资源利用最高效的方式。

虚拟机部署方式是这样的,好处是各个应用隔离非常彻底,缺点就是都要在主机操作系统上,跑多一层操作系统,资源浪费比较严重。

容器化部署是这样的,好处就是App间隔离非常好,公用底层操作系统资源利用率蛮高,每个App都有自己的环境和资源分配。目前比较主流的开源容器技术有两,一是 Docker,二是Rocket。(小提问,Docker需要我来讲吗?)

总得来说,k8s选择容器技术作为最基础运行单位,有着一定的考虑,比较重点的原因是容器技术可以做到 App 间隔离,以及相对于虚拟机的资源利用率。但是还有更加核心的一点,就是容器镜像。

有了容器镜像,开发者在本地运行的环境,跟放在服务端运行的环境可以保持 几乎 100% 一致,本地的表现是怎样的,打包成镜像后在服务端运行的表现就是怎样的。另外一方面,因为镜像很标准包含了应用所需的所有环境,应用可以在调度下,非常非常方便地进行水平扩容和缩容。

聊完基础的,聊聊 k8s 整体的大框架,图取自《kubernetes 实战》。

大的组件是这样的,我先大概讲一下各自的用途,后面每个组件详细说说,我们把 Kubernetes 当成小区公寓管理员,那么 Docker 可以认为是一个个的商品房套间里的一个房间。整个k8s 调度可以这样理解,一个是 status 状态,一个是 spec 期待,我们会有一个监控的程序,一直看着集群有任何一个部署的单元的状态,如果当前的状态跟期待值有区别,将会按照定义好的方式,把它搞到状态值跟期待值一致。

比如我定义了 

spec: 3只????

status: 2 只 ????

可以看到,当前的状态不对,需要再搞1 只????。那么管理员不管是现场生1只????,还是去路上捡1 只????,都要把它搞到 3只????,而且还要品种一样。这让管理应用集群的小伙子压力小多了。

Namespace: 命名空间,隔离用的,不同 NameSpace 相当于不同的单元。比如一单元二单元, 小区单元间默认是不互通的(当然也有办法打通,比如通过 Service)。

Deployment: 部署,我们最常见的应用就会部署在这里啦,他相当于一个套间,其中包含 Pod (整个套间,可能包含多个容器,荷兰????和中华田园????要分房间) 和 Volume (存储间)。

Pod: 部署的最小单位,一个 Pod 相当于整个套间,这个 Pod 要么完全起来要么完全没起来,起了一半的都算没起。k8s 的调度也是基于 Pod 维度的,也就是说,一旦一个 Pod 的 一个容器坏掉了要换,k8s 不会只换一个容器,会直接换掉整个 Pod (1 个????间坏了,整套公寓都要换掉)。

Volume: 在k8s 中,存储是伴随着目录的,如果没有特殊外部存储,那么一个容器的启动会新建一个目录,并且在销毁的时候会把它删掉,也就是说你连????粑粑可能都见不到。而看不到????粑粑是很难受的,排查问题都没法排查。所以我们可以把外部存储挂载进来。常见的有三种,一种是本地空目录,一种是主机目录,另外一种是 PV (Persistent Volume 持久化卷)。

ConfigMap: 我们会把几乎所有的配置放在 ConfigMap 中,是典型的 kv 存储。这样维护起来很简单,也不需要每次启动容器的时候手动改配置。

Secret: 跟ConfigMap 是一模一样的,区别就是只有在运行时的时候可以由程序获取到,其他时间任何人都是看不见的。

DaemonSet: 后台程序,跟 Deployment 没什么区别,会一直在后台运行,会在每一个加入集群的节点中都启动一个,保证自己是启动的,一般会是一些守护容器或者监控或者代理容器。

StatefulSet: 跟 Deployment 没什么区别 ,区别点有两个,第一个是 StatefulSet 是有唯一固定的标识的。Deployment 来说杀掉一个 1 号 Pod,可能会创建一个8 号 Pod 来代替。但是 StatefulSet 杀掉一个 1 号 Pod,也会创建一个一样的 1 号 Pod 来代替。第二个是会配合外部固定的持久化存储使用,保证新创建的 Pod 数据也是跟原来的 Pod 保持一致。一般 Mysql 这类需要固定存储的会用这类存储。

CrobJob: 内容跟 Deployment 差不多,区别点就是Deployment 会一直运行着,CrobJob 会定时运行,运行完成就杀掉自己。

Job: 跟 CrobJob 一样,区别就是运行一次就杀掉自己,一般没人用。

LabelSelector: 标签选择器,k8s 内部基本所有资源筛选都会通过打标签的形式。比如Pod 选择部署的节点,Service 服务选择提供服务的 Pod。定义的形式就是典型的字符串 kv。比如 wealth :  rich,height : 180,outlook : hansome。

Service: 选择一批 Pod 作为服务提供者,并且与集群的 dns 联动,生成统一的域名,集群内一般通讯都通过 Service 进行。特定的 Service 比如 Ingress 和 Nginx 还可以对外暴露端口进行服务提供。比如 Service 名叫荷兰????,会寻找 Label 为荷兰????的 Pod,然后直接把它们暴露给需要服务的人。

其他没什么好说的,基础概念说完了。如果你只能记住一句话,那么就记住这个叭。Pod 是最基础部署单元,有很多个容器,带了一定的标签,可以通过 Service 对外提供服务。

这篇关于大蕉说k8s(开篇)No.181的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/991291

相关文章

90、k8s之secret+configMap

一、secret配置管理 配置管理: 加密配置:保存密码,token,其他敏感信息的k8s资源 应用配置:我们需要定制化的给应用进行配置,我们需要把定制好的配置文件同步到pod当中容器 1.1、加密配置: secret: [root@master01 ~]# kubectl get secrets ##查看加密配置[root@master01 ~]# kubectl get se

K8S(Kubernetes)开源的容器编排平台安装步骤详解

K8S(Kubernetes)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。以下是K8S容器编排平台的安装步骤、使用方式及特点的概述: 安装步骤: 安装Docker:K8S需要基于Docker来运行容器化应用程序。首先要在所有节点上安装Docker引擎。 安装Kubernetes Master:在集群中选择一台主机作为Master节点,安装K8S的控制平面组件,如AP

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

云原生之高性能web服务器学习(持续更新中)

高性能web服务器 1 Web服务器的基础介绍1.1 Web服务介绍1.1.1 Apache介绍1.1.2 Nginx-高性能的 Web 服务端 2 Nginx架构与安装2.1 Nginx概述2.1.1 Nginx 功能介绍2.1.2 基础特性2.1.3 Web 服务相关的功能 2.2 Nginx 架构和进程2.2.1 架构2.2.2 Ngnix进程结构 2.3 Nginx 模块介绍2.4

用Cri-O,Sealos CLI,Kubeadm方式部署K8s高可用集群

3.6 Cri-O方式部署K8s集群 注意:基于Kubernetes基础环境 3.6.1 所有节点安装配置cri-o [root@k8s-all ~]# VERSION=1.28[root@k8s-all ~]# curl -L -o /etc/yum.repos.d/devel:kubic:libcontainers:stable.repo https://download.opensu

培训第九周(部署k8s基础环境)

一、前期系统环境准备 1、关闭防火墙与selinux  [root@k8s-master ~]# systemctl stop firewalld[root@k8s-master ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/multi-user.target.wants/firewalld.servi

开篇: 为什么要做这个项目?

背景 最近工作中遇到一个需求需要实现一版在线的Web编辑器,类似 Vue Playground 的效果,但是Vue playground 整体体验下来不是很好,和本地 VSCode 编辑器开发体验差距较大(虽然理解在线编辑器没必要完全照着本地开发体验来)。 经过多方体验调研,发现目前的业界方案主要两种: 基于Monaco / Codemirror 实现,也是大多数场景使用的方案,但是效果却是参

k8s 存储(PV、PVC、SC、本地存储、NFS)

存储持久化相关三个概念: PersistentVolume (PV) 是对具体存储资源的描述,比如NFS、Ceph、GlusterFS等,通过PV可以访问到具体的存储资源;PersistentVolumeClaim (PVC) Pod想要使用具体的存储资源需要对接到PVC,PVC里会定义好Pod希望使用存储的属性,通过PVC再去申请合适的存储资源(PV),匹配到合适的资源后PVC和PV会进行绑定

浏览器工作原理(1)-开篇

本系列博客为学习《浏览器工作原理及实践》所笔记 开篇 浏览器的发展历程中的三个进化路线: 应用程序web化:B/S架构,视频、音频、游戏往web场景切换 web应用移动化:存在问题有渲染流程复杂,性能不够好,离线时用户无法使用,无法接受消息推送,不过PWA方案可以整合Web和本地程序的优势 Web操作系统化:两层含义:1 利用web技术构建一个纯粹的操作系统(ChromeOS);2