在开发工作流中使用 Docker 可以极大提高生产力,它消除了"它在我机器上都可以运行"这类典型的错误,在不同的机器上运行也只需要一个 Docker 守护进程,而不需要其他组件。
什么是 DockerDocker 是一个可以运行容器平台,为了运行这些容器,Docker 使用了操作系统级的虚拟化技术,你可以把容器看作是一个轻量级版本的虚拟机。
你在 Docker 平台上运行的所有容器都是相互隔离的。要启动一个容器,你需要一个 Docker 镜像,这个镜像是你的容器的模板,你可以从 Docker Hub 中获取已经预定义的镜像,或者通过编写 Dockerfile 文件来...
现在我们使用容器非常频繁,偶尔有一些需求需要更改容器镜像中的一些行为,也许是一个很小的变化,一般我们能想到的就是重新构建镜像,但是这个我们就需要重新构建发布镜像了,除了构建镜像这种方式之外其实还有其他方式可以来实现这个需求。
初始化容器Init Containers 是为了给 Pod 中定义的主容器提供附加功能的。它们在主容器之前执行,可以使用不同的容器镜像,如果出现任何故障,它们将阻止主容器的启动,所有的日志都可以很容易查看到,故障排除也相当简单,它们就像在 Pod 中定义的任何其他容器一样。这种方法在数据库等服务中比较常用,可以根据配置参数对它们进行初始化和配置。
下面的例子使用一个...
节点配额和内核参数调整对于公有云上的 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...
故障一故障现象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...
这个项目叫做 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 的节点可以按照节点的资源容量进行调度,默认情况下 Pod 能够使用节点全部可用容量。这样就会造成一个问题,因为节点自己通常运行了不少驱动 OS 和 Kubernetes 的系统守护进程。除非为这些系统守护进程留出资源,否则它们将与 Pod 争夺资源并导致节点资源短缺问题。
当我们在线上使用 Kubernetes 集群的时候,如果没有对节点配置正确的资源预留,我们可以考虑一个场景,由于某个应用无限制的使用节点的 CPU 资源,导致节点上 CPU 使用持续100%运行,而且压榨到了 kubelet 组件的 CPU 使用,这样就会导致 kubelet 和 apiserve...
临时存储简介Node节点通常还可以具有本地的临时性存储,由本地挂载的可写入设备或者 RAM来提供支持。 临时(Ephemeral) 意味着对所存储的数据不提供长期可用性的保证。
Pods 通常可以使用临时性本地存储来实现缓冲区、保存日志等功能。 kubelet 可以为使用本地临时存储的 Pods 提供这种存储空间,允许后者使用 emptyDir 类型的卷将其挂载到容器中。
kubelet 也使用此类存储来保存节点层面的容器日志, 容器镜像文件、以及运行中容器的可写入层。
临时存储有哪些
本地临时存储(local ephemeral storage)
emptyDir
本地临时存储(lo...
本文介绍如何打造一个高效的Kubernetes命令行终端以及Kubernetes命令行操作。
为什么我们要打造高效的Kubernetes命令行终端呢?因为下面的三点原因:
Kubernetes作为云原生时代的“操作系统”,熟悉和是用它是每名用户(User)的必备技能。
命令行是最高效,最有“逼格”的操作方式,在喜欢命令的人眼里dashboard不是给开发者和管理员用的。
kubenetes原生提供了kubectl命令就很好用,再通过命令行调用很方便的说啊!
前几天看到dev.to网站里有人讨论Can I see your terminal? 我心想命令行这么“私人“的东西怎么能随便给...
工作越久 越能发现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 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...