![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
云原生
文章平均质量分 85
胡桃姓胡,蝴蝶也姓胡
非常熟悉service mesh,有共同兴趣的小伙伴可以私信我
展开
-
ServiceAccount深度解析
这里在default名称空间创建了一个serviceaccount为admin,可以看到已经自动生成了一个Tokens:admin-token-j7n8j,下面展示如何使用自定义的serviceaccount在K8S集群当中,每一个用户对资源的访问都是需要通过apiserver进行通信认证才能进行访问的,那么在此机制当中,对资源的访问可以是token,也可以是通过配置文件的方式进行保存和使用认证信息,kubectl命令行工具使用kubeconfig文件来查找选择群集并与群集的APIserver进行通信。原创 2023-08-07 15:37:43 · 951 阅读 · 0 评论 -
Istioctl原理剖析
为了方便用户安装istio和操作相应的manifest,社区将原本的纯helm安装模式演变成如今的cli和operator模式(同时为了保证后向兼容和良好的代码复用,cli复用operator提供的命令行api,operator命令行基于helm的chart渲染进行实现。原创 2023-08-06 14:35:15 · 251 阅读 · 0 评论 -
profile和manifest概念解析
在实际使用中,根据您的需求和熟悉程度,您可以选择使用清单文件来自定义每个方面的配置,或者使用预定义的配置文件(profile)来轻松地配置 Istio 功能。清单文件中包含了您想要在Istio中配置的各种资源,比如自定义资源定义(CRDs),部署,服务,虚拟服务,目标规则等。配置文件的目的是让用户无需手动编写复杂的清单文件,而是选择适合自己需求的配置文件,从而快速配置和启用Istio的功能。清单是指一组Kubernets配置文件,用于定义Istio的各种组件,服务和配置。原创 2023-08-05 17:53:02 · 1441 阅读 · 0 评论 -
高阶k8s二次开发教程 -- 通过阅读Istio源码习得
Kubernetes API(在本例中为Project和ProjectList)提供的每种类型都需要实现该k8s.io/apimachinery/pkg/runtime.Object接口。该接口定义了两种方法GetObjectKind()和DeepCopyObject()。第一种方法已经由嵌入式metav1.TypeMeta结构提供;第二个你必须自己实现。如果你不实现DeepCopy方法,那么资源是无法注册进入后续的资源列表中的。该DeepCopyObject方法旨在生成对象的深层副本。原创 2023-07-24 01:45:32 · 974 阅读 · 2 评论 -
xDS协议
在 Pilot 和 Envoy 通信的场景中,xDS 协议是基于 gRPC 实现的传输协议,即 Envoy 通过 gRPC streaming 订阅 Pilot 的资源配置。Pilot 借助 ADS 对 API 更新推送排序的能力,按照 CDS-EDS-LDS-RDS 的顺序串行分发配置。这个图里面有一个名字叫做MCP,这里我来介绍一下MCP这个东西是什么:MCP是Istio中的一个组件,它代码网格配置协议,用于在Istio控制平面中传递和同步配置信息,包括路由规则,策略配置和其他网络配置。原创 2023-07-06 01:01:46 · 1074 阅读 · 0 评论 -
Kuma代码组织方式分析
(管理器):在 Kuma 中,Manager 是一个接口,用于管理和控制组件的生命周期。它定义了添加组件、启动组件和停止组件的方法。它是 Kuma 控制平面的核心组件之一,为其他组件提供必要的基础功能。组件提供了服务网格控制平面的具体功能,例如流量路由、服务发现和安全管理等。每个组件负责一项具体的任务,并根据其定义的接口进行启动、停止和配置。通过这些概念和组件的使用,Kuma 实现了一个可扩展和灵活的服务网格控制平面,使开发人员能够轻松管理和配置服务网格的各个方面。原创 2023-07-03 23:45:14 · 167 阅读 · 0 评论 -
容器生态系统概念讲解
这张图显示了 Docker、Kubernetes、CRI、OCI、containerd 和 runc 在这个生态系统中是如何结合的。原创 2023-07-01 13:58:42 · 357 阅读 · 0 评论 -
Docker的Entrypoint和CMD的区别
Entrypoint是指定容器启动时要执行的可执行文件或脚本,并且该命令在运行容器时不能被覆盖。如果在运行容器时指定了其他命令,则这些命令将作为Entrypoint命令的参数传递给容器。总结来说,Entrypoint是指定容器启动时要执行的默认命令,它在运行容器时不能被覆盖。它可以被覆盖,如果在运行容器时指定了其他命令,则这些命令将替换掉Cmd命令。Docker中的Entrypoint和Cmd都是用于指定容器启动时要运行的命令,它们的区别在于它们的作用和使用方式。原创 2023-06-27 17:02:06 · 1068 阅读 · 0 评论 -
Kubernetes Controller原理讲解
通过之前的讲解,我们了解到了 如何编写一个Controller来监控和处理Kubernetes中内置的Pod资源对象。采用同样的方法我们也可以编写一个Controller来处理自定义的CRD资源对象。我们首先使用下面的 yaml 片段来在 Kubernetes 中创建一个自定义 CRD。原创 2023-04-28 18:50:49 · 1472 阅读 · 0 评论 -
dubbogo如何实现路由规则功能
路由规则( routing rule )是为了改变网络流量所经过的途径而修改路由信息的技术,主要通过改变路由属性(包括可达性)来实现。在发起一次 RPC 调用前起到过滤目标服务器地址的作用,过滤后的地址列表,将作为消费端最终发起 RPC 调用的备选地址。原创 2023-04-26 18:09:17 · 798 阅读 · 0 评论 -
dubbogo如何实现远程配置管理 -- 阅读官方文档
之前在 Apache/dubbo-go(以下简称 dubbo-go )社区中,有同学希望配置文件不仅可以放于本地,还可以放于配置管理中心里。那么,放在本地和配置管理中心究竟有哪些不一样呢?放在本地,每次更新需要重启,配置文件管理困难,无法做到实时更新即刻生效。此外,本地文件还依赖人工版本控制,在微服务的场景下,大大的增加了运维的成本与难度。而配置管理中心提供了统一的配置文件管理,支持文件更新、实时同步、统一版本控制、权限管理等功能。原创 2023-04-26 16:08:56 · 493 阅读 · 0 评论 -
dubbogo中将kubernetes作为注册中心 -- 阅读官方文档
为了明确 K8s 在服务接入管理提供的解决方案,我们以 kube-apiserver 提供的 API(HTTPS) 服务为例。K8s 集群为该服务分配了一个集群内有效的 ClusterIP ,并通过 CoreDNS 为其分配了唯一的域名 kubernetes。如果集群内的 Pod 需要访问该服务时直接通过 https://kubernetes:443 即可完成。由此可⻅,Kubernetes 提供的服务发现为域名解析级别。原创 2023-04-26 14:40:16 · 829 阅读 · 0 评论 -
微服务生态 -- dubbo -- dubbo3应用级别服务发现(阅读官方文档)
从 Internet 刚开始兴起,如何动态感知后端服务的地址变化就是一个必须要面对的问题,为此人们定义了 DNS 协议,基于此协议,调用方只需要记住由固定字符串组成的域名,就能轻松完成对后端服务的访问,而不用担心流量最终会访问到哪些机器 IP,因为有代理组件会基于 DNS 地址解析后的地址列表,将流量透明的、均匀的分发到不同的后端机器上。在使用微服务构建复杂的分布式系统时,如何感知 backend 服务实例的动态上下线,也是微服务框架最需要关心并解决的问题之一。原创 2023-04-26 13:36:34 · 669 阅读 · 0 评论 -
Docker -- Docker底层原理深度剖析
谈到Docker原理,我们先来三板斧。然后我们心中要明白一件事情:其中Namespace技术是用来修改进程视图的主要方法。Cgroups技术是用来制造约束的主要手段。Linux 的命名空间机制提供了以下8种不同的命名空间,包括 :clone() 用于创建新进程,通过传入一个或多个系统调用参数( flags 参数)可以创建出不同类型的 NameSpace ,并且子进程也将会成为这些 NameSpace 的成员。setns() 用于将进程加入到一个现有的 Namespace 中。其中 fd 为文件描述符,引原创 2023-02-27 20:22:29 · 559 阅读 · 2 评论 -
Prometheus -- 浅谈Exporter
官方给出了example可以给我们参考:现在我们来解析一下:定义指标for {暴露接口观察监控指标。原创 2023-02-25 15:12:20 · 6261 阅读 · 0 评论 -
Kubernetes -- no route to host的BUG解决
我推测是因为我们使用的是虚拟机,我们经常挂起虚拟机,然后使用的时候再次打开,这样会有一定的影响。因此我的想法是只需要把网络相关的东西刷新一下就可以了。如果你们用云服务搭建k8s的话是应该不会出现这个问题的。这个是用虚拟机搭建的时候的坑。就是网络插件这里突然Running不了了。那么我们今天来分析一下这个问题。首先我们查看这个Pod的日志信息。的地方,提取出关键的信息。可以发现很快就成功了。这说明是网络的问题。原创 2023-02-20 18:56:31 · 2192 阅读 · 1 评论 -
云原生 -- Docker进阶(Docker-compose,Docker网络简单介绍)
而之所以被称之为host模型,是因为该模式下的Docker容器会和host宿主机共享同一个网络namespace,故Docker Container的IP地址即为宿主机eth0的IP地址。处于这个模式下的Docker容器共享其他容器的网络环境,因此至少这两个容器之间不存在网络隔离,而这两个容器又与宿主机以及除此之外的其他的容器存在网络隔离。绑定的端口冲突了,因为我们运行的都是tomcat容器,所以绑定的端口是一样的。我们先启动一个my-nginx2的容器,网络在默认的bridge网桥上。原创 2023-02-15 21:12:14 · 691 阅读 · 1 评论 -
kubernetes -- 核心组件介绍以及组件的运行流程
如果想要官方的,详细的信息,请看官方文档。了解了kubernetes的基本组件之后,我们来讲述一下k8s组件的工作流程。原创 2023-02-11 20:57:19 · 828 阅读 · 0 评论 -
kubernetes -- 删除namespace的过程以及遇到的bug解决
我们来梳理一下删除namespace的过程。原创 2023-02-01 15:26:08 · 1500 阅读 · 1 评论 -
K8s关键性概念图解
Kubernetes可以看做云原生时代的操作系统,统一管理下层的基础设施,如计算资源、网络资源、存储资源等等。将集群中存在的各种复杂关系抽象成各种API资源,以统一的方式暴露出各种接口,也便于未来的扩展以及开发团队根据自己的需要定制。基于这样的设计思路,理清各种API对象的作用和关系就变得很重要了,只有理解了才能正确地使用K8s,接下来我们就通过一张关系图一点点的来说明。在接触K8s之前,大多人首先要接触到的就是Docker。我们得到一个容器的镜像之后,要把应用运行起来最简单的方式就是docker run的原创 2023-01-30 00:25:58 · 500 阅读 · 0 评论 -
云计算与云原生
在了解云计算之前我们需要先了解一下什么叫做分布式计算。在了解分布式计算之前,我们需要先了解一下目前的互联网的一些常识和背景。随着越来越多的网民开始使用互联网,如今互联网已经几乎进入了全民化的时代。不算国外的人口,中国使用互联网的人数保守有10亿人。有一些很火爆的软件,例如:QQ,微信,淘宝等等。这些软件的并发量可能在某些特定时期会达到上千万。如此大的并发量,一台服务器肯定是无法容纳的,而我们的服务器是有性能瓶颈的,单台服务器的容灾能力就算再强,也是有极限的。原创 2023-01-05 14:57:17 · 2278 阅读 · 1 评论