旧·云原生之路
文章平均质量分 76
不搞花架子,踏踏实实做自己的生态。
看,未来
墨家学徒
展开
-
Go 语言入门三部曲(一):能看懂 Go 语言
0、能看完这篇却没动手原创 2022-06-14 21:59:14 · 672 阅读 · 0 评论 -
Calico on Kubernetes
由于两台物理机的容器网段不同,我们完全可以将两台物理机配置成为路由器,并按照容器的网段配置路由表。在物理机A中,我们可以这样配置:要想访问网段172.17.9.0/24,下一跳是192.168.100.101,也即到物理机B上去。这样在容器A中访问容器B,当包到达物理机A的时候,就能够匹配到这条路由规则,并将包发给下一跳的路由器,也即发给物理机B。在物理机B上也有路由规则,要访问172.17.9.0/24,从docker0的网卡进去即可。当容器B返回结果的时候,在物理机B上,可以做类似的配置:要想访问网原创 2022-06-13 10:08:17 · 463 阅读 · 1 评论 -
关于我的 “二进制部署 kubernetes 集群” 的体验
关于这个事情,终于是告一段落了。如果从安装开始算,大概花了有将近二十个小时吧,是一个很漫长的工作。如果从起意做到现在,那真的太长了。在这次安装的过程中,我对 kubernetes 有了一个更深的理解,我觉得就算把这个东西作为一个毕设他的工作量都不为过了。当然,理解还比较浅薄,我不同意我找到的资料是浅薄的,是我在这段时间里面太激进了,没有很好的去吃透,只是到达“懂了”,然后就下一 part,要我复述是不可能的。但是现在我部署完了,我回过头来,还有一个月的时间给我慢慢的去理解、消化、扩张。我承认这次部署有“赌”原创 2022-06-11 17:32:14 · 454 阅读 · 0 评论 -
kubernetes 二进制安装(v1.20.15)(九)收尾:部署几个仪表盘
组件已成功创建,但是还不能从外部进行访问,为了能一见dashboard的芳容,我们需要改造一下svc的类型。在浏览器中访问 https://ip:31054打开页面之后,你会发现需要登陆。部署MetricsServer从 v1.8 开始,资源使用情况的监控可以通过 Metrics API的形式获取,具体的组件为Metrics Server,用来替换之前的heapster,heapster从1.11开始逐渐...原创 2022-06-11 16:55:33 · 393 阅读 · 0 评论 -
kubernetes 二进制安装(v1.20.15)(八)部署 网络插件
先新建个文件夹:/opt/TLS/k8s/yml前面讲部件的时候没有专门对 calico 进行分析,后面会补上。calico.yaml,自己在网上也可以找,找不到也可以直接用我的(私信,或者到我的资源里面找)然后等个几分钟,查看状态:部署 coredns前面分析组件的时候把 coredns 也给忘了,后面也得补上。coredns.yaml:这份 yaml 是有点小问题的,大家可以自行解决一下,不难,连我都能解决,何况你们嘛。部署:过个几分钟再看:Over,接下来我们再整几个仪表盘,我上一个原创 2022-06-11 16:25:21 · 584 阅读 · 3 评论 -
Kubernetes TLS bootstrapping
众所周知 TLS 的作用就是对通讯加密,防止中间人窃听;同时如果证书不信任的话根本就无法与 apiserver建立连接,更不用提有没有权限向 apiserver 请求指定内容。在开启了 TLS 的集群中,每当与集群交互的时候少不了的是身份认证,使用 kubeconfig(即证书) 和 token 两种认证方式是最简单也最通用的认证方式。当集群开启了 TLS 认证后,每个节点的 kubelet 组件都要使用由 apiserver 使用的...原创 2022-06-11 11:09:45 · 708 阅读 · 0 评论 -
kubernetes 二进制安装(v1.20.15)(七)加塞一个工作节点
这里我再说一遍 TLS Bootstrapping:算了下一篇吧,这里之所以要删除这两个文件,是因为要从 master 的 apiserver 重新生成,如果有东西在那边,会导致一些莫名其妙的后果,比方说 kubelet 起来了,但是从master 上扫描不到 node。如果有想重新安装 kubelet,记得要将那两个地方清理一下,不然会很有意思…注:bootstrap.kubeconfig 那里面是 master 的地址。...原创 2022-06-10 21:47:50 · 564 阅读 · 0 评论 -
kubernetes 二进制安装(v1.20.15)(六)部署WorkNode节点
注1:因为本机资源的限制,我们可以让Master Node上兼任Worker Node角色。注2:本篇不在 k8s-node1 上作为,下一篇就知道了。分发文件核对文件部署kubelet创建配置文件配置参数文件创建管理文件创建kubeconfig文件这里要注意,如果前面是自行生成的 token,这里要做相应的修改:分发文件这里要注意,拓展新节点的时候要把文件分发过去...原创 2022-06-10 16:46:25 · 650 阅读 · 0 评论 -
PKI/TLS瑞士军刀之cfssl
CFSSL是CloudFlare公司提供的PKI/TLS工具,是一组使用Go语言开发的开源工具。CloudFlare公司的主营业务之一就是提供网络安全服务,在开源CFSSL的时候就宣称他们所有的TLS证书都使用了CFSSL工具。证书的管理涉及很多方面比如证书链,对于很多运维管理者来说都是很繁琐的事情,CFSSL的目标之一就是为了解决证书管理在性能、兼容性以及安全性的问题。CA(Certification Authority)证书,指的是权威机构给我们颁发的证书。密钥就是用来加解密用的文件或者字符串。密钥在非原创 2022-06-10 15:34:28 · 584 阅读 · 0 评论 -
kubernetes 二进制安装(v1.20.16)(五)验证 master 部署
书接上文:kubernetes 二进制安装(v1.20.16)(四)部署 master停了一天没有更新,因为出了点状况,在排查。生成连接证书生成kubeconfig文件分发文件查看集群组件状态我在排查的过程中添加了一个 apiserver 向外部访问的 client 证书,然后重新部署了一遍。所以如果说你们部署到现在出现了失败,及时私信我,教程到这里还是没有问题的。...原创 2022-06-10 13:10:13 · 361 阅读 · 3 评论 -
查看 k8s各版本 对应 各组件版本
https://github.com/kubernetes/kubernetes/blob/v1.23.6/build/dependencies.yaml原创 2022-06-09 20:41:21 · 2300 阅读 · 0 评论 -
kubernetes 证书合集
Kubernetes需要PKI证书才能通过TLS进行身份验证。如果使用kubeadm安装Kubernetes,则会自动生成集群所需的证书。还可以生成自己的证书,例如,通过不将私钥存储在API服务器上来保持私钥更安全。当然,我们目前是在手动安装嘛。安装出了点故障,说证书不合法,所以想了想,还是先整理一遍证书吧,不然后面还可能再出这种问题,排查又不好排查。先从Etcd算起:再算kubernetes:加起来共8套。同一个套内的证书必须是用同一个CA签署的,签署不同套里的证书的CA可以相同,也可以不同。例如,原创 2022-06-09 13:39:47 · 903 阅读 · 1 评论 -
kubernetes 二进制安装(v1.20.16)(四)部署 master
无部署Apiserver签发apiserver 证书创建配置文件启用 TLS Bootstrapping 机制TLS Bootstraping:Master apiserver启用TLS认证后,Node节点kubelet和kube-proxy要与kube-apiserver进行通信,必须使用CA签发的有效证书才可以,当Node节点很多时,这种客户端证书颁发需要大量工作,同样也会增加集群扩展复杂度。为了简化流程,Kubernetes引入了TLS bootstraping...原创 2022-06-08 23:57:28 · 502 阅读 · 0 评论 -
kubernetes 二进制安装(v1.20.16)(三)容器运行时
本集群选择 docker 作为容器运行时。原创 2022-06-08 10:27:21 · 373 阅读 · 0 评论 -
kubernetes 二进制安装(v1.20.16)(二)部署 etcd 集群
那么,打起十二分精神,一不小心就要重头再来。不过也有一个好的地方就是,安装完一块,就是一块。生成自签CA证书创建etcd证书申请文件签发Etcd HTTPS证书部署Etcd集群生成etcd管理文件分发文件核对文件启动etcd集群查看etcd集群状态这一步很重要,前面如果哪里写错了,说不定也能运行的下去,但是如果前面真的哪里写错了,这一步是走不通的。我遇到的几个问题解决方案已经发在(问题解决)专栏里了。...原创 2022-06-08 09:58:32 · 551 阅读 · 0 评论 -
kubernetes 二进制安装(v1.20.16)(一)环境准备
我们明明可以用 kubeadm 直接部署 k8s 集群,简单又快速,为什么要用繁琐复杂的二进制安装?原创 2022-06-07 22:33:31 · 731 阅读 · 2 评论 -
kubernetes 组件之 kube-proxy
我们知道容器的特点是快速创建、快速销毁,Kubernetes Pod和容器一样只具有临时的生命周期,一个Pod随时有可能被终止或者漂移,随着集群的状态变化而变化,一旦Pod变化,则该Pod提供的服务也就无法访问,如果直接访问Pod则无法实现服务的连续性和高可用性,因此显然不能使用Pod地址作为服务暴露端口。解决这个问题的办法和传统数据中心解决无状态服务高可用的思路完全一样,通过负载均衡和VIP实现后端真实服务的自动转发、故障转移。这个负载均衡在Kubernetes中称为Service,VIP即Service原创 2022-06-04 22:16:12 · 4492 阅读 · 1 评论 -
kubernetes 组件之 kubelet
每个Node节点上都运行一个 Kubelet 服务进程,默认监听 10250 端口,接收并执行 Master 发来的指令,管理 Pod 及 Pod 中的容器。每个 Kubelet 进程会在 API Server 上注册所在Node节点的信息,定期向 Master 节点汇报该节点的资源使用情况,并通过 cAdvisor 监控节点和容器的资源。Kubelet主要职责在:节点管理主要是节点自注册和节点状态更新:Kubelet 以 PodSpec 的方式工作。PodSpec 是描述一个 Pod 的 YAML 或 J原创 2022-06-03 16:07:10 · 890 阅读 · 2 评论 -
kubernetes 核心组件之 Schedule
让我们先来看一下 Schedule 在 kubernetes 中的位置吧:Kubernetes Scheduler 的作用是将待调度的 Pod 按照一定的调度算法和策略绑定到集群中一个合适的 Worker Node(以下简称 Node) 上,并将绑定信息写入到 etcd 中,之后目标 Node 中 kubelet 服务通过 API Server 监听到 Scheduler 产生的 Pod 绑定事件获取 Pod 信息,然后下载镜像启动容器,调度流程如图所示:如果Pod中指定了NodeName属性,则无需S原创 2022-06-03 11:52:47 · 532 阅读 · 1 评论 -
kubernetes 核心组件之 Controller Manager
Controller Manager作为集群内部的管理控制中心,负责集群内的Node、Pod副本、服务端点(Endpoint)、命名空间(Namespace)、服务账号(ServiceAccount)、资源定额(ResourceQuota)的管理,当某个Node意外宕机时,Controller Manager会及时发现并执行自动化修复流程,确保集群始终处于预期的工作状态。如图,Controller Manager 发现资源的实际状态和期望状态有偏差之后,会触发相应 Controller 注册的 Event原创 2022-06-03 10:30:00 · 1101 阅读 · 1 评论 -
kubernetes 核心组件之 etcd
Etcd是CoreOS基于Raft协议开发的分布式key-value存储,可用于服务发现、共享配置以及一致性保障(如数据库选主、分布式锁等)。2013 年,一个叫做作 CoreOS 的创业团队认为,所有的安全问题,都可以归结为软件更新能力的问题,如果可以构建一个自动更新的服务器(自动化),那么系统的安全问题将迎刃而解。为了达到这个目的,必须将应用程序打包成一个独立单元,达到基本操作系统和应用程序隔离的目的,CoreOS 通过容器技术来达到目的。同时,还共了集群化的管理方案,让用户管理集群就像管理单机一样方便原创 2022-06-01 22:43:44 · 1127 阅读 · 5 评论 -
建了一个云原生社群
和 CSDN 一起做一个 云原生的社群,有兴趣的朋友可以来呀,这是我的云原生专栏:云原生之路原创 2022-06-02 15:54:13 · 375 阅读 · 0 评论 -
kubernetes 核心组件之 APIServer
APIServer 的重要性不言而喻。kube-apiserver作为整个Kubernetes集群操作etcd的唯一入口,负责Kubernetes各资源的认证&鉴权,校验以及CRUD等操作,提供RESTful APIs,供其它组件调用:提供了集群管理的REST API接口(包括认证授权、数据校验以及集群状态变更);提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改数据,只有API Server才直接操作etcd);提供准入控制的功能;拥有完备的集群安全机制.如图所示,Api原创 2022-06-02 22:00:00 · 1785 阅读 · 0 评论 -
kubernetes API 访问控制之:准入控制
可以使用kubectl、客户端库方式对REST API的访问,Kubernetes的普通账户和Service帐户都可以实现授权访问API。API的请求会经过多个阶段的访问控制才会被接受处理,其中包含认证、授权以及准入控制(Admission Control)等。如下图所示:需要注意:认证授权过程只存在HTTPS形式的API中。也就是说,如果客户端使用HTTP连接到kube-apiserver,是不会进行认证授权的。所以说,可以这么设置,在集群内部组件间通信使用HTTP,集群外部就使用HTTPS,这样既增加原创 2022-06-02 19:30:00 · 732 阅读 · 0 评论 -
kubernetes API 访问控制之:授权
可以使用kubectl、客户端库方式对REST API的访问,Kubernetes的普通账户和Service帐户都可以实现授权访问API。API的请求会经过多个阶段的访问控制才会被接受处理,其中包含认证、授权以及准入控制(Admission Control)等。如下图所示:需要注意:认证授权过程只存在HTTPS形式的API中。也就是说,如果客户端使用HTTP连接到kube-apiserver,是不会进行认证授权的。所以说,可以这么设置,在集群内部组件间通信使用HTTP,集群外部就使用HTTPS,这样既增加原创 2022-06-02 17:30:00 · 1138 阅读 · 0 评论 -
kubernetes API 访问控制之:认证
可以使用kubectl、客户端库方式对REST API的访问,Kubernetes的普通账户和Service帐户都可以实现授权访问API。API的请求会经过多个阶段的访问控制才会被接受处理,其中包含认证、授权以及准入控制(Admission Control)等。如下图所示:需要注意:认证授权过程只存在HTTPS形式的API中。也就是说,如果客户端使用HTTP连接到kube-apiserver,是不会进行认证授权的。所以说,可以这么设置,在集群内部组件间通信使用HTTP,集群外部就使用HTTPS,这样既增加原创 2022-06-02 15:30:00 · 2017 阅读 · 0 评论 -
kubernetes 架构
不要想着我咋反复横跳,一会儿 mesh简介一会儿又跑回 docker,然后又 istio 简介又跑回 kubernetes 架构。看上面。Kubernetes中提供灵活和松耦合的机制用于服务发现,像大多数分布式集群平台,Kubernetes集群中至少包含一个主节点和多个工作节点。Kubernetes组件:etcd的官方将它定位成一个可信赖的分布式键值存储服务,它能够为整个分布式集群存储一些关键数据,协助分布式集群的正常运转。Raft从一开始就被设计成一个易于理解和实现的共识算法。每一个Raft集群中都包原创 2022-06-01 10:25:16 · 326 阅读 · 0 评论 -
istio 简介
文章目录什么是 istio?istio 解决了什么痛点?总结istio 的解决方案流量管理安全性可观察性平台支持什么是 istio?讲多了记不住,那就:服务网格 + 微服务治理。istio 解决了什么痛点?了解Istio得从微服务架构谈起,微服务是在2012年提出的概念,其根本思想是通过拆分原则,希望一个服务只负责业务中一个独立的功能,这样任何一个需求不会因为发布或者维护而影响到不相关的服务,所有服务都可以做到独立部署运维,当然这也只是微服务架构给我们带来的好处之一。但是:首先,原来的单个应用原创 2022-05-31 14:50:13 · 4956 阅读 · 1 评论 -
仅 5M 的操作系统镜像 alpine,了解一下嘞?
文章目录alpine 简介基本操作更新最新镜像源列表:apk update搜索软件包:apk search安装软件包:apk add列出已安装的软件包:apk info升级软件版本:apk upgrade基础alpine镜像alpine 简介Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐.原创 2022-05-28 11:06:15 · 516 阅读 · 0 评论 -
service mesh 简介
文章目录Service Mesh 诞生Service Mesh 定义Service Mesh 形态service mesh 解决了什么痛点?回头看,不曾走远Service Mesh 诞生先来个文献:https://philcalcado.com/2017/08/03/pattern_service_mesh.htmlService Mesh 定义“别废话了,我没工夫听你说这么多,请用一句话跟我解释 Service Mesh 是什么。好的。A service mesh is a dedicat原创 2022-05-26 16:39:19 · 372 阅读 · 1 评论 -
Kubebuilder 使用记录
文章目录operator 介绍Kubebuilder实操手册安装创建projectoperator 介绍(1)不同应用平台需要管理的目标各有差异,如何在 Kubernetes 中兼容定义管理的目标?(2)如何管理和备份系统的应用数据,协调各应用之间不同生命周期的状态?(3)能否用同样的 Kubectl 命令来管理自己定义的复杂分布式应用?在这些场景下,Kubernetes 自身基础模型已经无法支撑不同业务领域下的自动化场景。为了满足这些需求,谷歌提出了 Third Party Resources原创 2022-05-26 15:06:11 · 591 阅读 · 0 评论 -
client-go 入门学习
文章目录安装RESTClient,DynamicClient和ClientSet Demo基本操作介绍连接 API Server创建一个clientset获取集群的PVC列表监听集群中pvc启动监听功能循环事件处理ADDED事件处理DELETED事件运行程序client-go 进入pod执行命令进入单个 pod 执行命令进入多个 pod 执行命令client-go增删改查crd示例 CRDlist 资源get 资源create 资源update 资源patch 资源delete 资源client-go 输出转载 2022-05-23 15:36:28 · 1276 阅读 · 0 评论 -
留念 · 大学时代最后的系统设计图
这将是一个部署在云原生上的项目,有兴趣写在自己简历上的学弟学妹们可以私信我要迭代图。原创 2022-05-22 20:45:53 · 6386 阅读 · 15 评论 -
亲历者说:Kubernetes API 与 Operator,不为人知的开发者战争
简介: 原创作者:张磊、邓洪超 如果我问你,如何把一个 etcd 集群部署在 Google Cloud 或者阿里云上,你一定会不假思索的给出答案:当然是用 etcd Operator! 实际上,几乎在一夜之间,Kubernetes Operator 这个新生事物,就成了开发和部署分布式应用的一项事实标准。原创作者:张磊、邓洪超如果我问你,如何把一个 etcd 集群部署在 Google Cloud 或者阿里云上,你一定会不假思索的给出答案:当然是用 etcd Operator!实际上,几乎在一夜之间转载 2022-05-20 19:56:31 · 335 阅读 · 1 评论 -
helm charts 模板编程
文章目录模板函数与管道模板函数辅助模板管道default 函数lookup 函数控制流程:判断、循环if/else 条件空格控制使用 with 修改范围range 循环变量命名模板声明define和使用命名template模板范围include 函数required 函数tpl 函数注意事项子 chart 包创建子 chart值覆盖全局值模板函数与管道模板函数比如我们需要从.Values中读取的值变成字符串的时候就可以通过调用quote模板函数来实现:(templates/configmap.yaml原创 2022-05-20 11:16:01 · 927 阅读 · 0 评论 -
helm 构建 chart
文章目录应用示例基础模板命名模板版本兼容持久化定制我的文和网上现有的文可能只差百分之一,但是这百分之一,就够了。应用示例如果我们想要在 Kubernetes 集群中部署两个副本的 Ghost,可以直接应用下面的资源清单文件即可:# ghost/deployment.yamlapiVersion: apps/v1kind: Deploymentmetadata: name: ghostspec: selector: matchLabels: app: ghos.原创 2022-05-19 10:07:35 · 1017 阅读 · 0 评论 -
helm 学习
文章目录Helm 是什么?Helm 解决了什么痛点?版本映射安装基本概念常用方法helm repo:使用存储库helm search: 查找图表helm install’:安装包自定义安装自定义 chart格式和限制–sethelm upgrade、helm rollback:升级版本,并在失败时恢复helm uninstall:卸载版本创建自己的chart✈推荐阅读:Helm 是什么?Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos中使.原创 2022-05-17 14:01:58 · 441 阅读 · 0 评论 -
docker attach 和 exec 的区别
一个好习惯是使用 run 启动容器,用 exec 运行容器,用 Ctrl+P+Q 退出容器。用 git 来类比吧。现在我用 run 类比为创建一个 git 代码库,attach 相当于你直接在我的分支上写代码,exec 相当于你 clone 一份自己去边上玩儿去。网上的教程都是这么说的,他们说的也都没错。但是我就是要再写一篇,语不惊人死不休!!!!不要到时候说:看了某人的博客,感觉有浪费了好几分钟哈哈。。。提问:attach 对容器的修改会持久化吗?exec 呢?如果会,需要满足什么条件?如果不原创 2022-05-16 20:18:09 · 842 阅读 · 0 评论 -
k8s 之 声明式 API
文章目录1. Kubernetes API概述CRD编写自定义控制器代码1. Kubernetes API概述apiVersion: apps/v1kind: Deploymentmetadata: name: nginx-deploymentspec: selector: matchLabels: app: nginx replicas: 2 template: metadata: labels: app: nginx转载 2022-05-14 16:12:55 · 2058 阅读 · 0 评论 -
容器网络原理(有点长)
文章目录Docker网络原理跨主机网络CNI网络原理总结Docker网络原理网络栈”,就包括:网卡(Network Interface)、回环设备(Loopback Device)、路由表(Routing Table)和 iptables 规则。作为一个容器,它可以声明直接使用宿主机的网络栈(–net=host),即:不开启 Network Namespace,比如:$ docker run –d –net=host --name nginx-host nginx在这种情况下,这个容器启动后,.转载 2022-05-13 21:22:37 · 2126 阅读 · 0 评论