EvenChan's Ops.

EvenChan's Ops.

it's better to burn out than to fade away

使用 Docker 加速开发工作流
在开发工作流中使用 Docker 可以极大提高生产力,它消除了"它在我机器上都可以运行"这类典型的错误,在不同的机器上运行也只需要一个 Docker 守护进程,而不需要其他组件。 什么是 DockerDocker 是一个可以运行容器平台,为了运行这些容器,Docker 使用了操作系统级的虚拟化技术,你可以把容器看作是一个轻量级版本的虚拟机。 你在 Docker 平台上运行的所有容器都是相互隔离的。要启动一个容器,你需要一个 Docker 镜像,这个镜像是你的容器的模板,你可以从 Docker Hub 中获取已经预定义的镜像,或者通过编写 Dockerfile 文件来...
如何在不重建镜像的情况下修改容器
现在我们使用容器非常频繁,偶尔有一些需求需要更改容器镜像中的一些行为,也许是一个很小的变化,一般我们能想到的就是重新构建镜像,但是这个我们就需要重新构建发布镜像了,除了构建镜像这种方式之外其实还有其他方式可以来实现这个需求。 初始化容器Init Containers 是为了给 Pod 中定义的主容器提供附加功能的。它们在主容器之前执行,可以使用不同的容器镜像,如果出现任何故障,它们将阻止主容器的启动,所有的日志都可以很容易查看到,故障排除也相当简单,它们就像在 Pod 中定义的任何其他容器一样。这种方法在数据库等服务中比较常用,可以根据配置参数对它们进行初始化和配置。 下面的例子使用一个...
5个维度对 Kubernetes 集群优化
节点配额和内核参数调整对于公有云上的 Kubernetes 集群,规模大了之后很容器碰到配额问题,需要提前在云平台上增大配额。这些需要增大的配额包括: 虚拟机个数 vCPU 个数 内网 IP 地址个数 公网 IP 地址个数 安全组条数 路由表条数 持久化存储大小 参考gce随着node节点的增加master节点的配置: 1-5 nodes: n1-standard-1 6-10 nodes: n1-standard-2 11-100 nodes: n1-standard-4 101-250 nodes: n1-standard-8 251-500 nodes: n1-standar...
Kubernetes 故障解决心得 (一)
故障一故障现象kubelet 启动不了,通过命令 journalctl -u kubelet 查看日志,报 Failed to start ContainerManager failed to initialize top level QOS containers: failed to update top level Burstable QOS cgroup : failed to set supported cgroup subsystems for cgroup [kubepods burstable]: failed to find subsystem mount for req...
根据 Configmap Secret 变化更新 Deployment
这个项目叫做 Reloader,它可以监控 Configmap/Secret 的变化,根据 Annotation 选择 Deployment,对相关 Deployment 进行滚动更新。 部署简单工具的安装还是很简单的: 12kubectl apply -f \https://raw.githubusercontent.com/stakater/Reloader/master/deployments/kubernetes/reloader.yaml 如果无法拉取,可以去我github上拉取相关配置文件Github 首先创建我们要用到的配置对象Configmap(domain_n...
Kubernetes 资源预留配置
Kubernetes 的节点可以按照节点的资源容量进行调度,默认情况下 Pod 能够使用节点全部可用容量。这样就会造成一个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护进程。除非为这些系统守护进程留出资源,否则它们将与 Pod 争夺资源并导致节点资源短缺问题。 当我们在线上使用 Kubernetes 集群的时候,如果没有对节点配置正确的资源预留,我们可以考虑一个场景,由于某个应用无限制的使用节点的 CPU 资源,导致节点上 CPU 使用持续100%运行,而且压榨到了 kubelet 组件的 CPU 使用,这样就会导致 kubelet 和 apiserve...
Kubernetes 临时存储需要限制吗?
临时存储简介Node节点通常还可以具有本地的临时性存储,由本地挂载的可写入设备或者 RAM来提供支持。 临时(Ephemeral) 意味着对所存储的数据不提供长期可用性的保证。 Pods 通常可以使用临时性本地存储来实现缓冲区、保存日志等功能。 kubelet 可以为使用本地临时存储的 Pods 提供这种存储空间,允许后者使用 emptyDir 类型的卷将其挂载到容器中。 kubelet 也使用此类存储来保存节点层面的容器日志, 容器镜像文件、以及运行中容器的可写入层。 临时存储有哪些 本地临时存储(local ephemeral storage) emptyDir 本地临时存储(lo...
打造高效的Kubernetes命令行终端 iTerm2 + kubectl + kubectx + kube-ps1 + oh-my-zsh
本文介绍如何打造一个高效的Kubernetes命令行终端以及Kubernetes命令行操作。 为什么我们要打造高效的Kubernetes命令行终端呢?因为下面的三点原因: Kubernetes作为云原生时代的“操作系统”,熟悉和是用它是每名用户(User)的必备技能。 命令行是最高效,最有“逼格”的操作方式,在喜欢命令的人眼里dashboard不是给开发者和管理员用的。 kubenetes原生提供了kubectl命令就很好用,再通过命令行调用很方便的说啊! 前几天看到dev.to网站里有人讨论Can I see your terminal? 我心想命令行这么“私人“的东西怎么能随便给...
实用的bash自定义脚本
工作越久 越能发现bash 自动化脚本的实用与好处 bash 用得好的话 在提升工作效率方面说“积小流而成江海”也不为过 前置条件所有命令只在 MacOS 系统上测试使用 同时都是写入 ~/.bash_profile 然后 source ~/.bash_profile 进行更新应用(有些也可能是 .bashrc) 为了省事 我直接将开启 编译 bash_profile 的命令成别名 123BASH_PROFILE_PATH="$HOME/.bash_profile"alias bash.open="open ${BASH_PRO...
利用 Loki/Promtail/Grafana 收集分析日志
Loki/Promtail/Grafana vs EFKLoki Stack 包含三个组件: Loki: 相当于 EFK 中的 ElasticSearch,用于存储和查询日志 Promtail: 相当于 EFK 中的 Filebeat/Fluentd,用于采集和发送日志 Grafana: 相当于 EFK 中的 Kibana,用于 UI 展示 使用 Helm 部署 Loki Stack 到 Kubernetes 参考官方文档: https://github.com/grafana/loki/blob/master/docs/installation/h...
avatar
EvenChan
Tomorrow Is Another Day