微信公众号:运维开发故事,作者:瑞华Dockerfile的语法非常简单,然而如何加快镜像构建速度,如何减少Docker镜像的大小却不是那么直观,需要积累实践经验。这篇文章可以帮助你快速掌握编写Dockerfile的技巧。目标更快的构建速度更小的Docker镜像大小更少的Docker镜像层充分利用镜像缓存增加Dockerfile可读性让Docker容器使用起来更简单总结编写.dockerignore
!! 大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事博客:www.jokerbai.com开始之前Kubernetes 是一个简单且复杂的系统,简单之处在于其整体架构比较简单清晰,是一个标准的 Master-Slave 模式,如下:但是,它又是一个复杂的系统,不论是 Master 还是 Slave,都有多个组件组合而成,如上图所示:Mas
!! 大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事博客:www.jokerbai.com在这篇文章中,我们将在Kubernetes中使用Grafana、Prometheus、Loki、Tempo、OpenTelemetry来搭建可观测性平台。其中Grafana作为操作面板,Prometheus、Loki、Tempo作为数据源,分别用来获
!! 大家好,我是乔克,一个爱折腾的运维工程,一个睡觉都被自己丑醒的云原生爱好者。作者:乔克公众号:运维开发故事博客:www.jokerbai.com没有遇到故障的运维不是合格的运维,没有处理故障的运维不是好运维。做运维这么多年,每天依然提心吊胆,担心突发故障,打破生活节奏。可是,人算不如天算,大部分故障都来源于近乎合理的操作,这次也是一样。起因是要把几百G的数据传输到阿里云的Nas,通过
作者:乔克公众号:运维开发故事博客:www.jokerbai.com我们在《Kubernetes工作负载管理》中主要介绍了无状态应用的管理,当时也有提到有状态应用,但是由于那时候还没有解释数据如何持久化就没有做深度的介绍,而在这章,我们会着重介绍如何进行有状态应用的管理。什么是有状态应用实例之间的不等关系以及实例对外数据有依赖关系的应用,就被称为"有状态应用"。所谓实例之间的不等关系即对分布式应
微信公众号:运维开发故事,作者:乔克不论什么样的应用,基本都有配置文件,在企业中,大部分会用到配置中心,比如apollo、nacos等,也有一些公司直接使用Kubernetes自带的配置管理,主要有:SecretConfigMapSecret如果把配置信息保存在Secret中,其会被加密存放到Etcd中,Pod可以通过以下两种种方式使用它:通过环境变量的方式通过挂载的方式指定拉取镜像的Secret
微信公众号:运维开发故事,作者:乔克在Kubernetes中,如果仅仅是单纯的部署Pod,部署Deployment,并没有任何意义,因为我们最终的目的是要为应用和用户提供服务。在Kubernetes中,提供了Service和Ingress两种对象来实现应用间访问或外部对集群应用访问,这两种对象在实际的工作中会时长使用,非常重要的对象。Service对于kubernetes整个集群来说,Pod的地址
微信公众号:运维开发故事,作者:乔克Kubernetes为了能更好的支持有状态应用的数据存储问题,除了基本的HostPath和EmptyDir提供的数据持久化方案之外,还提供了PV,PVC和StorageClass资源对象来对存储进行管理。PV的全称是Persistent Volume(持久化卷),是对底层数据存储的抽象,PV由管理员创建、维护以及配置,它和底层的数据存储实现方法有关,比如Ceph
微信公众号:运维开发故事,作者:乔克服务质量管理在Kubernetes中,Pod是最小的调度单元,所以跟资源和调度相关的属性都是Pod对象的字段,而其中最重要的就是CPU和内存。如下所示:---apiVersion: v1kind: Podmetadata: name: pod-demospec: containers: - name: myweb image: wordpress
微信公众号:运维开发故事,作者:乔克基本介绍在日常工作中,每个机场都有调度室,用来管理飞机应该从哪里降落,停在什么地方。在Kubernetes也有这样的调度器,主要作用就是将Pod安排到合适的节点上。Kubernetes中的调度器是kube-scheduler,工作流程如下:在集群中所有Node中,根据调度算法挑选出可以运行该Pod的所有Node;在上一步的基础上,再根据调度算法给筛选出的Node
微信公众号:运维开发故事,作者:乔克在Kubernetes中,Pod是最小的管理单元,是一组紧密关联的容器组合。但是,单独的Pod并不能保障总是可用,比如我们创建一个nginx的Pod,因为某些原因,该Pod被意外删除,我们希望其能够自动新建一个同属性的Pod。很遗憾,单纯的Pod并不能满足需求。为此,Kubernetes实现了一系列控制器来管理Pod,使Pod的期望状态和实际状态保持一致。目前常
微信公众号:运维开发故事,作者:乔克Kubernetes 主要通过 API Server 对外提供服务,对于这样的系统来说,如果不加以安全限制,那么可能导致请求被滥用,甚至导致整个集群崩塌。鉴于此,Kubernetes 对于访问 API 的用户提供了相应的安全控制:认证和授权。认证解决用户是谁的问题,授权解决用户能做什么的问题。只有通过合理的权限控制,才能够保证整个集群系统的可靠。下图是 AP
微信公众号:运维开发故事,作者:乔克大家好,我是乔克。Kubernetes作为容器的编排平台,它是以集群的形式为业务提供服务。所以在日常的工作中,作为Kubernetes平台的维护者,会经常对集群进行管理。这里,我将集群管理分为以下几种:安装集群前置说明Kubernetes的集群安装分为:kubeadm安装和二进制安装。在这里,只会介绍kubeadm的安装。安装说明:集群节点:2个IP信息:mas
微信公众号:运维开发故事,作者:夏老师监控 Kubernetes 集群并不容易,告警疲劳通常是一个问题。阅读这篇文章,了解减少告警疲劳的有用提示。如果你是oncall团队的一员,你一定知道什么是警觉性疲劳以及它对你的健康有何影响。而当涉及到Kubernetes时,告警源的数量会迅速飙升。本文将反思一些引起告警疲劳的常见原因,并分享有助于减少它的技巧。什么是告警疲劳?简单来说,当你在一天内收到大量与
微信公众号:运维开发故事,作者:夏老师你可能已经知道Kubernetes是领先的容器编排系统。根据最新的CNCF 研究,可能已经将它用于生产工作负载或在未来一年考虑使用它。2021 年的研究发现,惊人的 96% 的受访者正在使用 Kubernetes 或计划在不久的将来使用它——而 69% 的受访者目前正在生产中使用 Kubernetes。Kubernetes 为大型组织和小型组织提供了许多好处:
微信公众号:运维开发故事,作者:乔克大家好,我是乔克。什么是Kubernetes?在《Docker容器技术》章节就有简单介绍Kuberntes,它是谷歌开源的容器容器集群管理系统,是谷歌内部容器管理系统Borg的开源版本。Borg系统是谷歌内部使用很多的容器管理系统,在早期是采用Chroot Jail实现安全隔离,后期采用Namespace,资源隔离是采用CGroup实现。为什么谷歌要推出Kube
> 微信公众号:运维开发故事,作者:乔克大家好,我是乔克。什么是云原生?我相信大部分人都听过云原生,但是要你说出一个所以然,却不知道怎么开口,我也是一样。我不知道云原生到底是什么,从字面来看:云原生就是为云而生。云是什么?我理解云就是云计算,那云原生就是在云计算的基础之上设计实现,充分利用云的弹性、分布式等特性,让应用能够实现弹性伸缩、动态调度,也能更高的提升资源利用率。发展历程在说云原
微信公众号:运维开发故事,作者:乔克image.png昨天收到一个朋友的信息,说不小心把集群的业务namespace干掉了,导致整个业务都停滞了,问我有没有禁止删除namespace的方案。在我的记忆里,Kubernetes的准入里并没有这个控制器,所以我就给他说需要自己开发一个准入控制器来实现自己的目标。作为人,何为正确!我不能只脱裤子,不放屁。所以这里也整理了一下如何自定义Kubern
作者 | Kevin Sookocheff公众号 | 运维开发故事Kubernetes 是为运行分布式集群而建立的,分布式系统的本质使得网络成为 Kubernetes 的核心和必要组成部分,了解 Kubernetes 网络模型可以使你能够正确运行、监控和排查应用程序故障。网络所涉及的内容很多,拥有许多成熟的技术。对于不熟悉的人来说可能会非常痛苦,因为大多数人对网络都有先入为主的观念,并且有很多新旧
微信公众号:运维开发故事,作者:夏老师 在生产中运行应用程序可能很棘手。这篇文章提出了一个自以为是的清单,用于在 Kubernetes 上使用 Web 服务(即应用程序公开 HTTP API)进入生产环境。一般应用程序的名称、描述、用途和拥有团队被清楚地记录在案(例如通过服务树)定义应用程序的关键级别(例如,如果应用程序对业务非常关键,则为“关键链路程序”)开发团队对k8s技术栈有足够
微信公众号:运维开发故事,作者:wanger本文介绍在国产化操作系统和服务器上进行ceph集群的安装基础配置操作系统使用银河kylin v10,CPU为飞腾处理器S2500[root@node1 ~]# cat /etc/kylin-release Kylin Linux Advanced Server release V10 (Sword)[root@node1 ~]# lscpu架构:
微信公众号:运维开发故事,作者:冬子先生提升资源利用率1.1 资源浪费场景 资源预留普遍存在 50% 以上的浪费Kubernetes 中的 Request(请求) 字段用于管理容器对 CPU 和内存资源预留的机制,保证容器至少可以达到的资源量,该部分资源不能被其他容器抢占,具体可查看(https://kubernetes.io/docs/concepts/configuration
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号