Kubernetes 是当今容器管理和自动化最流行的选择之一。一个高效的 Kubernetes 设置每天都会生成无数新的指标,这使得监控集群运行状况非常具有挑战性。你可能会发现自己在筛选多个不同的指标时,并没有完全确定哪些是最具洞察力的,并需要给予最大的关注。
本文的目的是解释 Nginx Ingress 控制器的工作原理,特别是 Nginx 模型的构建方式以及我们为何需要这个模型。
驱逐是指派给节点的Pod 被终止的过程。Kubernetes 中最常见的情况之一是Preemption,为了在资源有限的节点中调度新的 Pod,需要终止另一个 Pod 以释放资源。
Kubernetes 是一种开源容器管理工具,可自动执行容器部署、容器扩展、解缩放和容器负载均衡(也称为容器编排工具)。它是用Golang编写的,拥有庞大的社区,因为它最初由Google开发,后来捐赠给CNCF(云原生计算基金会)。Kubernetes 可以将“n”个容器分组到一个逻辑单元中,以便轻松管理和部署它们。它与所有云供应商(即公共云、混合云和本地云供应商)完美配合。
Pod 是 Kubernetes 的基本操作单元,也是应用运行的载体,包含一个或多个密切相关的容器。整个 Kubernetes 系统都是围绕着 Pod 展开的,比如如何运行 Pod、如何保证 Pod 的数量,如何访问 Pod 等。
在Kubernetes集群中,Pod是所有业务类型的基础,它是一个或多个容器的组合。这些容器共享存储、网络和命名空间,以及如何运行的规范。在Pod中,所有容器都被同一安排和调度,并运行在共享的上下文中。对于具体应用而言,Pod是它们的逻辑主机,Pod包含业务相关的多个应用容器。Kubernetes不只是支持Docker容器,它也支持其他容器。Pod 的上下文可以理解成多个linux命名空间的联合:
本文将详细介绍相关技术栈的构成组件,包括 HAProxy、Corosync、Pacemaker、dnsmasq、cloud-init、LVM、Gluster、Docker 等概念。
Kubectl 是 Kubernetes 最重要的命令行工具。在 Flant,我们会在 Wiki 和 Slack 上相互分享 Kubectl 的妙用(其实我们还有个搜索引擎,不过那就是另外一回事了)。多年以来,我们在 kubectl 方面积累了很多技巧,现在想要将其中的部分分享给社区。
Kubernetes 是一款管理容器化应用程序的强大工具。然而,与任何复杂的系统一样,使用它时也可能出错。当问题出现时,掌握有效的故障排除技术和工具非常重要。
作者 | Bilgin Ibryam 译者 | 张卫滨 策划 | 丁晓昀 1 现代分布式应用 我想为这次演讲预先设置一些背景,在这里当我提到分布式系统时,我所指的是由多个组件组成的系统,可能会有数百个这样的组件。这些组件可能是有状态的、无状态的或者是无服务器的。除此之外,这些组件可以使用不同的语言创建,运行在混合环境之中,开发时使用的是开源技术和开发标准,支持互操作性。我相信你也可以使用闭源的软件创造这样的系统,或者在 AWS 和其他的地方创建它们。具体到这次演讲,我会特别关注 Kubern
Kubernetes是Google 2014年创建管理的,是Google 10多年大规模容器管理技术Borg的开源版本。它是容器集群管理系统,是一个开源的平台,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。
YAML是一个可读性高,用来表达数据序列的格式。YAML的意思其实是:仍是一种标记语言,但为了强调这种语言以数据做为中心,而不是以标记语言为重点。
当前,云原生生态已经成为全球各大厂商以及企业尤其是互联网企业技术选型、场景推广的一个重要参考标准。云原生所代表的技术已经逐渐成为大家的共识,从一个虚无缥缈的概念逐渐演化成众多参与者的下一个技术战略储备。自然而言,承载业务需求的应用架构就会提及到微服务生态体系,以及其中最重要的分布式协作模式——“Service Discovery”,即:服务发现。
Kubernetes中的调度器是kube-scheduler,每次我们在创建Pod的时候都是通过kube-scheduler的调度算法将其调度到合适的Node上。
Master组件可以运行于集群中的任何机器上。但是,为了简洁性,通常在同一台机器上运行所有的 master 组件,且不在此机器上运行用户的容器。参考 安装Kubernetes高可用。
我们将通过解释Argo CD是什么以及该平台所基于的底层技术来开始本章,以便我们可以设置基础。我们将解释Argo CD的核心概念,并且在深入了解它之前,我们将通过你需要知道的必要词汇。 然后,我们将描述Argo CD的架构概述和GitOps方面的典型工作流。我们将详细描述每个核心组件及其职责,以便我们能够理解并排除潜在问题。 最后,我们将在本地机器上的Kubernetes集群中安装Argo CD,并尝试使用它部署应用程序,并通过Argo CD观察GitOps阶段。 在本章中,我们将介绍以下主要的主题:
众所周知,Kubernetes很难! 以下是在生产中使用它应遵循的一些最佳实践。遵循这些步骤能够确保更高的安全性和生产效率。
为了跟踪和发现在Kubernetes集群中运行的容器应用出现的问题,常用如下查错方法:
对于Kubernetes资源,有两个重要参数:CPU Request与Memory Request。
Kubernetes由两种节点组成:master节点和工作节点,前者是管理节点,后者是容器运行的节点。其中master节点中主要有3个重要的组件,分别是APIServer,scheduler和controller manager。APIServer组件负责响应用户的管理请求、进行指挥协调等工作;scheduler的作用是将待调度的pod绑定到合适的工作节点上;controller manage提一组控制器的合集,负责控制管理对应的资源,如副本(replication)和工作节点(node)等。工作节点上运行了两个重要组件,分别为kubelet和kube-proxy。前者可以被看作一个管理维护pod运行的agent,后者则负责将service的流量转发到对应的endpoint。在实际生产环境中,不少用户都弃用了kube-proxy,而选择了其他的流量转发组件。
Kubernetes 是一个强大的平台,用于自动化部署、扩展和操作容器中的应用程序。有时,您可能会遇到节点处于非就绪状态(“Not Ready”)。本文将指导您逐步解决这些问题。
以上表格列出了每个Pod的命名空间、名称、状态、重启次数和CPU使用率,按照CPU使用率从低到高进行排序。
Pod 的 status 定义在 PodStatus 对象中,其中有一个 phase 字段。它简单描述了 Pod 在其生命周期的阶段。熟悉Pod的各种状态对我们理解如何设置Pod的调度策略、重启策略是很有必要的。
在DevOps之前,从业人员使用瀑布模型或敏捷开发模型进行软件项目开发:瀑布模型或顺序模型是软件开发生命周期(SDLC)中的一种开创性方法,在这个模型中,软件开发成为一个线性过程,不同的阶段和任务被依次定位;而敏捷开发涉及各种方法的使用和SDLC中多个团队的协作。瀑布模型的线性和敏捷开发的跨功能性无法确保快速、连续地交付无缺陷的软件应用程序。
Kubernetes 正迅速成为在分布式系统中部署工作负载的事实标准。在这篇文章中,我将通过揭示其底层的设计原则,帮助您更深入地了解 Kubernetes。
当我们删除集群中的某个namespace之后,有时候namespace并没有按照我们的期望正常删除,而是一直卡在Terminating状态。本文主要讨论下Terminating状态发生的可能性以及解决办法。
Deployment是 Kubernetes 中用于处理无状态服务的资源,而StatefulSet是用于支持有状态服务的资源,这两种不同的资源从状态的角度对服务进行了划分,而 DaemonSet 从不同的维度解决了集群中的问题 — 如何同时在集群中的所有节点上提供基础服务和守护进程。
一句话,本质是API Server虽然标记了对象的删除,但是作为实际清理的控制器kubelet, 并不能关停Pod或相关资源, 因而没能通知API Server做实际对象的清理。
Kubernetes 又称 k8s,是 Google 在 2014 年开源的一个用来管理容器的平台,以下是 k8s 架构图。
大家好,本篇是个人的第 2 篇文章。是关于在之前项目中,k8s 线上集群中 Node 节点状态变成 NotReady 状态,导致整个 Node 节点中容器停止服务后的问题排查。
Kubernetes,从官方网站上可以看到,它是一个工业级的容器编排平台。Kubernetes 这个单词是希腊语,它的中文翻译是'舵手'或者'飞行员'。在一些常见的资料中也会看到'ks'这个词,也就是'K8s',它是通过将8个字母'ubernete'替换为'8'而导致的一个缩写。
刚开始接触 Kubernetes 那会,从官网下载了一个 nginx Pod 模板文件,通过 kubectl apply 启动后,之后执行 kubectl get pod 展示出了一个处于 running 状态的 pod, 第一个 hello word 就跑起来了,转眼一想,Kubernetes 可是工业级的编排平台,能够保证容器的管理、编排、弹性扩缩容,现在编排运行没什么问题,但没体现出对容器的管理和弹性扩缩容。
现在一切都变成了“Gitops”,所有的工作负载都变成了“无状态”,我还需要 Kubernetes 备份工具吗?我想向您展示,这是一个初学者经常会犯的严重误解......
Pod 是可以在 Kubernetes 中创建和管理的、最小的可部署的计算单元。一个 Pod 有一个或多个容器组成,Pod 中容器共享存储和网络,在同一个 Node 节点上运行。
上篇文章给搭建搭建了企业私有服务,本篇文章给大家介绍下k8s中的 资源清单 本篇文章大部分全都是理论。耐心看完将会刷新你对k8s的认知。
调试Kubernetes应用程序通常是一个痛苦的过程,充满未知和不可预知的副作用。当你的Kubernetes集群没有自我愈合时会发生什么?错误配置的资源限制如何影响应用程序在生产环境中运行?如果不遵循一些基本原则,处理这些问题通常会使调试Kubernetes成为一个非常困难的过程。
在apiserver启动时候会有很多参数来配置启动命令,有些时候不是很明白这些参数具体指的是什么意思。
本文主要分析 kubelet 中的垃圾回收机制,垃圾回收的主要目的是为了节约宿主上的资源,gc controller 的回收机制可以参考以前的文章 garbage collector controller 源码分析。
k8s项目中 pkg/kubelet/envvars,pkg/kubelet/events,pkg/kubelet/eviction,pkg/kubelet/images,pkg/kubelet/kubeletconfig这些目录都是 kubelet 组件的不同功能模块所在的代码目录。
为了避免 Node 的翻译失去原有的意义,本文直接引用 Node,而不是翻译成节点、服务器等。同时,也避免 Bind 的翻译歧义而直接引用,没有翻译为绑定。
当kubernetes对服务滚动更新的期间,默认配置的情况下可能会让部分连接异常(比如连接被拒绝),我们来分析下原因并给出最佳实践
https://kubernetes.io/zh-cn/docs/tasks/access-application-cluster/web-ui-dashboard/
Kubernetes 的名字来自希腊语,意思是“舵手” 或 “领航员”。k8s 是将 8 个字母 “ubernete” 替换为 “8” 的缩写,也就是仅保留了头尾 2 个字母(k 和 s),中间的 8 个字母都去掉了,用 “8” 代替。
领取专属 10元无门槛券
手把手带您无忧上云