
kubernetes
文章平均质量分 76
大飞哥2
wow : T4一套
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
译文:服务网格将使用 eBPF ?是的,但 Envoy 代理将继续存在
这篇博客非常清晰地阐述了目前很热的 eBPF 和 Service Mesh 的关系,并分别介绍 Envoy 在几种不同的数据平面架构模型中的位置,以及这几种架构模型各自的优势和权衡。最近我和同事以及社区的同学就引入 eBPF 之后 Service Mesh 的架构演进做了一些讨论,结论和 Solo 的这篇博客中的某些观点类似。作为 Linux 内核的一种扩展能力,eBPF 并不会替换 Envoy 的七层代理能力,而是作为 Service Mesh 数据面的一个增强技术。...转载 2022-06-14 16:23:10 · 357 阅读 · 0 评论 -
告别 Sidecar-- eBPF 如何简化服务网格
今天有几个服务网格的产品和项目,承诺简化应用微服务之间的连接,同时提供额外的功能,如安全连接、可观察性和流量管理。但正如我们在过去几年中反复看到的那样,对服务网格的兴奋已经被对额外的复杂性和开销的实际担忧所抑制。让我们来探讨一下 eBPF 是如何让我们精简服务网格,使服务网格的数据平面更有效率,更容易部署。Sidecar 问题今天的 Kubernetes 服务网格解决方案要求你在每一个应用 Pod 上添加一个代理 sidecar 容器,如 Envoy 或 Linkerd-proxy。这是正确的:即使转载 2022-01-19 10:41:22 · 451 阅读 · 0 评论 -
Tetrate 推出业内首个 Istio 认证管理员考试
Tetrate 推出业内首个 Istio 认证管理员考试独家号极客精选原文链接企业正在增加对数字化转型的投资,并雇用合适的人才来加速这一旅程。根据 Linux 基金会发布的 2020 年开源工作报告[1],52% 的招聘经理更倾向于雇用有证书的人,而两年前只有 47%。不出所料 93% 的招聘经理表示难以找到足够的人才。Tetrate 今天宣布公开提供Tetrate 认证 Istio 管理员(CIAT)[2]考试,该考试评估执行 Istio 服务网格安装和配置以及配置流量管理、弹性和故障...转载 2021-11-13 11:22:19 · 905 阅读 · 0 评论 -
上了 istio 的贼船之 API Gateway
现状下图是我们系统的架构现状,大致介绍一下:基础设施在华为云上 基本上是基于 istio on k8s 架构。 istio 版本为 1.3,所以组件较多(galley、pilot、citadel、telemetry......) 微服务后端用 spring boot 单体,前端有 nodejs、vue等 应用的链路监控主要基于 skywalking, istio 的通讯层面利用 kiali可视化调用链 其他比较传统历史架构主要介绍下作为服务通讯基础设施的 istio 在这里的作用转载 2021-11-13 11:07:13 · 1400 阅读 · 0 评论 -
从ELK/EFK到PLG – 在EKS中实现基于Promtail + Loki + Grafana容器日志解决方案
ELK/EFK日志系统如果今天谈论到要部署一套日志系统,相信用户首先会想到的就是经典的ELK架构,或者现在被称为Elastic Stack。Elastic Stack架构为Elasticsearch + Logstash + Kibana + Beats的组合,其中,Beats负责日志的采集, Logstash负责做日志的聚合和处理,Elasticsearch作为日志的存储和搜索系统,Kibana作为可视化前端展示,整体架构如下图所示:图片来自https://elastic-stack.readth转载 2021-06-02 15:40:40 · 2975 阅读 · 0 评论 -
kubernetes-面对大规模 K8s 集群,如何先于用户发现问题?
绪论不知道大家是否经历过这样的情景:突然被用户告知系统出现问题,然后一脸懵地惶惶然排查修复;或是等到自己发现系统出现故障时,实际已经对用户造成了严重的恶劣影响。所谓千里之堤,溃于蚁穴。用户信任的建立是长期而艰难的,然而要摧毁这种信任却很简单。一旦出现上述问题,不仅极大影响用户使用体验,同时会给用户留下一个这个产品/团队不可靠的印象,丧失用户对产品/团队长期好不容易积累下来的信用资本,未来再想建立这样的信任关系就很难了。这也是为什么我们说快速发现问题的能力如此重要的原因,只有先做到快速发现问题,才能谈转载 2021-04-26 13:21:46 · 618 阅读 · 0 评论 -
kubernetes-借助多容器Pod,轻松扩展 Kubernetes 中的应用
Kubernetes提供了巨大的灵活性和运行各种应用的能力。如果你的应用是云原生微服务或12要素(12-factor)应用,那么在Kubernetes中运行它们有可能会相对简单。但是,运行那些没有明确设计为在容器化环境中运行的应用程序呢?Kubernetes也可以处理这些问题,但是设置起来可能会比较麻烦。Kubernetes提供的最强大的工具之一是多容器Pod(尽管多容器Pod在各种情况下对云原生应用也很有用)。为什么要在一个Pod中运行多个容器?因为多容器Pod可以让你在不改变其代码的情况下更改应用程转载 2021-03-11 15:55:13 · 507 阅读 · 0 评论 -
快速启动ELK(docker版本)测试
启动ES:docker run --name es -p 0.0.0.0:9200:9200 -p 0.0.0.0:9300:9300 -d -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.11.1启动Kibana:docker run --name kabana --link es:elasticsearch -p 0.0.0.0:5601:5601 -d docker.elastic.原创 2021-03-05 16:17:26 · 298 阅读 · 0 评论 -
Apollo配置中心-简介
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spring/Spring Boot环境也有较好的支持。.Net客户端不依赖任何框架,能够运行于所有.Net运行转载 2021-02-28 17:13:27 · 543 阅读 · 0 评论 -
Kubernetes 入门与进阶实战
写在前面笔者今年 9 月从端侧开发转到后台开发,第一个系统开发任务就强依赖了 Kubernetes,加之项目任务重、排期紧,必须马上对 Kubernetes 有概念上的了解。然而,很多所谓“Kubernetes 入门\概念”的文章看的一头雾水,对于大部分新手来说并不友好。经历了几天痛苦地学习之后,回顾来看,Kubernetes 根本不复杂。于是,决心写下这篇文章,一方面希望对新手同学有帮助;另一方面,以文会友,希望能够有机会交流讨论技术。本文组织方式:Kubernetes 是什么,即作用和目的。涉转载 2020-12-31 18:34:09 · 1174 阅读 · 1 评论 -
kubernetes-禁止daemonset调度到某些节点上(亲和性和互斥)
简介Node AffinityAffinity 翻译成中文是“亲和性”,它对应的是 Anti-Affinity,我们翻译成“互斥”。这两个词比较形象,可以把 pod 选择 node 的过程类比成磁铁的吸引和互斥,不同的是除了简单的正负极之外,pod 和 node 的吸引和互斥是可以灵活配置的。Affinity的优点:匹配有更多的逻辑组合,不只是字符串的完全相等调度分成软策略(soft)和硬策略(hard),在软策略下,如果没有满足调度条件的节点,pod会忽略这条规则,继续完成调度。目前主要转载 2020-12-31 10:48:22 · 4873 阅读 · 1 评论 -
Kubernetes-事件驱动的POD自动缩放(KEDA)
什么是KEDA?KEDA目前是cncf下的沙箱项目。KEDA是基于Kubernetes的事件驱动自动缩放器。使用KEDA,您可以根据需要处理的事件数量来驱动Kubernetes中任何容器的扩展。KEDA是一个单一用途的轻量级组件,可以添加到任何Kubernetes集群中。KEDA与标准Kubernetes组件(如Horizontal Pod Autoscaler)配合使用,并且可以扩展功能而不会覆盖或复制。使用KEDA,您可以显式映射要使用事件驱动的比例的应用程序,而其他应用程序仍可以继续运原创 2020-12-27 21:12:39 · 528 阅读 · 0 评论 -
kubernetes-事件监控
事件监控事件监控是Kubernetes中的另一种监控方式,可以弥补资源监控在实时性、准确性和场景上的缺欠。开发者可以通过获取事件,实时诊断集群的异常与问题。背景信息Kubernetes的架构设计基于状态机,不同的状态之间进行转换则会生成相应的事件,正常的状态之间转换会生成Normal等级的事件,正常状态与异常状态之间的转换会生成Warning等级的事件。kube-eventerkube-eventer:是ACK维护的开源Kubernetes事件离线工具,可以将集群的事件离线到钉钉、SL.转载 2020-12-26 22:28:54 · 2829 阅读 · 0 评论 -
为什么你的创业公司应该运行在Kubernetes上
从2019年初开始,就有不少创业公司陆陆续续向我咨询Kubernetes等云原生技术。我总是会问这些创业公司的部署流程是怎样的,因为这能让我大概了解到一个公司的技术复杂度处在哪个阶段。有些公司仅仅使用scp部署简单的PHP应用程序,就能让公司走的很远,而有些公司的架构达到极限,不得不使用诸如Redis或者Kafka这样的基础组件作为内部通信,从而将系统拆分为不同的服务。当他们知道我的履历里有Kubernetes的相关实战经验后,便总会问起它。大多数公司对上手Kubernetes很感兴趣,但同时也对K转载 2020-10-20 19:13:57 · 810 阅读 · 1 评论 -
kubernetes-kubeadm init从私有仓库拉取镜像
查看kubeadm config所需的镜像$ kubeadm config images listk8s.gcr.io/kube-apiserver:v1.13.1k8s.gcr.io/kube-controller-manager:v1.13.1k8s.gcr.io/kube-scheduler:v1.13.1k8s.gcr.io/kube-proxy:v1.13.1k8s.gcr.io/pause:3.1k8s.gcr.io/etcd:3.2.24k8s.gcr.io/coredn转载 2020-10-19 20:17:24 · 4546 阅读 · 0 评论 -
kuberntes-某工具类 APP 容器化过程的思考与实践
我司使用 Kubernetes 容器接入生产流量已经一年多了,目前的容器集群有在阿里云的是托管版,还有的在我们自己机房,Node 数一共不到50,目前所有集群通过 Ingress 接入的每日总流量在 8 亿 PV 以上。目前我们的 Kubernetes 组件如下:镜像仓库(Harbor ) 网络插件 Flannel host-gw (阿里云托管版是 flannel vpc) 日志收集(Filebeat -> Kafka –> Logstash -> Elasticsearch -转载 2020-09-01 12:41:15 · 302 阅读 · 0 评论 -
第一次在 Kubernetes 上部署应用时我们忽略的 5 件事
根据我的经验,似乎大多数人认为将应用程序部署到Kubernetes上就完成工作了(无论使用Helm或手动)。通过在GumGum中使用 Kubernetes,我们遇到了一些“陷阱”,希望在此列出这些“陷阱”以帮助你在 Kubernetes 上部署应用程序之前了解基础。第一步:配置 Pod 请求和限制我们将从配置一个可以在其中运行 Pod 的干净环境开始。Kubernetes 在处理 Pod 调度和故障状态方面做得非常出色。然而我们了解到其中有一个问题,就是如果 Kubernetes 调度器...转载 2020-08-24 13:55:25 · 527 阅读 · 0 评论 -
kubernetes-Helm3的使用:
1. 增加 repo:# 阿里云helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts#google helm repo add stable https://kubernetes-charts.storage.googleapis.com/2. 查看某个资源的版本列表:helm search repo stable/kube-state-metrics -lNAME .原创 2020-07-23 14:18:37 · 716 阅读 · 0 评论 -
prometheus-rate、irate、increase函数使用场景
计算Counter指标增长率我们知道Counter类型的监控指标其特点是只增不减,在没有发生重置(如服务器重启,应用重启)的情况下其样本值应该是不断增大的。为了能够更直观的表示样本数据的变化剧烈情况,需要计算样本的增长速率。如下图所示,样本增长率反映出了样本变化的剧烈程度:通过增长率表示样本的变化情况increase(v range-vector)函数是PromQL中提供的众多内置函数之一。其中参数v是一个区间向量,increase函数获取区间向量中的第一个后最后一个样本并返...转载 2020-06-24 11:36:42 · 29529 阅读 · 0 评论 -
kustomize-多环境部署重用配置文件技巧
在多环境部署中,经常碰到不同的环境下只有deployment中的Image Tag不一样,其他是一样的。这样我们只需要在kustomization.yaml文件中配置重用另外一个环境的配置所有文件并覆盖 image Tag,就可以达到效果,这样可以精简配置文件数量。例如,测试环境和生产环境只有image的标签不一样:测试环境标签:hello-1.0.0-rc1 生产环境标签:hello-...原创 2020-10-13 17:47:18 · 1164 阅读 · 0 评论 -
kubernetes-证书过期,重建证书后出现的kubelet证书过期问题
由于初期,创建证书的期限只有一年,后来经过重建10年的证书期限后(参考:kubernetes-证书过期,重建证书),稳定运行一年后,再次出现证书问题:1. 故障的表现:kubectl get nodeNAME STATUS ROLES AGE VERSION10.2.2.120 ...原创 2019-12-06 10:37:13 · 9070 阅读 · 0 评论 -
kubernetes-证书过期,重建证书
kubernetes 版本:1.9.x,安装方式,使用二进制文件,手工安装(参考:https://github.com/opsnull/follow-me-install-kubernetes-cluster/tree/v1.6.2);由于当初安装kubernetes,制作证书的时候,设置了证书的有效期只有1年。到一年后,所有节点都变为noready状态。检查kubelet服务的日志,提示认证...原创 2019-12-06 09:40:09 · 4252 阅读 · 0 评论 -
kubernetes-服务端口故障排查过程
在k8s中,通常在一个服务应用出现故障的时候,我们会在集群内自我检查:检查pod的日志 首先检查这个服务的的端口是否可用 跨节点访问检查具体过程如下:1. 先查出该服务的service ,pod 信息kubectl get svc,ep,po -o wide -n grafanaNAME TYPE CLUSTER-IP EXTE...原创 2019-11-29 14:18:57 · 4822 阅读 · 0 评论 -
Kubernetes-服务发现与负载均衡
一、需求来源为什么需要服务发现在 K8s 集群里面会通过 pod 去部署应用,与传统的应用部署不同,传统应用部署在给定的机器上面去部署,我们知道怎么去调用别的机器的 IP 地址。但是在 K8s 集群里面应用是通过 pod 去部署的, 而 pod 生命周期是短暂的。在 pod 的生命周期过程中,比如它创建或销毁,它的 IP 地址都会发生变化,这样就不能使用传统的部署方式,不能指定 IP 去访...转载 2019-11-29 11:25:37 · 671 阅读 · 0 评论 -
Kubernetes-NodePort vs Loadbalancer vs Ingress 在生产中如何选择?
最近,有人问我NodePort,LoadBalancers和Ingress之间有什么区别。它们都是将外部流量带入群集的不同方法,并且它们都以不同的方式进行。简单的说,生产环境建议使用 Loadbalancer 和 Ingress,四层(TCP/UDP)代理使用 Loadbalancer,七层(HTTP/HTTPS)代理使用 Ingress。让我们看一下它们各自的工作方式以及何时使用它们。C...转载 2019-11-25 12:55:16 · 947 阅读 · 0 评论 -
kubernetes-StatefulSet 基本使用
本教程介绍了如何使用StatefulSets来管理应用。演示了如何创建、删除、扩容/缩容和更新 StatefulSets 的 Pods。教程目标 准备开始 创建 StatefulSet StatefulSet 中的 Pod 扩容/缩容 StatefulSet 更新 StatefulSet 删除 StatefulSet Pod 管理策略 清理现场教程目标Stateful...转载 2019-11-07 08:58:30 · 3041 阅读 · 0 评论 -
kubernetes-K8S调度之Taints and Tolerations
Taints和Tolerations(污点和容忍)在《K8S之节点亲和性》中,我们说到的的NodeAffinity节点亲和性,是在pod上定义的一种属性,使得Pod能够被调度到某些node上运行。Taint刚好相反,它让Node拒绝Pod的运行。Taint需要与Toleration配合使用,让pod避开那些不合适的node。在node上设置一个或多个Taint后,除非pod明确声明能够容忍这...转载 2019-11-06 13:01:12 · 1202 阅读 · 0 评论 -
kubernetes-在SchedulingDisabled的节点上禁止调度DaemonSet的pod
我们已经把master 节点设置了:SchedulingDisabled :$ kubectl get nodeNAME STATUS ROLES AGE VERSION10.2.2.120 Ready,SchedulingDisabled master ...原创 2019-11-06 12:58:52 · 14211 阅读 · 0 评论 -
loki-promtail 指抓取所选pod的日志
版本:grafana/promtail:v0.4.0Promtail 默认安装,会抓取所有pod的日志,如果我不想从群集中的所有Pod抓取日志,而仅抓取所选应用程序的Pod日志,需要自己修改的配置。例如:我们想跟prometheus一样,增加 annotations:prometheus.io/scrape: "true" 来选定抓取的pod:$ cat nginx-deploym...原创 2019-11-03 12:47:55 · 10549 阅读 · 0 评论 -
Kubernetes-蔚来汽车的Kubernetes实践
【编者的话】Kubernetes已经成为当下最火热的一门技术,未来一定也会有更好的发展,围绕着云原生的周边产物也越来越多,使得上云更加便利更加有意义,本文主要讲解一些蔚来汽车从传统应用落地到Kubernetes集群的一些实践经验,提供给大家在落地之前的一些思考和注意点,并且让大家在实施的时候能够有一些借鉴,提供一些使用过程中的注意事项。项目背景Docker诞生于2013年初,随着时间的推移...转载 2019-10-12 13:28:50 · 777 阅读 · 1 评论 -
kubernetes pod 健康监控
最近需要写一个脚本,一次部署所有POD,测试中发现,有部分POD启动后由于连接依赖服务失败,而导致自身不能正常工作,使用kubelet get po 查到的状态也是runing,使用netstat -anp |grep LISTEN ,查询到端口并没有监听。所以想,在app启动异常、并没能启动自身的端口的时候,自动重启一次POD。而k8s已经实现了这个功能,经测试,已经完全解决了我们的问题。以下参...转载 2018-02-26 20:20:08 · 2504 阅读 · 0 评论 -
kubernetes 容器内获取Pod信息(包括:宿主主机IP)
kubernetes 自从1.7开始,可以在pod 的container 内获取pod的spec,metadata 等信息。具体方法可以通过env获取: env: - name: MY_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName ...原创 2018-03-06 21:21:57 · 60590 阅读 · 4 评论 -
kubernetes-sidecar方式日志收集(filebeat->kafka)
version: filebeat:6.2.4容器日志的默认存储方式是:json-file1. docker 所有日志实际存放路径为:/var/lib/docker/containers/ ,日志文件的名称跟k8s的命名方式并没有关联;2. 为了方便管理(使用deployment,container的名称来命名日志),会创建一些links,指向日志实际存储路径 /var/lib/docke...原创 2019-10-10 19:41:32 · 2123 阅读 · 0 评论 -
kubernetes hostNetwork: true 网络
kubernetes hostNetwork: true 网络这是一种直接定义Pod网络的方式。如果在POD中使用hostNetwork:true配置网络,pod中运行的应用程序可以直接看到宿主主机的网络接口,宿主主机所在的局域网上所有网络接口都可以访问到该应用程序。POD定义样例:$ cat nginx.yaml apiVersion: extensions/v1beta1kind: Depl...原创 2018-03-07 11:20:01 · 52304 阅读 · 0 评论 -
helm-模版中的List、loop、map使用方法
样例一、values.yaml:image: repository: nginx tag: 1.7.9 pullPolicy: IfNotPresentenvs: - NET_NAME : "SZ_328" - NET_PORT : "5678"templates/deployment.yamlapiVersion: extensions/v1beta1...原创 2018-03-07 22:58:17 · 11964 阅读 · 0 评论 -
kubernetes-pod分配CPU和RAM资源以及计算方法
例子:Containers: cpu-ram-demo-container: ... image: busybox:latest resources: Limits: cpu: 1 memory: 128Mi Requests: cpu: 250m memory...转载 2018-03-14 21:51:16 · 11746 阅读 · 0 评论 -
Kubernetes 针对资源紧缺处理方式的配置
详细参考:https://www.kubernetes.org.cn/1150.html如何在资源紧缺的情况下,保证 Node 的稳定性,是 Kubelet 需要面对的一个重要的问题。尤其对于内存和磁盘这种不可压缩的资源,紧缺就相当于不稳定。驱逐策略Kubelet 能够监控资源消耗,来防止计算资源被耗尽。一旦出现资源紧缺的迹象,Kubelet 就会主动终止一或多个 Pod 的运行,以回收紧俏资源。...转载 2018-02-28 20:29:47 · 447 阅读 · 0 评论 -
kubernetes secrets 保存敏感信息
kubernetes secrets 是用来保存密码、token、密钥...敏感信息的对象。例如:有时我们在pod中需要连接aws 应用(s3、ddb),一般需要在env设置AWS_ACCESS_KEY_ID、AWS_SECRET_KEY,这时候,我们就可以把aws的key 保存在kubernetes的secrets中,一来可以保证不在image中保存敏感信息、二来多个pod可以共用secrets...原创 2018-04-23 19:45:52 · 1518 阅读 · 0 评论 -
容器数据存储-Portworx试用
容器的数据卷分为:本地存储、共享存储;使用本地数据卷存储,当该卷所在的机器出现故障,严重可导致数据永远丢失。Portworx (px-dev)在各个节点上保存多份备份,可以很好解决上面的问题,并可以把各个服务器上的磁盘充分利用起来组成一个存储池。以下做的实验是:在一个docker swarm上创建一个service并挂载一个数据Volume,模拟一个节点故障(关闭该service所在的服务器电源)...原创 2016-11-08 22:45:49 · 3926 阅读 · 1 评论 -
kubernetes拉取私有仓库image方法
一般公司开发的image一般放在私有仓库,不对外开放。1. 在阿里云创建一个私有镜像库,并构建一个image:registry.cn-shenzhen.aliyuncs.com/koza/test:latest创建阿里云镜像私有仓库和构建image方法参考:https://dev.aliyun.com/2. docker 拉取私有镜像的方法: a. 登陆私有仓库 mac-temp:~ tes...原创 2018-03-02 23:17:26 · 12407 阅读 · 3 评论