新·云原生之路
文章平均质量分 86
思虑再三,回头巩固基础。万丈高楼,地基不牢,死得快。
1、这首先是写给我自己看的。
2、每篇文章都会不断被优化。
3、每个月都会出一份优化日志。
看,未来
墨家学徒
展开
-
kubernetes rbac 权限管理
访问控制是云原生中的一个重要组成部分,也是一个 Kubernetes 集群在多租户环境下必须要采取的一个基本的安全架构手段。那么在概念上可以抽象的定义为谁在何种条件下可以对什么资源做什么操作。这里的资源就是在 Kubernetes 中我们熟知的:Pod、ConfigMaps、Deployment、Secrets 等等这样的资源模型。kubernetes 支持的认证鉴权方式有几个,这里只讲 RBAC。原创 2022-10-23 19:05:55 · 1094 阅读 · 6 评论 -
PersistentVolume、PersistentVolumeClaim && StorageClass
持久卷(PersistentVolume,PV)是集群中的一块存储,可以由管理员事先制备, 或者使用存储类(Storage Class)来动态制备。持久卷是集群资源,就像节点也是集群资源一样。PV 持久卷和普通的 Volume 一样, 也是使用卷插件来实现的,只是它们拥有独立于任何使用 PV 的 Pod 的生命周期。持久卷申领(PersistentVolumeClaim,PVC)表达的是用户对存储的请求。概念上与 Pod 类似。Pod 会耗用节点资源,而 PVC 申领会耗用 PV 资源。原创 2022-10-05 10:06:58 · 1607 阅读 · 0 评论 -
service
Service 用于为一组提供服务的 Pod 抽象一个稳定的网络访问地址。通过 Service 的定义,能够为客户端应用提供稳定的访问地址和负载均衡功能,以及屏蔽后端 Endpoint 的变化,是 kubernetes 实现微服务的核心资源。nametyperequiredbackupversionstring1kindstring1Servicemetadateobject1m.namestring1Service 名称,可配置用于访问string1。原创 2022-10-04 11:26:57 · 898 阅读 · 0 评论 -
关于 deployment 的 spec.selector 是否必选验证
2、为什么会问出这个问题?是什么妨碍了你写这个字段吗?1、在我的环境上,必选。原创 2022-10-02 15:08:47 · 773 阅读 · 0 评论 -
k8s 污点和容忍
在 Kubernetes 中,节点亲和性 NodeAffinity 是 Pod 上定义的一种属性,能够使 Pod 按我们的要求调度到某个节点上,而 Taints(污点) 则恰恰相反,它是 Node 上的一个属性,可以让 Pod 不能调度到带污点的节点上,甚至会对带污点节点上已有的 Pod 进行驱逐。当然,对应的 Kubernetes 可以给 Pod 设置 Tolerations(容忍) 属性来让 Pod 能够容忍节点上设置的污点,这样在调度时就会忽略节点上设置的污点,将 Pod 调度到该节点。原创 2022-09-25 15:31:50 · 3467 阅读 · 1 评论 -
k8s 服务注册与发现(四)DNS解析异常问题排查
本文介绍关于DNS解析异常的诊断流程、排查思路、常见解决方案和排查方法。转载 2022-09-24 16:57:04 · 4400 阅读 · 0 评论 -
k8s 服务注册与发现(三)CoreDNS
整个 CoreDNS 服务都建立在一个使用 Go 编写的 HTTP/2 Web 服务器上,CoreDNS 整个项目可以作为一个 Caddy 的教科书用法。CoreDNS 的大多数功能都是由插件来实现的,插件和服务本身都使用了 Caddy 提供的一些功能,所以项目本身也不是特别的复杂。原创 2022-09-24 16:49:03 · 1364 阅读 · 0 评论 -
k8s 服务注册与发现(二)Kubernetes内部域名解析原理
在 Kubernetes 中,比如服务 a 访问服务 b,对于同一个 Namespace下,可以直接在 pod 中,通过 curl b 来访问。对于跨 Namespace 的情况,服务名后边对应 Namespace即可。比如 curl b.default。那么,使用者这里边会有几个问题:①:服务名是什么?②:为什么同一个 Namespace 下,直接访问服务名即可?不同 Namespace 下,需要带上 Namespace 才行?③:为什么内部的域名可以做解析,原理是什么?原创 2022-09-24 16:03:25 · 2225 阅读 · 0 评论 -
k8s 服务注册与发现(一)DNS
域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。原创 2022-09-24 11:19:55 · 2175 阅读 · 2 评论 -
nodeSelector:Pod 定向调度
在实际情况下,有时候需要将 Pod 调度到制定的一些 Node 上,比如说CPU密集型Pod调度到CPU够大的节点上,IO密集型Pod调度到带宽够大的节点上等等。可以通过 Node 的标签和 Pod 的 nodeSelector 属性相匹配,来达到上述目的。beta.kubernetes.io/os(到 1.18 版本删除)beta.kubernetes.io/arch(到1.18 版本删除)用户可以使用这些系统标签进行调度。原创 2022-09-21 20:45:21 · 906 阅读 · 0 评论 -
init container
init container 与应用容器在本质上是一样的,但是它们仅是运行一次就结束的任务,并且必须在成功运行完成后,系统才能继续执行下一个容器。init container 的重启策略建议设置为 OnFailure。原创 2022-09-18 21:28:42 · 1600 阅读 · 0 评论 -
Pod 生命周期、重启策略、健康检查、服务可用性检查
ReadinessProbe 用于判断容器服务是否可用,对于被 Service 管理的 Pod,如果发现容器不可用,系统将从 Service 的后端 Pod Endpoint 列表中将该 pod 隔离出去,直到它什么时候可用了再放回来。kubelet 重启失败容器的时间间隔以 sync-frequency 乘 2n 来计算,如 1、2、4、8 倍等,最长时延 5min,并在重启成功之后的 10 min 后重置该时间。1)execAction,在容器内部运行一个命令,如果命令返回码为0,则表明容器健康。原创 2022-09-18 20:40:23 · 881 阅读 · 1 评论 -
在容器内获取 Pod 信息
注意:env 不直接设置 value,而是使用 valueFrom 对 Pod 的元数据进行引用。原创 2022-09-18 15:26:43 · 1226 阅读 · 0 评论 -
Pod 配置管理:configMap
ConfigMap 以一个或多个 key:value 的形式保存在 kubernetes 系统中供应用使用,既可以用于表示一个变量的值,也可以用于表示一个完整配置文件的内容。原创 2022-09-17 23:00:20 · 827 阅读 · 1 评论 -
Pod 定义详解
属性名称取值类型是否必选取值说明备注apiVersionstringRequired版本号kindstringRequired资源类型meatdateobjectRequired元数据m.namestringRequiredpod 名称stringRequiredpod 所属命名空间默认为 defaultm.labelslist自定义标签列表list自定义注解列表specobjectRequiredpod 中容器的详细定义list。原创 2022-09-17 15:43:48 · 1488 阅读 · 0 评论 -
学好 Yaml
之前是快速上手 yaml,这可以让我学习 kubernetes,但是真要工作用,总是差了一点东西,所以今天回炉重造。YAML 是一种较为人性化的数据序列化语言,可以配合目前大多数编程语言使用。YAML 的语法比较简洁直观,特点是使用空格来表达层次结构,其最大优势在于数据结构方面的表达,所以 YAML 更多应用于编写配置文件,其文件一般以 .yaml(或者 .yml) 为后缀。大小写敏感使用缩进表示层级关系缩进时不允许使用Tab键,只允许使用空格。原创 2022-09-17 10:11:31 · 818 阅读 · 0 评论 -
k8s 配置存储之 Configmap & secret
这篇比较轻松,因为我这会儿的时间被称之为“碎片时间”。原创 2022-07-25 21:58:21 · 1172 阅读 · 3 评论 -
k8s 存储卷之 PV & PVC
由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用户使用, kubernetes引入PV和PVC两种资源对象。- PV(Persistent Volume)是持久化卷的意思,是对底层的共享存储的一种抽象。一般情况下PV由kubernetes管理员进行创建和配置,它与底层具体的共享存储技术有关,并通过插件完成与共享存储的对接。- PVC(Persistent Volume Claim)是持久卷声明的意思,是用户对于存储需求的一种声明。换句原创 2022-07-22 19:49:06 · 1445 阅读 · 3 评论 -
k8s 存储卷之简单存储
EmptyDir是在Pod被分配到Node时创建的,它的初始内容为空,并且无须指定宿主机上对应的目录文件,因为kubernetes会自动分配一个目录,当Pod销毁时,EmptyDir中的数据也会被永久删除。NFS是一个网络文件存储系统,可以搭建一台NFS服务器,然后将Pod中的存储直接连接到NFS系统上,这样的话,无论Pod在节点上怎么转移,只要Node跟NFS的对接没问题,数据就可以成功访问。2、在每个node节点上都安装下nfs,这样的目的是为了node节点可以驱动nfs设备。...原创 2022-07-22 19:39:20 · 467 阅读 · 0 评论 -
Kubernetes 部署策略
在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略:- 重建(recreate):停止旧版本部署新版本- 滚动更新(rolling-update):一个接一个地以滚动更新方式发布新版本- 蓝绿(blue/green):新版本与旧版本一起存在,然后切换流量- 金丝雀(canary):将新版本面向一部分用户发布,然后继续全量发布- A/B原创 2022-07-22 19:35:45 · 1003 阅读 · 0 评论 -
K8s 资源更新机制详解
看了上述的介绍,大家应该对K8s更新机制有了一个初步的了解了。接下来想一想,既然K8s提供了两种更新方式,我们在不同的场景下怎么选择update或patch来使用呢?如果要更新的字段只有我们自己会修改(比如我们有一些自定义标签,并写了operator来管理),则使用patch是最简单的方式;如果要更新的字段可能会被其他方修改(比如我们修改的replicas字段,可能有一些其他组件比如HPA也会做修改),则建议使用update来更新,避免出现互相覆盖。https。...原创 2022-07-20 21:21:19 · 2334 阅读 · 0 评论 -
Deployment 原理
所有的 Deployment 对象都是由 Kubernetes 集群中的 `DeploymentController` 进行管理,DeploymentController 会在启动时通过 Informer 监听三种不同资源的通知,Pod、ReplicaSet 和 Deployment,这三种资源的变动都会触发 DeploymentController 中的回调。...原创 2022-07-17 13:21:00 · 1841 阅读 · 5 评论 -
k8s 资源管理之 deployment
在kubernetes中,Pod是最小的控制单元,但是kubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。Pod控制器用于Pod的管理,确保Pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建Pod。在kubernetes中Pod控制器的种类有很多,Deployment 是最常用的那种。Deployment 分两篇来写,这一篇主要是实操部分,下一篇是原理部分。...原创 2022-07-17 13:15:23 · 3415 阅读 · 3 评论 -
Pod 生命周期与重启策略
1、用户通过kubectl或其他api客户端提交需要创建的pod信息给apiServer。2、apiServer开始生成pod对象的信息,并将信息存入etcd,然后返回确认信息至客户端。3、apiServer开始反映etcd中的pod对象的变化,其它组件使用watch机制来跟踪检查apiServer上的变动。4、scheduler发现有新的pod对象要创建,开始为Pod分配主机并将结果信息更新至apiServer。5、node节点上的kubelet发现有pod调度过来,尝试调用docker启动容器,原创 2022-07-13 19:09:50 · 1547 阅读 · 3 评论 -
Kubernetes 部署策略
在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略:策略定义为Recreate的Deployment,会终止所有正在运行的实例,然后用较新的版本来重新创建它们。...原创 2022-07-12 20:34:19 · 536 阅读 · 0 评论 -
pod 调度详解:亲和、污点和容忍
一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的。但是在实际使用中,这并不满足的需求,因为很多情况下,我们想控制某些Pod到达某些节点上,那么应该怎么做呢?这就要求了解kubernetes对Pod的调度规则,kubernetes提供了四大类调度方式:在默认情况下,一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计...原创 2022-07-12 09:45:00 · 421 阅读 · 0 评论 -
k8s 资源管理之 Label 与 Selector
Label是kubernetes的一个重要概念。它的作用就是在资源上添加标识,用来对它们进行区分和选择。● Label的特点:○ 一个Label会以key/value键值对的形式附加到各种对象上,如Node、Pod、Service等。○ 一个资源对象可以定义任意数量的Label,同一个Label也可以被添加到任意数量的资源对象上去。○ Label通常在资源对象定义时确定,当然也可以在对象创建后动态的添加或删除。(文中资源默认衔接前两篇 “Pod 讲解” 中的资源)让我们给这个 nginx pod 打上原创 2022-07-11 23:57:27 · 1116 阅读 · 0 评论 -
k8s 资源管理 前导篇
kubernetes中所有的内容都抽象为资源,可以通过下面的命令进行查看:● 经常使用的资源如下所示:● ① 集群级别资源:● ② Pod资源:● ③ Pod资源控制器:● ④ 服务发现资源:● ⑤ 存储资源:● ⑥ 配置资源:kubectl 是 Kubernetes 的命令行工具(CLI),是 Kubernetes 用户和管理员必备的管理工具。在管理工具界面使用kubectl语法运行如下命令:(1)comand:指定要对资源执行的操作,例如 create、get、describe 和 delete原创 2022-07-08 15:47:19 · 289 阅读 · 0 评论 -
k8s 资源管理之 Pod
导读:● Pod是kubernetes集群进行管理的最小单元,程序要运行必须部署在容器中,而容器必须存在于Pod中。● Pod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。那么,为什么需要 Pod?...原创 2022-07-08 09:15:32 · 574 阅读 · 4 评论 -
目标:不排斥 yaml 语法。争取快速上手
这三年,除了 Makefile,我就没碰过这么怪的语法。当然 Makefile 我是果断放弃了,因为我会写 CMake 嘿嘿。怪也得上手啊,马上就要用的东西了。先通读一下语法吧,反正不多,一会儿拿 Python 来演示一下可能会感觉世界都明朗了吧(不得不说,Python 真是个好东西)...原创 2022-07-07 11:30:24 · 820 阅读 · 0 评论 -
kubeadm 安装 k8s 集群(版本自选)
导读:k8s 的出现,是解决了什么市场痛点?互联网早期,企业将服务直接部署在物理机上;后来由于一系列变化,经历了虚拟化部署,开始了 容器部署之路,Docker 无疑是其中的佼佼者。注:安装过程中遇到问题可以在后台回复 “咨询“,我来看报错日志、...原创 2022-07-07 00:18:44 · 1212 阅读 · 1 评论 -
谈谈 Docker 镜像多阶段构建
导读:通常情况下,构建镜像通常会采用两种方式:1. 将全部组件及其依赖库的编译、测试、打包等流程封装进一个 Docker镜像中。采用这种方式往往忽略了以下这些问题: - Dockefile 特别长,可维护性降低。 - 镜像的层次多,体积大,部署时间长。 - 源代码存在泄漏的风险。2. 分散到多个 Dockerfile。事先在一个 Dockerfile 将项目及其依赖库编译测试打包好后,再将其拷贝到运行环境中,这种方式需要我们编写两个 Dockerfile......原创 2022-07-03 20:53:13 · 1002 阅读 · 6 评论 -
Docker 进阶之镜像分层详解
导读:可以想象,像 ubuntu等基础镜像,体积必然不小。那么,思考以下几个问题:- 我们基于同一个镜像(ubuntu 18.4)启动了两个容器,会占用两倍磁盘空间吗?- 我们在容器内修改或者新建了某个文件,要修改原镜像吗?- 我们基于某镜像(ubuntu 18.04)新建一个镜像(myubuntu),需要将原镜像文件全部拷贝到新镜像中吗?首先,让我们尝试思考下,如果我们去做,该如何高效的解决这些问题?- 方案一,...- 方案二,...- 方案三,......原创 2022-06-29 10:10:03 · 2665 阅读 · 4 评论 -
Docker 进阶之 Dockerfile 详解
Dockerfile的优点:- 能够自由灵活的与宿主机联系,比如,某些配置文件在宿主机验证并使用过后很好用,那么,可以将文件copy到镜像中,add 远程主机的配置文件到镜像中,定义onbuild动作等等各种灵活的功能。- dockerfile本身就是一个比较详细的构建文档,有这个文档就可以清楚的知道新构建的镜像经历了怎样的变化。没有黑箱操作的困扰,后期维护更加方便。......原创 2022-06-28 11:16:38 · 1810 阅读 · 0 评论 -
Docker 实践经验:Docker上部署 redis 三主三从集群
文章目录环境准备简易版本安装搭建 redis 三主三从集群进入集群节点查看集群状态优化路由主从切换集群扩容集群缩容环境准备1、一个 redis 镜像2、准备一份 redis.conf,建议使用物理机安装 redis 后自带的。3、准备一个承载目录,用于挂载 redis 容器数据卷,以及将配置文件放进去。我这里使用 /redis-data注释掉 redis.conf 里面的 bind 127.0.0.1,以允许外连接简易版本安装docker run -p 6379:6379 --name .原创 2022-04-23 16:43:25 · 2283 阅读 · 0 评论 -
Docker实践经验:Docker 上部署 mysql8 主从复制
文章目录环境准备简易版本安装设置密码配置 MySQL 主从复制创建 bridge 网络并指定 IP 区间创建数据和配置存放目录准备配置文件主数据库从数据库启动数据库启动主数据库启动从数据库远程访问配置(主从)主库创建复制用户查看 master 机器的状态从库设置 master 的信息开启主从复制环境准备需要一个 MySQL8 版本的 MySQL,因为我个人没有用过 mysql5,不知道二者是否会有一些特性上的偏差。默认你与我的环境是一样的。简易版本安装先仅仅安装一个 MySQL,一上来就主从的.原创 2022-04-17 16:16:05 · 7772 阅读 · 16 评论 -
Docker 入门,学明白这一篇就够啦
...Docker 之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案-----系统平滑移植,容器虚拟化技术。...容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。...每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。......原创 2022-06-23 15:51:03 · 1287 阅读 · 1 评论 -
未来已来:云原生时代
...云上的战争,才刚刚开始。作为一名开发者,我们要如何成为云原生时代的弄潮儿?跑步入场,跑步入场,跑步入场啊!!!...原创 2022-06-21 15:57:42 · 844 阅读 · 1 评论