草庐IT

一次 K8s 升级,竟然导致滴滴故障 12 小时?

大家好,我是君哥。前段时间滴滴的故障相信大家都知道了。中断业务12小时定级为P0级故障一点都不冤。图片故障回顾网上有传言是运维人员升级k8s时,本来计划是从1.12版本升级到1.20,但是操作失误选错了版本,操作了集群降级到低版本。从下面滴滴技术的博客中也可以看到滴滴的升级方案:图片滴滴为了降低升级成本,选择了原地升级的方式。首先升级master,然后升级node。我们一起看一下k8s官方架构:图片master(官网图中叫CONTROLPLANE)节点由 3个重要的组件组成:cloud-controller-manager:负责容器编排;kube-api-server:为Node节点提供api

滴滴2023.11.27P0级故障技术复盘回顾(k8s的的错?)

本文从滴滴官方恢复及技术公众号带大家从技术角度复盘这次事故目录1.背景2.滴滴官方消息3.问题分析及定位4.网传的k8s及解析5.k8s引发的思考:举一反三,怎么避免再次出现6.近段时间其他平台崩溃回顾1.背景11月27晚约10点,滴滴打车遭遇大范围技术故障。用户在使用滴滴的应用程序及小程序时遇到诸多问题,包括叫车功能反应迟缓、无法使用青桔单车扫码功能,以及领取打车优惠券功能失效。直至第二天早上,滴滴发文已恢复正常。根据微博反馈发现了如下问题:网络加载异常,无法排单;数据紊乱,一个订单被派到4个司机订单中;数据展示、数据状态有误,订单取消、订单支付都出现问题;排单逻辑出错,司机接单到两千公里以

K8s组件:etcd安装、使用及原理(Linux)

K8s组件:etcd安装、使用及原理(Linux)1介绍及安装1.1介绍分布式系统架构中对一致性要求很高,etcd就满足了分布式系统中的一致性要求。实现了分布式一致性键值对存储的中间件,支持跨平台,有活跃的社区。etcd是基于go实现的一个分布式键值对存储(类比Redis),设计用来可靠而快速的保存关键数据并提供访问。通过分布式锁,leader选举和写屏障(writebarriers)来实现可靠的分布式协作。etcd集群是为高可用,持久性数据存储和检索而准备。etcd完整的cluster(集群)至少需要3台,这样才能选出一个master和两个nodeetcd目前占用2379和2380两个端口2

云原生-k8s核心概念(pod,deploy,service,ingress,configmap,volume)

Gitee-k8s学习云原生实战-kubernetes核心实战namespaceNamespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离PodPod可以认为是容器的封装,一个Pod中可以存在一个或者多个容器。Deploymentkubernetes很少直接控制Pod,一般都是通过Pod控制器来完成的。Pod控制器用于pod的管理,确保pod资源符合预期的状态,当pod的资源出现故障时,会尝试进行重启或重建pod。deployment:pod控制器,控制一组标签相同的pod,使Pod拥有多副本,自愈,扩缩容,滚动更新,版本回退

【K8S认证】2023年CKS考题-默认网络策略(解析+答案)

题目:默认网络策略Context一个默认拒绝(default-deny)的NetworkPolicy可避免在未定义任何其他NetworkPolicy的namespace中意外公开Pod。Task为所有类型为 Ingress+Egress 的流量在namespace testing 中创建一个为 denypolicy 的新默认拒绝NetworkPolicy。此新的NetworkPolicy必须拒绝namespace testing 中的所有的 Ingress+Egress 流量。将新创建的默认拒绝NetworkPolicy应用在namespace testing 中运行的所有Pod。你可以在 /

如何校验K8S Yaml文件

Kubernetes已经占据如何管理集容器化应用程序的核心位置。因此,存在许多定义Kubernetes应用程序的约定文件格式,包括YAML、JSON、INI等。这使得我们需要考虑应用程序的最佳策略是什么。此外,我们还必须考虑如何根据所选择的文件结构(特别是安全性)路径来验证应用程序配置。本文,我们将探讨使用YAML文件定义Kubernetes应用程序,以及可以采取的各种步骤来有效地验证这些配置定义。Yaml定义K8s配置与JSON和INI相比,YAML更加紧凑和可读。例如,如果我们要定义一个可以在端口80上可达的pod,那么YAML、JSON和INI中的配置将如下表所示。很明显,YAML简化了

【实战】K8S Helm部署Redis Cluster & Redisinsight

文章目录前言部署RedisCluster安装RedisInsight写在最后前言在Web服务的开发过程中,Redis一直以来都有着举足轻重的作用。基本上所有的后端服务都会用这个中间件实现具体的业务场景,比如常作为系统缓存、分布式锁,也可以实现排名、定位以及发布订阅队列等等。当然,在k8s平台我们也能够部署Redis集群,今天就以Helm快速部署Redis集群。部署RedisCluster一般情况下我们优先采用哨兵模式、cluster模式,这样才能保障高可用。今天作为演示,我们就采用普通的伪集群进行安装测试,当然其他的集群模式也是有helmcharts的。#添加bitnami仓库[root@ma

k8s搭建EFK日志系统

搭建EFK日志系统前面大家介绍了Kubernetes集群中的几种日志收集方案,Kubernetes中比较流行的日志收集解决方案是Elasticsearch、Fluentd和Kibana(EFK)技术栈,也是官方现在比较推荐的一种方案。Elasticsearch 是一个实时的、分布式的可扩展的搜索引擎,允许进行全文、结构化搜索,它通常用于索引和搜索大量日志数据,也可用于搜索许多不同类型的文档。Elasticsearch通常与 Kibana 一起部署,Kibana是Elasticsearch的一个功能强大的数据可视化Dashboard,Kibana允许你通过web界面来浏览Elasticsearc

【Kubernetes】第二十二篇 - k8s 部署 MySQL 服务(secret、deployment、service)

一,前言上一篇,介绍基于k8s项目部署流程设计;本篇,介绍MySQL服务的部署;二,部署MySQL服务部署MySQL可以为指定node添加污点,专门用于mysql部署(当前只有一个节点,不考虑);为了保证mysql容器重启时数据不会丢失:创建mysql数据目录,用于存储mysql数据,实现MySQL数据的持久化;创建Secret对象,向为mysql容器提供用户名、密码信息;创建mysqlDeployment配置文件,并创建deploy完成pod部署;创建mysqlService配置文件,并创建service解决ip漂移问题,对外提供pod访问;为k8s-master安装mysql,使k8s-m

云原生 黑马Kubernetes教程(K8S教程)笔记——第一章 kubernetes介绍——Master集群控制节点、Node工作负载节点、Pod控制单元

参考文章:kubernetes介绍文章目录第一章kubernetes介绍1.1应用部署方式演变传统部署:互联网早期,会直接将应用程序部署在物理机上虚拟化部署:可以在一台物理机上运行多个虚拟机,每个虚拟机都是独立的一个环境(比如VMware虚拟机)容器化部署:与虚拟化类似,但是共享了操作系统(比如docker容器)容器编排问题——引入k8s1.2kubernetes简介主要功能自我修复:一旦某一个容器崩溃,能够在1秒中左右迅速启动新的容器弹性伸缩:可以根据需要,自动对集群中正在运行的容器数量进行调整服务发现:服务可以通过自动发现的形式找到它所依赖的服务负载均衡:如果一个服务起动了多个容器,能够自