EvenChan's Ops.

EvenChan's Ops.

it's better to burn out than to fade away

两个助你高效编写 Kubernetes YAML 文件的神技
  我们在编写 Kubernetes 资源清单的时候可能会经常会忘记要创建的资源名称,即使知道了可能也不记得该资源对象有哪些属性可以使用了,特别是对于那些名称很长的资源或者属性,即使死记硬背下来隔一段时间又会忘记了。   比如现在我们要创建一个 validating 的 admission webhook,我们就需要定义一个 ValidatingWebhookConfiguration 的资源对象,但是可能我们不记得它的全名了。这个时候我们可以使用 kubectl api-resources 命令来找到我们需要的 API 资源。找到了正确的资源名称之后,就需要了解如何编写正确的 YAML...
Prometheus 常用 PromQL 语句
PromQL 是 Prometheus 提供的一个函数式的表达式语言,可以使用户实时地查找和聚合时间序列数据。表达式计算结果可以在图表中展示,也可以在 Prometheus表达式浏览器中以表格形式展示,或者作为数据源,以 HTTP API 的方式提供给外部系统使用。PromQL 虽然以 QL 结尾,但是它不是类似 SQL 的语言,因为在时间序列上执行计算类型时,SQL 语言相对缺乏表达能力。而 PromQL 语言表达能力非常丰富,可以使用标签进行任意聚合,还可以使用标签将不同的标签连接到一起进行算术运算操作。内置了时间和数学等很多函数可以使用。 然而 PromQL 也是大部分使用 ...
K8S故障排查指南-Orphaned pod found, but volume paths are still present on disk
问题产生在使用 Kubernetes 时,有时会遇到 Pod 状态一直处理 Terminating。Pod 一直没有正常退出,一般情况会使用命令 kubectl delete pods pod-name --force --grace-period=0 强制删除。 如果按照上面命令强制删除Pod,有一定概率会报 Orphaned pod found - but volume paths are still present on disk 错误。 问题排查上面错误信息可以通过 journalctl -u kubelet -f 或者 tail -f /var/log/messages 命...
Kubernetes故障排查指南-分析容器退出状态码
问题大家在使用 Kubernetes 时,会遇到创建Pod失败,这时会分析什么原因导致创建Pod失败? Pod status 状态解释 [1] CrashLoopBackOff:容器退出,kubelet正在将它重启 InvalidImageName:无法解析镜像名称 ImageInspectError:无法校验镜像 ErrImageNeverPull:策略禁止拉取镜像 ImagePullBackOff:镜像正在重试拉取 RegistryUnavailable:连接不到镜像中心 ErrImagePull:通用的拉取镜像出错 CreateContainerConfigError:不能创建ku...
Prometheus Operator 常用指标
Prometheus Operator 安装完成后会有很多默认的监控指标,一不注意就大量的报警产生,所以我们非常有必要了解下这些常用的监控指标,有部分指标很有可能对于我们自己的业务可有可无,所以可以适当的进行修改,这里我们就来对常用的几个指标进行简单的说明。 1. Kubernetes 资源相关1.1 CPUThrottlingHigh关于 CPU 的 limit 合理性指标。查出最近5分钟,超过25%的 CPU 执行周期受到限制的容器。表达式: 1sum(increase(container_cpu_cfs_throttled_periods_total{container...
Kubernetes 安全风险以及 29 个最佳实践
目前从各方面来看,Kubernetes 都在容器编排市场中占据了主导地位。近日发布的《Kubernetes 和容器安全状况报告》更是指出,87% 的组织正在使用 Kubernetes 管理容器工作负载。 另外,该报告中有一项调查显示,在过去的 12 个月里,有 94% 的组织在其容器环境中遇到过安全问题,其中 69% 的组织检测到错误配置,27% 的组织在运行时遇到安全事件,还有 24% 的组织发现了严重的安全漏洞。 粗略地说,这些安全问题分别对应着容器生命周期的各个阶段。我们应该在构建阶段修复已知的漏洞;在构建、部署阶段修复错误的配置;在运行阶段对威胁进行快速响应。 本文将深入探讨使用...
根据 PID 获取 K8S Pod名称 - 反之 POD名称 获取 PID
背景随着 Kubernetes 越来越火爆,运维人员排查问题难度越来越大。比如我们收到监控报警,某台 Kubernetes Node 节点负载高。通过 top 或者 pidstat 命令获取 Pid,问题来了,这个 Pid 对应那个 Kubernetes Pod 呢? 下面是作者写的两个小工具,可以帮助运维同胞们快速定位问题。 根据 Pid 获取 K8s Pod 名称脚本工具1234567891011121314151617181920212223$ vim pod_name_info.sh#!/usr/bin/env bashCheck_jq() { which jq ...
Docker网络配置那些事
  使用阿里云ECS搭建 Harbor 服务(docker-compose 部署)遇到网络地址冲突,导致Harbor云主机ECS无法访问其它VPC网段云主机,这是为什么?   使用 docker-compose 部署过Harbor同学都知道,在创建 Harbor 时,默认会创建 5个 网段,见下图。   问题来了,因为使用阿里云 VPC网络,网段为 172.16.0.0/12 ,下面是网络拓扑图。   从上面两张图可以发现,网络地址段有重叠,会导致部署Harbor的云主机无法与其它VPC可用区云主机通信。 Docker 网络驱动介绍 [1]  Docker的网络子系统使用驱动程序是可...
kubernetes最佳实践
实现容器资源调度均衡分配,Request 与 Limit 怎么设置更方便?如何为容器配置 Request 与 Limit,资源调度分配更方便? 这是一个既常见又棘手的问题,这个根据服务类型,需求与场景的不同而不同,没有固定的答案。话说实践出真知,我们结合生产经验总结了系列最佳实践,给努力的开发业务们做个参考。 所有容器都应该设置 requestrequest 的值并不是指给容器实际分配的资源大小,它仅仅是给调度器看的,调度器会 “观察” 每个节点可以用于分配的资源有多少,也知道每个节点已经被分配了多少资源。被分配资源的大小就是节点上所有 Pod 中定义的容器 request 之和,它可以...
avatar
EvenChan
Tomorrow Is Another Day