云原生
文章平均质量分 80
云原生、容器化
Sxm&
java、golang、大数据、云原生
展开
-
kubernetes之operator开发controller-runtime源码分析
Controller会先向Informer注册资源的eventHandler;然后Cache会启动Informer,Informer向APIServer发出请求,建立连接;当Informer检测到有资源变动后,使用Controller注册进来的eventHandler判断是否推入工作队列中;当工作队列中有元素被推入时,Controller会将元素取出,并执行用户侧的Reconciler。原创 2024-02-22 14:14:18 · 642 阅读 · 0 评论 -
kubernetes之operator开发及informer机制源码分析
在Kubernetes中我们经常使用 Deployment、DaemonSet、Service、ConfigMap 等资源,这些资源都是Kubernetes的内置资源,而对这些资源的创建、更新、删除的动作都会被称为事件(Event),Kubernetes 的 Controller Manager 负责事件监听,并触发相应的动作来满足期望(Spec),这种声明式的方式简化了用户的操作,用户在使用时只需关心应用程序的最终状态即可。随着 Kubernetes 的发展, 在一些场景更为复杂的分布式应用系统,原生 K原创 2024-02-22 14:12:37 · 1029 阅读 · 0 评论 -
Istio金丝雀部署和流量镜像
总的来说,Istio 的金丝雀发布功能更加灵活和强大,可以提供更细粒度的流量控制和管理,但需要依赖 Istio 的服务网格架构。而 Kubernetes 的金丝雀发布功能相对简单直接,适合基本的金丝雀发布需求。1、namespace加上label,pod自动注入sidecar2、VirtualService制定流量转发规则,将10%流量转到新版本或者匹配HTTP Header,将匹配成功的流量转到新版本,否则转到老版本。原创 2024-02-19 17:15:21 · 1015 阅读 · 0 评论 -
深入理解Istio服务网格(一)数据平面Envoy
在传统的微服务架构中,服务间的调用,业务代码需要考虑认证、熔断、服务发现等非业务能力,在某种程度上,表现出了一定的耦合性服务网格追求高级别的服务流量治理能力,认证、熔断、服务发现这些能力更多的是平台测的能力。将业务测和平台测能力解耦,开发人员只关心业务测的能力。每个服务实例都有一个代理,服务的入站流量、出站流量都先经过代理,代理不进行业务处理,只做流量转发,因此,传统微服务架构,服务到服务间的调用,转成了proxy到proxy的调用。Proxy通常是一种反向代理软件,有强大的流量转发能力。原创 2024-02-03 17:47:32 · 1130 阅读 · 0 评论 -
kubernetes-监控系统Prometheus
在微服务分布式系统中,监控是极其重要的。监控能够对系统的运行状态了如指掌,有问题及时发现。原创 2024-01-10 16:27:58 · 970 阅读 · 0 评论 -
kubernetes-L7负载均衡ingress
前面我们说到kube-proxy是基于iptables/ipvs的分布式L4负载均衡技术,但是有很多的需求场景是这种网络层的dnat不能提供的能力。基于L4的服务。原创 2023-12-20 09:13:11 · 512 阅读 · 0 评论 -
kubernetes-日志系统Loki
以前的企业级日志系统ELK(Elasticsearch、Logstash、Kibana)比较重,而Loki是一个轻量级的日志系统,且Loki与Prometheus、Grafana是同一个生态的产品,在云原生领域有着很好的兼容性。原创 2023-12-20 09:12:34 · 372 阅读 · 0 评论 -
kubernetes--kube-proxy实现L4负载均衡
要了解kube-proxy如何实现负载均衡,要先了解Linux网络收包机制,kube-proxy利用Linux的内核实现的负载均衡。在TCP/IP网络分层模型里,整个协议栈被分成了物理层、链路层、网络层,传输层和应用层。物理层对应的是网卡和网线,应用层对应的是我们常见的Nginx,FTP等等各种应用。Linux实现的是链路层、网络层和传输层这三层。。我们用Linux的视角来看到的TCP/IP网络分层模型是下面这个样子的。原创 2023-11-28 15:34:24 · 1027 阅读 · 0 评论 -
kubernetes-容器网络接口CNI
Kubernetes的集群里,IP地址是以Pod为单位进行分配的,每个Pod都拥有一个独立的IP地址。一个Pod内部的所有容器共享一个网络栈,即宿主机上的一个网络命名空间,包括它们的IP地址、网络设备、配置等都是共享的。也就是说,Pod里面的所有容器能通过localhost:port 来连接对方。在Kubernetes中,提供了一个轻量的通用容器网络接口CNI(Container Network Interface),专门用于设置和删除容器的网络连通。原创 2023-11-18 21:51:01 · 182 阅读 · 0 评论 -
kubernetes-pod高可用
PreStop完成后,Kubelet会发kill-SIGTERM给容器进程,这时就要看应用是否支持处理SIGTERM信号量了,由/bin/bash起的进程是会忽略SIGTERM的,需要注意。当Node出现问题的时候,kubenetes会给Node打上taints,比如Node ping不通的时候打上unreachable,Node上的组件有问题的时候打上not-ready。当一个pod创建出来的时候,kubenetes会自动为pod增加Toleration。原创 2023-11-18 21:50:07 · 285 阅读 · 0 评论 -
kubernetes-kubelet组件
每个节点都运行一个kubelet进程,默认监听10250端口,kubelet作用非常重要,是节点的守护神。原创 2023-11-12 20:33:42 · 410 阅读 · 0 评论 -
kubernetes-容器运行时接口CRI
容器运行时(Container Runtime),运行于Kubernetes(K8s) 集群的每个节点中,负责容器的整个生命周期。其中Docker是目前应用最广的。随着容器云的发展,越来越多的容器运行时涌现。为了解决这些容器运行时和Kubernetes的集成问题,在Kubernetes 1.5版本中,社区推出了CRI(Container Runtime Interface,容器运行时接口)以支持更多的容器运行时。CRI是 Kubernetes 定义的一组gRPC服务。原创 2023-11-12 20:32:56 · 217 阅读 · 0 评论 -
容器网络-Underlay和Overlay
前面讲了容器内部网络,但是容器最终是要部署在主机上,跨主机间的网络访问又是怎么样的,跨主机网络主要有两种方案。原创 2023-11-11 15:55:10 · 417 阅读 · 0 评论 -
Docker容器网络
Docker网络有下面4种配置类型,用的比较多的是Bridge:HostContainer。原创 2023-11-11 15:54:46 · 85 阅读 · 0 评论 -
容器核心技术-Cgroups
这两个参数进行除法 cpu.cfs_quota_us/cpu.cfs_period_us ,比如 10ms /100ms = 0.1 ,表示这个控制组被允许使用的CPU最大配额是 0.1个cpu。cpu.cfs_period_us ,是CFS 调度的周期,默认是 100000,单位是 microseconds 也就是 100ms。cpu.cfs_quota_us 在一个调度周期里,这个控制组被允许的运行时间,比如 30000 ,就是 30ms。4.进程的cpu限制到了10%原创 2023-11-06 16:54:25 · 180 阅读 · 0 评论 -
容器核心技术-Namespace
基于Linux 内核的 Cgroup, Namespace,以及Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。原创 2023-11-05 22:27:59 · 145 阅读 · 0 评论 -
kubenetes认证、授权、准入控制
kube-apiserver是 Kubernetes 最重要的核心组件之一,主要提供以下的功能:提供集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更等;提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server 查询或修改数据,只有API Server才直接操作etcd)。Kubernetes API的每个请求都会经过多阶段的访问控制之后才会被接受,这包括认证、授权以及准入控制(Admission Control)等。原创 2023-11-05 14:10:59 · 168 阅读 · 0 评论 -
Raft协议
Raft协议是一种分布式一致性算法。它通过确保多个节点之间的日志复制达成一致,从而保证系统的可靠性和持久性。Raft协议的设计目标是易于理解和实现,并且能够在网络发生分区或节点故障时继续正常工作。相比于其他一致性算法(如Paxos),Raft提供了更强的可读性和模块化性。原创 2023-08-25 18:27:14 · 208 阅读 · 0 评论